课程设计题目:学生成绩管理系统 班级学号:电信S2009-5-17
姓名:宁思敏
指导老师:刘曼春
日期:2010年12月29号一、系统总体框架
二、功能分析
“学生成绩管理系统”包括九个模块:输入学生资料,输出学生资料,学生姓名按顺序排列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生资料,按姓名查找,修改该学生资料,从文件中读入数据,储存学生资料并退出系统。这九个模块既相互联系又相互。
本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中的数据。
三、类的设计与分析
Student类类图如下
student类说明表如下
名称 属性 说明
num 数据成员 说明学生学号
cla 数据成员 说明学生班级
name 数据成员 说明学生名字
byyl 数据成员 说明学生数据结构成绩 jsjzc 数据成员 说明学生离散数学成绩 sjk 数据成员 说明学生大学物理成绩 jsjyy 数据成员 说明学生大学英语成绩 Jssl 数据成员 说明学生模拟电路成绩
四、功能测试
学生成绩管理系统主菜单页面
输出学生资料模块页面
添加学生资料模块页面
按姓名查找,删除该学生资料模块页面
从文件中读入数据模块页面
储存学生资料并退出系统模块页面
五、源程序代码
#include #include #include #include #include #include using namespace std; typedef class {public: char num[10]; char cla[10]; char name[20]; char byyl[10]; char jsjzc[20]; char sjk[10]; char jsjyy[20]; char jsdl[20];} Student; Student stu[80];int menu() {char c; for(;c<'0'||c>'8';) {system("cls"); cout<<" 欢迎使用本学生成绩管理系统!!"< ****************************** "< c=getchar();} return(c-'0');} int Input(Student stud[],int n) //输入数据。 {int i=0; char sign,x[10]; for(;sign != 'n' && sign != 'N';) {cout< cout< cout< cout< cout< cout< cout< cout< gets(x); cout< cin>>&sign; i++;} return(n+i);} void Display(Student stud[], int n) //输出数据。 {int i; cout< 1].num,stud[i-1].name,stud[i-1].byyl,stud[i-1].jsjzc,stud[i-1].sjk,stud[i-1].jsjyy); if(i>1 && i%10==0) {cout< cout< void Sort(Student stud[],int n) //按名字排序。 {int i,j; char t[20]; for(i=0;i {strcpy(t,stud[j+1].cla); strcpy(stud[j+1].cla,stud[j].cla); strcpy(stud[j].cla,t); strcpy(t,stud[j+1].num); strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name); strcpy(stud[j].name,t); strcpy(t,stud[j+1].byyl); strcpy(stud[j+1].name,stud[j].byyl); strcpy(stud[j].byyl,t); strcpy(t,stud[j+1].jsjzc); strcpy(stud[j+1].name,stud[j].jsjzc); strcpy(stud[j].jsjzc,t); strcpy(t,stud[j+1].sjk); strcpy(stud[j+1].name,stud[j].sjk); strcpy(stud[j].sjk,t); strcpy(t,stud[j+1].jsjyy); strcpy(stud[j+1].name,stud[j].jsjyy); strcpy(stud[j].jsjyy,t); strcpy(t,stud[j+1].jsdl); strcpy(stud[j+1].name,stud[j].jsdl); strcpy(stud[j].jsdl,t);} cout< cout< cout< cout< cout< cout< cout< cout< cout< gets(x); n++; cout< int i=0,j; cin>>s; while(strcmp(stud[i].name,s)!=0&&i {printf("\\\没有发现该学生资料!\\n"); /*返回失败信息*/ return(n);} for(j=i;j strcpy(stud[j].name,stud[j+1].name); strcpy(stud[j].cla,stud[j+1].cla); strcpy(stud[j].byyl,stud[j+1].byyl); strcpy(stud[j].jsjzc,stud[j+1].jsjzc); strcpy(stud[j].sjk,stud[j+1].sjk); strcpy(stud[j].jsjyy,stud[j+1].jsjyy); strcpy(stud[j].jsdl,stud[j+1].jsdl);} cout< {char s[20]; int i=0; cout< while(strcmp(stud[i].name,s)!=0&&i if(i==n) {printf("\\\没有发现该学生资料!\\n"); /*输入失败信息*/ return;} cout< {n=Delete(stud,n); cout< cout< {int i=0,num; FILE *fp; char filename[20]; cout< if((fp=fopen(filename,"rb"))==NULL) {cout< return(n);} fscanf(fp,"%d for(;i i++;} n+=num; fclose(fp); cout< return(n); void WritetoText(Student stud[],int n) //将所有记录写入文件。 {int i=0; FILE *fp; char filename[20]; cout< if((fp=fopen(filename,"w"))==NULL) {cout< return;} fprintf(fp,"%d\\n for(;i 5s\\n i++;} fclose(fp);cout< cout< if(b==0) {cout< exit(0);}} void main() //主函数调用。 {int n=0; for(;;) {switch(menu()) {case 1: cout< break; case 2: cout< case 3: cout< cout< break; case 4: cout< cout< break; case 5: cout< cout< case 6: cout< cout< break; case 7: cout< system("pause"); break; case 8: cout< break; case 0: cout< cout< break;}}} 六、使用手册 (1)用户进入系统后,就会看到学生管理系统的主菜单页面。系统总共有九个模块,分别由0到8表示,在主菜单页面只能输入数字0到8,输入其他字符无效,如果用户输入无效字符,系统仍停留在主菜单页面。 (2)进入到主菜单页面后,用户可以根据自己的需求选择不同的选项,选择后系统就会进入子系统页面,然后用户按系统的提示操作就行了。