1、学生成绩管理系统综合程序设计 综合程序设计实验16 实验学时1. 2学时 2.实验目的 (1)熟练掌握函数的定义和使用; (2)熟练掌握结构体类型数据的概念和使用; 3)熟练掌握文件的操作方式以及常用函数;( 4)掌握用模块化分析与设计方法解决实际问题。( 实验设备3.Eclipse+minGW 计算机,配置 PCWin7操作系统,Word2010, 4.实验内容及步骤设计一个学生成绩管理系统,实现添加记录、显示记录、修改记录、删除记 录、查找记录、排序记录及退出系统等功能。 学生成绩管理系统 菜单 选择 退查排删添显修 出加示改除序找 系记记记记记记 录录 录 录 统录录 图16-1 4.1
2、需求分析 根据题目要求,学生管理系统需要实现添加记录、显示记录、修改记录、删除记录、查找记录、排序记录及退出系统等7项功能。图16-1显示学生成绩管理系统的所有需实现的功能模块及彼此之间的关联关系,该图的每一个功能都会对应一个界面。该系统首先会向用户展现一个菜单选择界面,用户可以根据菜单界面的提示,选择不同功能进入子界面。 4.1.1添加记录 本功能用于添加学生的信息,当用户在功能菜单中选择数字1时,会进入添加记录模块,提示用户输入学生的学号、姓名、数学成绩、语文成绩。当用户输入完毕后,会提示用户是否继续添加,Y表示继续,N表示返回。需要注意:在添加学号时不能重复,如果输入重复的学号就会提示此
3、学号存在。 4.1.2显示记录 本功能用于显示已存入的学生信息,当用户在功能菜单中选择数字2时,会进入显示记录模块,并向控制台输出录入的所有学生的学号、姓名、数学成绩、语文成绩和成绩总和。 4.1.3修改记录 本功能用于修改学生信息,当用户在功能菜单中选择数字3时,会进入修改记录模块。输入要修改的学生姓名,当用户输入了已录入的学生姓名后,如果学生信息存在即可修改除学号以外的其他信息,否则输出该学生不存在。 4.1.4删除记录 本功能用于删除已录入的学生信息,当用户在功能菜单中选择数字4时,会进入删除记录模块。对学生学号 进行判断,如果学号存在即可删除该生的所有信息,否则输出没有找到该生的记录。
4、 4.1.5查找记录 本功能用于查找某个学生信息,当用户在功能菜单中选择数字5时,会进入查找记录模块。在该模块中输入查找的学生姓名,如果该学生存在则输出该生的全部信息,否则输出没找到该生的记录。 4.1.6排序记录 本功能用于对总成绩进行排序,当用户在功能菜单中选择数字6时,会进入排序记录模块。该模块会输出所有学生的信息,并按总成绩由高到低进行排序。 4.1.7退出系统 本功能用于退出系统,当用户在功能菜单中选择数字0时,即可退出系统。 4.2数据设计 根据系统分析,需要确定项目中的数据。由于学生成绩管理系统中多次涉及学生信息及其成绩信息的操作,因此根据学生成绩管理系统的需求,设计学生的数据如
5、表16-1所示 表16-1 学生数据 功能描述 变量声明int id 存储学生学号 char name8 学生姓名 int chinese 语文成绩 int math 数学成绩 int sum 总成绩 由于学生的数据各不相同,为便于统一管理,可以使用结构体类型来声明。 在项目开发时,除根据需求对项目中的数据进行设计外,还需要规划项目中需要定义的函数。表16-2描述了本项目所需的函数及其功能描述 表16-2功能函数 函数声明 功能描述 void menu() 显示功能菜单 void add(struct student stu) 添加学生信息 void show(struct student s
6、tu,int i) 显示某个学生信息 void showAll(struct student stu) 显示所有学生信息 void modify(struct student stu) 修改某个学生信息 void del(struct student stu) 删除某个学生信息 void search(struct student stu) 查询某个学生信息 void sort(struct student stu) 对学生成绩进行排序 至此,项目的分析与初步设计已完成,后面就是需要对每一部分用程序进行实现,请同学们完成。 实验源程序如下:-_- 综合程序设计: /* * student.c
7、* * Created on: 2015年12月29日 * Author: PC */ #includestudent.h void menu() system(cls); printf(); setvbuf(stdout,NULL,_IONBF,0); printf( t-学生成绩管理系统-n); printf( t|tt 1 添加记录 |n); printf( t|tt 2显 录 示记 |n); printf( t|tt 3 修 录 改记 |n); 删printf( t|tt 4 录 除记 |n); 5 printf( t|tt 查 录 找记 |n); 排printf( t|tt 6 录记
8、序 |n); 退0 printf( t|tt 统系出|n); printf(-n); (0-6): ); printf( t请选择 void add(struct student stu) int i,id=0; char quit; do 牰湩晴尨学号 :); scanf(%d,&id); for(i=0;in;i+) if(id=stui.id) 牰湩晴尨此学号已存在! n); return; stui.id=id; 牰湩晴尨请输入姓名: ); scanf(%s,stui.name); 牰湩晴尨请输入语文成绩: ); scanf(%d,&stui.chinese); 牰湩晴尨请输入数学成绩
9、 : ); scanf(%d,&stui.math); stui.sum=stui.chinese + stui.math; n+; 牰湩晴尨是否继续添加?(Y/N)?); scanf( %c,&quit); while(quit!=n & quit != N); void show(struct student stu,int i) printf(%-10d,stui.id); printf(%-10s,stui.name); printf(%-10d,stui.chinese); printf(%-10d,stui.math); printf(%-10d,stui.sum); void s
10、howall(struct student stu) int i; HH; for(i=0;in;i+) show(stu,i); printf(); void modify(struct student stu) char name8,ch; int i; 牰湩晴尨修改学生记录n); 牰湩晴尨请输入学生的姓名: ); scanf(%s,name); for(i=1;in;i+) if(strcmp(stui.name,name)=0) getchar(); 牰湩晴尨找到学生的记录,如下所示: ); HH; show(stu,i); 牰湩晴尨是否修改?(Y/N)?); scanf(%c,&ch
11、); if(ch=y | ch=Y) getchar(); 牰湩晴尨请输入姓名: ); scanf(%s,stui.name); 牰湩晴尨请输入语文成绩: ); scanf(%d,&stui.chinese); 牰湩晴尨请输入数学成绩: ); scanf(%d,&stui.math); stui.sum = stui.chinese + stui.math; 牰湩晴尨修改完毕n); return; 牰湩晴尨没找到该学生的记录n); void del(struct student stu) int id,i; char ch; 牰湩晴尨删除学生的记录n); 牰湩晴尨请输入学号: ); scanf
12、(%d,&id); for(i=0;in;i+) if(id=stui.id) getchar(); 牰湩晴尨找到学生的记录,如下所示: n); HH; show(stu,i); 牰湩晴尨是否删除?(Y/N)?n); scanf(%c,&ch); if(ch=y | ch=Y) for(;in;i+) stui=stui+1; n-; 牰湩晴尨删除成功); return; void search(struct student stu) char name 8; int i; 牰湩晴尨查找学生的记录n); 牰湩晴尨请输入学生的姓名: ); scanf(%s,name); for(i=0;in;i
13、+) if(strcmp(name,stui.name)=0) 牰湩晴尨找到学生的记录,如下所示: ); HH; show(stu,i); return; void sort(struct student stu) int i,j; struct student t; 牰湩晴尨按学生成绩进行排序n); for(i=0;in-1;i+) for(j=i+1;jn;j+) if(stui.sum stuj.sum) t=stui; stui=stuj; stuj=t; 牰湩晴尨排序的结果如下: n); showall(stu); /* * stumanagement.c * * Created o
14、n: 2015年12月29日 * Author: PC */ #include #includestudent.h int main() struct student stu50; int select,quit=0; while(1) menu(); scanf(%d,&select); switch(select) case 1: add(stu); break; case 2: showall(stu); break; case 3: modify(stu); break; case 4: del(stu); break; case 5: search(stu); break; case
15、 6: sort(stu); break; case 0: quit=1; break; default: 牰湩晴尨请输入0-6之间的数字); break; if(quit=1) break; 牰湩晴尨按任意键返回主菜单 !n); getchar(); getchar(); 牰湩晴尨 程序结束!n); return 0; /* * student.h * * Created on: 2015年12月29日 * Author: PC */ #ifndef STUDENT_H_ #define STUDENT_H_ #include #include #include 搣晥湩?瀠楲瑮?猰?猰?猰屜
16、屮尬学号?姓名?语文?数学?总分); struct student int id; char name8; int chinese; int math; int sum; ; static int n; void menu(); void add(struct student stu); void show(struct student stu,int i); void showall(struct student stu); void modify(struct student stu); void del(struct student stu); void search(struct student stu); void sort(struct student stu); #endif /* STUDENT_H_ */