2-3文件+结构体实现实用系统
来源:互联网 发布:圣斗士观看顺序 知乎 编辑:程序博客网 时间:2024/05/22 13:44
/** 作 者: 霍雨佳* 完成日期:2014 年3月6日* 版 本 号:v1.0* 问题描述:利用结构体数组等知识对学生的成绩进行统计。* 样例输入:略* 样例输出:略* 问题分析:(1)从文件中读出数据,存放到结构体数据中。 (2)求出每名同学的总分(可以在读入过程中顺便计算) (3)输出结构体数组中所有同学的记录。 (4)按总分排序(降序); (5)输出排序后的成绩单; (6)有30名同学可以获得奖学金,规则是总分高者优先,有挂科者不得奖学金,请输出可以的奖学金的同学的名单*/#include <iostream>#include <cstdlib>//调用 exit(1)需要包含cstdlib#include <fstream>//操作文件必写#include <iomanip>using namespace std;struct Student{ char num[13]; //学号 char name[10]; int cpp; int math; int english; int grade; //总成绩 double average;//均值};void output(Student s [],int n);//输出所有同学的记录void sort(Student s [],int n);//按总分排序(降序)void put(Student s [],int n);//输出排序后的成绩单void out(Student s [],int n);//输出得奖学金同学名单int main(){ int i; Student stu[1500]; int stuNum=0; //从文件中读取数据,存放到定义的结构体数组中 ifstream infile("score.txt",ios::in);//以输入方式打开文件 if(!infile)//测试是否成功打开 { cerr<<"open error!"<<endl; exit(1); } i=0; while(infile>>stu[i].num>>stu[i].name>>stu[i].cpp>>stu[i].math>>stu[i].english) { stu[i].grade=stu[i].cpp+stu[i].math+stu[i].english;//计算总成绩 ++stuNum; ++i; } infile.close(); output(stu,stuNum); sort(stu,stuNum); cout<<"按总分排序后的名单为:"<<endl; put(stu,stuNum); cout<<"获得奖学金的同学有:"<<endl; out(stu,stuNum); return 0;}void output(Student s[],int n)//输出所有同学的记录{ int j; cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"C++"<<setw(13)<<"高数"<<setw(13)<<"英语"<<setw(13)<<"总分"<<endl; for(j=0; j<n; j++) { cout<<setw(13)<<s[j].num<<setw(13)<<s[j].name<<setw(13)<<s[j].cpp<<setw(13)<<s[j].math<<setw(13)<<s[j].english<<setw(13)<<s[j].grade<<endl; }}void sort(Student s[],int n)//按总分排序(降序){ int j,i; Student m; for(j=0; j<n-1; j++) //冒泡排序法 { for(i=0; i<n-1-j; i++) { if(s[i].grade<s[i+1].grade) { m=s[i]; s[i]=s[i+1]; s[i+1]=m; } } }}void put(Student s[],int n) //输出排序后成绩单{ int j; cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"C++"<<setw(13)<<"高数"<<setw(13)<<"英语"<<setw(13)<<"总分"<<endl; for(j=0; j<n; j++) { cout<<setw(13)<<s[j].num<<setw(13)<<s[j].name<<setw(13)<<s[j].cpp<<setw(13)<<s[j].math<<setw(13)<<s[j].english<<setw(13)<<s[j].grade<<endl; }}void out(Student s [],int n)//输出得奖学金同学名单{ int i; for(i=0;i<30;) { if(s[i].cpp>=60&&s[i].math>=60&&s[i].english>=60) { cout<<setw(13)<<s[i].num<<setw(13)<<s[i].name<<setw(13)<<s[i].cpp<<setw(13)<<s[i].math<<setw(13)<<s[i].english<<setw(13)<<s[i].grade<<endl; i++; } }}
运行结果:
丫丫,做好了
开始运行结果直接看不懂,乱七八糟的,一点一点终于调好了,对于文件的应用不熟练
加油加油~~~
0 0
- 2-3文件+结构体实现实用系统
- 文件+结构体实现实用系统+拓展()
- 第三周项目3-文件+结构体实现实用系统
- C++ 项目3 文件加结构体实现实用系统
- 2-文件+结构体实现实用系统(拓展)
- 【结构体】项目三。文件+结构体实现实用系统
- C++第2周(春)项目3 文件+结构体实现实用系统
- 第二周项目3-文件+结构体实现实用函数
- 第二周上机实践项目——文件+结构体实现实用系统
- 第二周项目三-文件+结构体实用系统
- 第二周(项目三)——文件+结构体实现实用系统。<总是不对,求大神指点迷津!!>
- 第二学期第二周项目3--文件+结构体实用实现
- 02周:项目三:文件加结构体实现系统
- 第二周——文件+结构体实现使用系统
- 第2周项目3文件+结构体实现应用
- 文件读写操作+动态内存分配+结构体指针+函数指针数组实现通讯录系统
- Android系统文件结构
- Windows系统文件结构
- iPhone开发各种图标大小
- 使用DBCC SHRINKFILE EMPTYFILE 选项迁移数据
- Web负载均衡
- Bounce Castle组件配置
- hdu2113 Secret Number
- 2-3文件+结构体实现实用系统
- [Blog Read] Android 事件分发
- 基于lucene创建实时索引基础jar包
- 背景建模
- WPF在XAML中Binding使用StringFormat属性
- leetcode Length of Last Word java实现
- jQuery 获取跨域XML(RSS)数据相关总结
- Linux-Shell之前基础
- MyEclipse中如何设置 jdk 和 jre 编译运行环境