1、 XXXX 大学 C 语言进阶与试题剖析课程 综合设计课程报告 课题名称: 微型学生成绩管理系统 二级学院: XXX 学院 学生姓名: XXX 学 号: XXX 主讲教师: XX 20201111 年年 6 6 月月 1 1 日日 - 1 - 一、一、提出问题提出问题 设某班有 n 位同学,每位同学的数据包括以下内容:学号(字符串) 、 姓名(字符串) 、数学成绩(字符串) 、程序设计成绩(字符串) 。设 计程序完成以下五项功能:新建数据档案、添加数据、删除数据、对 输入的数据进行排序和查询。 注: 采用模块化程序设计思想对系统进行设计; 学生的数据要求用文件保存; 学生的学号作为关键字段,不
2、能相同,姓名可以相同。 要求使用结构体,链或数组等实现。 二、二、分析问题分析问题 最初我们要对文件名进行规定,主要包括数据库文件、数学成绩 排序文件、 程序设计成绩排序文件。 其次在程序偏斜忠要应用结构体、 采取全局变量用来记录学生的学号、姓名、数学成绩、程序设计成绩 以及总分等。 然后我们要明确课题中的要求: (一)程序运行时,首先显示主菜单如下 1.新建数据 2.添加数据 3.删除数据 4.排序 5.查询 6、退出 (二)在主菜单中选择序号 4,弹出子菜单选择排序方式 1数学成绩排序 2程序设计成绩排序 3总分排序 4返回主菜单 - 2 - (三)在主菜单中选择序号 5,弹出子菜单选择查
3、询方式 1学号查询 2姓名查询 3数学成绩查询 4程序设计成绩查询 5总分查询 6返回主菜单 三、解决问题 (一)数据结构 学号:char xh() 姓名: char xm() 数学成绩:int sxcj 程序设计成绩 int cxcj() 总分 int zf 全局变量 int t (二)算法描述 1.在主函数中,我们只需做 6 个部分(1 新建学生数据、2 添加学生 数据、3 删除学生信息、4 对分数进行排序包括数学成绩,程序设计 成绩,总成绩、5 对某一个学生的信息进行查询 6 退出这个学生查询 系统)建立人机对话框,根据用户所选的模块进行相应的操纵,调用 相应的子函数,完成想用的功能。
4、2.新建学生信息函数。学生信息包括学生学号、学生姓名、学生数学 成绩、学生程序设计成绩、总成绩以及显示函数 3.删除学生信息。 由于学号是关键字, 我们应首先根据学号比较出是 否有这个学生信息的存在,如果不存在就不处理,如果存在,就删除 信息 4.排序函数这里有三个需要排序的数据,分别任数学成绩, 程序设计 成绩以及总成绩。只是我们需要设计一个界面。根据用户的选择选用 不同的模块进行排序。 5.查找函数。主要是根据不同的分数查找出不同的人数, 如对于数学 - 3 - 成绩查询,输入某一分数,然后逐一遍历原有的数据,查找出相同的 就输出。其他的两个也一样。 (三)源程序 #include #in
5、clude struct student char xh12; /*学号*/ char xm12; /*姓名*/ int sxcj; /*数学成绩*/ int cxcj; /*程序设计成绩*/ int zf; /*总分*/ stu60; int t; /全局变量 void main() int n; void creat_data(); void add(); void delet(); void sort_stu(); void search(); do printf(“ttt 主菜单n“); printf(“tn“ ); printf(“ttt1.新建数据n“) ; printf(“ttt2.添加数据n“); printf(“ttt3.删除数据n“); printf(“ttt4.排序n“); printf(“ttt5.查询n“); printf(“ttt6.退出n“); printf(“tn“ ); printf(“请输入序号选择相应操作:“); scanf(“%d“, switch(n) - 4 - case 1:creat_data();break; case 2:add();break; case 3:delet();break; case 4:sort_stu();break; case 5:s