/*
* 作    者: 霍雨佳
* 完成日期: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++;
}
}
}

运行结果:

丫丫,做好了

开始运行结果直接看不懂,乱七八糟的,一点一点终于调好了,对于文件的应用不熟练

加油加油~~~

2-3文件+结构体实现实用系统相关推荐

  1. 2-文件+结构体实现实用系统(拓展)

    /* * 作 者: 霍雨佳 * 完成日期:2014 年3月6日 * 版 本 号:v1.0 * 问题描述:利用结构体数组等知识对学生的成绩进行统计. * 样例输入:略 * 样例输出:略 * 问题分析: ...

  2. 基于C++结构体的通讯录系统

    基于C++结构体的通讯录系统 说明 该程序系统并不完美,存在一定的缺陷,仅供初学者参考,不论是功能上,还是界面上,读者可自行修改,创新. 核心代码块即功能展示 1.添加联系人功能 //添加联系人 vo ...

  3. 在linux c 以结构体形式写文件 结构体参数如何在函数中传递,Linux安全审计机制模块实现分析(16)-核心文件之三auditsc.c文件描述及具体变量、函数定义...

    原标题:Linux安全审计机制模块实现分析(16)-核心文件之三auditsc.c文件描述及具体变量.函数定义 2.4.3文件三auditsc.c2.4.3.1 文件描述 kernel/auditsc ...

  4. c语言链表成绩管理系统排序,【C项目】 文件,结构体,链表,排序, 学生信息管理系统...

    1.密码登录: 2.通过键盘输入学生信息,包括学生学号.姓名.成绩: 3.将输入的信息保存到指定文件中: 4.从文件中读取学生信息: 5.显示全部学生信息: 6.按学生总分进行降序排序: 7.删除学生 ...

  5. 学生考勤日期链表排序c语言,【C项目】 文件,结构体,链表,排序, 学生信息管理系统(示例代码)...

    1.密码登录: 2.通过键盘输入学生信息,包括学生学号.姓名.成绩: 3.将输入的信息保存到指定文件中: 4.从文件中读取学生信息: 5.显示全部学生信息: 6.按学生总分进行降序排序: 7.删除学生 ...

  6. OS / Linux / 文件描述符以及 file 结构体

    零.前言 程序可以理解为硬盘上的普通二进制文件:进程是加载到内存中的二进制文件,除了加载到内存中的二进制文件外,还附有所有对于该二进制文件描述信息的结构体,描述该进程的结构体叫PCB(进程控制块),在 ...

  7. c语言record的作用,C语言基础 record 2-指针,结构体,链表,文件的输入输出

    指针: 1.指针的概念: 内存区的每一个字节有一个编号,这就是 '地址',由于通过地址能找到所需的变量单元,而地址指向该变量单元,所以将地址形象化称为 '指针'.C/C++中是可多继承的指针,而Jav ...

  8. linux文件编程(3)—— main函数传参、myCp(配置成环境变量)、修改配置文件、整数和结构体数组写到文件

    参考:linux文件编程(3)-- 文件编程的简单应用:myCp.修改配置文件 作者:丶PURSUING 发布时间: 2021-04-09 23:45:05 网址:https://blog.csdn. ...

  9. Windows API的时间结构体、时间转换及时间获取

    Windows API的时间结构体.时间转换及时间获取   时间格式:DosDateTime <====>FileTime <====> SystemTime |        ...

最新文章

  1. java exif_照片EXIF信息的读取和改写的JAVA实现
  2. 关于Unity -Vuforia -Android 开发 ,平台的搭建(极品菜鸟完整版)
  3. em算法python代码_EM 算法求解高斯混合模型python实现
  4. 反编译android的apk
  5. 第八天2017/04/17(2、❤String类的源代码)
  6. jni java共享变量_Android JNI开发系列(十)JNI访问 Java 实例变量和静态变量
  7. 前后端传递时间参数偶遇参数类型转换异常
  8. Java动态代理深入解析
  9. 2021中国餐饮营销力白皮书
  10. 一般试卷的纸张大小是多少_国际A4纸尺寸大小是多少?标准A4纸像素分辨率换算方法...
  11. java动画迷宫寻路_[人工智能] 迷宫生成、寻路及可视化动画
  12. java小学毕业学的会吗_Java的一些概念
  13. 安装多个mysql实例(debian版本)
  14. (2017转)文本自动生成研究进展与趋势
  15. 三进制计算机可以实现吗,制造三进制计算机的一种方法技术
  16. dede config.chche.inc.php,dedecms 后台修改系统设置,但是config.cache.inc.php文件不能写入...
  17. SSL-ZYC NOIP
  18. 厦门大学计算机科学专业,2018厦门大学计算机科学系考研招生信息汇总
  19. Visual Studio Code (echarts)数据可视化,设置数据缩放区间为20到40,设置标题字体大小,颜色以及是否加粗,设置柱状图颜色
  20. git clone 修改配置 设置代理 加速

热门文章

  1. 三星服务器内存条型号区分,三星内存条怎么样看型号(揭晓三星内存条查看技巧及报价)...
  2. oracle10g数据库复制,Oracle10g中Duplicate复制数据库
  3. (1.5.1.3)编程之美:一摞烙饼的排序
  4. ad中电容用什么封装_何为无极性电容?是干什么用的?
  5. php隐藏后门,php后门隐藏技巧
  6. OceanBase | OBCA认证考试
  7. [踩坑篇]logrotate切割日志后,日志还是写在老日志文件中
  8. 关于mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止问题
  9. DOL魔盘存储网络管理系统试用心得(转)
  10. WebPagetest H5性能测试工具入门详解