学生成绩信息管理系统.docx
- 文档编号:30690906
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:23
- 大小:195.66KB
学生成绩信息管理系统.docx
《学生成绩信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩信息管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
学生成绩信息管理系统
东莞理工学院
《C语言程序设计》课程设计
题目:
学生信息管理
院系:
电子工程学院
专业:
光信息科学与技术
年级:
2008
班别:
2班
组别:
四
指导教师:
冯能山
同组成员:
凌大昌、张志坤、何金海、梁宗森、容金龙
目录
1、系统要求…………………………………………………………………………………3
2、功能模块…………………………………………………………………………………4
3、数据库设计………………………………………………………………………………5
4、小组成员任务分配情况…………………………………………………………………6
5、程序代码清单……………………………………………………………………………7
6、功能页面的运行结果及功能说明………………………………………………………15
7、总结………………………………………………………………………………………20
1、系统功能描述
设计学生的成绩信息管理系统,功能及数据如下:
1)能够对学生的成绩信息进行管理,包括:
●成绩信息录入
●成绩信息排序
●成绩信息插入
●成绩信息删除
●成绩信息查询
●成绩信息修改
●成绩信息统计
●从文件添加成绩信息
●保存成绩信息
2)能够使用该系统进行学生成绩信息管理,包括:
●学生成绩登记
●学生成绩修改
●学生成绩删除
●学生信息保存管理
这些功能属于老师使用。
3)能够对学生自己进行
●成绩查询
●成绩统计查看
这些功能属于学生使用。
2、功能模块划分
本系统包括如下几个功能模块,功能模块结构如图所示。
1)基本信息登记模块
●学生学号
●学生姓名
●英语成绩
●数学成绩
●计算机成绩
2)信息显示功能模块
●学生信息显示
3)信息插入模块
●学生信息插入
4)信息删除模块
●学生信息删除
5)信息查询模块
●学生信息查询
6)信息修改模块
●学生成绩信息
7)信息统计模块
●学生成绩最高分、最低分统计
8)信息读入和保存模块
●从外部读入数据
●对数据进行保存
3、数据结构说明
(数据文件名:
stu_imformation..txt)
本系统的数据结构主要用于对学生成绩信息数据的描述,包括以下的字段:
。
序号
字段名
数据类型
宽度
说明
1
学号
字符
10
顺序编号
2
姓名
字符
20
非空,如:
李明
3
英语成绩
整型
32
非空,如:
85
4
数学成绩
整型
32
非空,如:
85
5
计算机成绩
整型
32
非空,如:
85
6
总成绩
整型
32
非空,如:
255
4、小组成员任务分配情况
序号
姓名
分配的任务
编写的程序文件
任务完成情况
备注
1
何金海
主函数、数据修改、数据删除模块
文档的编写
main()/*主函数*/
Update_a_record()/*修改*/
Delete_a_record()/*删除*/
很好
组长
2
凌大昌
数据菜单、录入、插入模块
menu_select()/*菜单*/
Input()/*录入*/
Insert_a_record()/*插入*/
很好
3
张志坤
数据排序、统计模块
Sort_by_num()/*排序*/
Statistic()/*统计*/
很好
4
梁宗森
数据查找、显示模块
Query_a_record()/*查找*/
Display()/*显示*/
很好
5
容金龙
数据读入、保存模块
AddfroAddfromText()/*读入*/
WritetoText()/*保存*/
很好
5、程序代码清单
组员一(姓名:
何金海)的程序清单:
1)主函数程序
voidmain()/*主函数*/{
intn=0;
for(;;){
switch(menu_select())/*选择判断*/{
case1:
printf("\t\t\t请是输入学生信息\n\n");n=Input(stu,n);break;
case2:
printf("\t\t\t显示所有学生信息\n\n");Sort_by_num(stu,n);Display(stu,n);break;
case3:
printf("\t\t\t请插入学生信息\n\n");n=Insert_a_record(stu,n);printf("\t\t\t");system("pause");break;
case4:
printf("\t\t\t删除学生信息\n\n");n=Delete_a_record(stu,n);printf("\t\t\t");system("pause");break;
case5:
printf("\t\t\t查询学生信息\n\n");Query_a_record(stu,n);printf("\t\t\t");system("pause");break;
case6:
printf("\t\t\t修改学生信息\n\n");Update_a_record(stu,n);printf("\t\t\t");system("pause");break;
case7:
printf("\t\t\t统计学生信息\n\n");Statistic(stu,n);/*新增功能,输出统计信息*/
printf("\t\t\t");system("pause");break;
case8:
printf("\t\t\t从文件中添加信息\n\n");n=AddfromText(stu,n);/*新增功能,输出统计信息*/break;
case9:
printf("\t\t\t保存学生信息\n\n");WritetoText(stu,n);printf("\t\t\t");system("pause");break;
case0:
printf("\t\t\t欢迎再次使用!
\n\n");/*结束程序*/printf("\t\t\t");system("pause");exit(0);
}}}
2)数据修改模块程序
voidUpdate_a_record(Studentstud[],intn)/*修改一个记录*/{
chars[20];inti=0;
printf("\t\t\t你要修改的学生名字是:
");scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!
=0&&i if(i==n) {printf("\t\t\t很抱歉,没有此人! \n");/*输入失败信息*/ return; } printf("\t\t\t修改的学生学号: ");scanf("\t\t\t%s",stud[i].num); printf("\t\t\t修改的英语成绩: ");scanf("\t\t\t%d",&stud[i].eng); printf("\t\t\t修改的数学成绩: ");scanf("\t\t\t%d",&stud[i].mat); printf("\t\t\t修改的计算机成绩: ");scanf("\t\t\t%d",&stud[i].com); stud[i].sum=stud[i].eng+stud[i].mat+stud[i].com; Sort_by_num(stud,n);/*调用排序函数*/ printf("修改成功! "); } 3)数据删除模块程序 intDelete_a_record(Studentstud[],intn)/*按姓名查找,删除一条记录*/{ chars[20];inti=0,j; printf("\t\t\t你要删除的学生名字是: ");scanf("%s",s); while(strcmp(stud[i].name,s)! =0&&i if(i==n) {printf("\t\t\t很抱歉,没有此人! \n");/*返回失败信息*/ return(n); } for(j=i;j strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j].name,stud[j+1].name); stud[j].eng=stud[j+1].eng;stud[j].mat=stud[j+1].mat;stud[j].com=stud[j+1].com; stud[j].sum=stud[j+1].sum; } printf("\t\t\t删除成功! \n");return(n-1); } 组员二(姓名: 凌大昌)的程序清单: 1)数据菜单模块程序 intmenu_select()/*菜单函数*/{ charc; do{system("cls");/*运行前清屏*/ printf("\t\t****学生的成绩信息管理系统****\n");/*菜单选择*/ printf("\t\t|1.输入学生信息|\n");printf("\t\t|2.显示所有学生信息|\n"); printf("\t\t|3.插入学生信息|\n");printf("\t\t|4.删除学生信息|\n"); printf("\t\t|5.查询学生信息|\n");printf("\t\t|6.修改学生信息|\n"); printf("\t\t|7.统计学生信息|\n");printf("\t\t|8.从文件中添加信息|\n"); printf("\t\t|9.保存学生信息|\n");printf("\t\t|0.退出|\n"); printf("\t\t*****************************************\n"); printf("\t请你选择(0-9): "); c=getchar();/*读入选择*/ }while(c<'0'||c>'9'); return(c-'0');/*返回选择*/ } 2)数据录入模块程序 intInput(Studentstud[],intn)/*输入若干条记录*/ {inti=0;charsign,x[10];/*x[10]为清除多余的数据所用*/ while(sign! ='n'&&sign! ='N')/*判断*/{ printf("\t\t\t学生学号: ");scanf("\t\t\t%s",stud[n+i].num); printf("\t\t\t学生姓名: ");scanf("\t\t\t%s",stud[n+i].name); printf("\t\t\t学生英语成绩: ");scanf("\t\t\t%d",&stud[n+i].eng); printf("\t\t\t学生数学成绩: ");scanf("\t\t\t%d",&stud[n+i].mat); printf("\t\t\t学生计算机成绩: ");scanf("\t\t\t%d",&stud[n+i].com); stud[n+i].sum=stud[n+i].eng+stud[n+i].mat+stud[n+i].com; gets(x);/*清除多余的输入*/ printf("\t\t\t还要输入成绩吗? (Y/N)");scanf("\t\t\t%c",&sign);/*输入判断*/ i++;} return(n+i);} 3)数据插入模块程序 intInsert_a_record(Studentstud[],intn)/*插入一条记录*/ {charx[10];/*清除多余输入所用*/ printf("\t\t\t学生学号: ");scanf("\t\t\t%s",stud[n].num); printf("\t\t\t学生姓名: ");scanf("\t\t\t%s",stud[n].name); printf("\t\t\t学生英语成绩: ");scanf("\t\t\t%d",&stud[n].eng); printf("\t\t\t学生数学成绩: ");scanf("\t\t\t%d",&stud[n].mat); printf("\t\t\t学生计算机成绩: ");scanf("\t\t\t%d",&stud[n].com); stud[n].sum=stud[n].eng+stud[n].mat+stud[n].com; gets(x);n++;printf("\t\t\t输入成功! \n");/*返回成功信息*/ return(n);} 组员三(姓名: 张志坤)的程序清单: 1)数据排序模块程序 voidSort_by_num(Studentstud[],intn)/*按学号排序*/ { inti,j,*p,*p1,*k,*k1,*m,*m1,*w,*w1,s1,s2,s3,s4;chart[10]; for(i=0;i for(j=0;j if(strcmp(stud[j].num,stud[j+1].num)>0) {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); p=&stud[j+1].eng;p1=&stud[j].eng;s1=*p;*p=*p1;*p1=s1; k=&stud[j+1].mat;k1=&stud[j].mat;s2=*k;*k=*k1;*k1=s2; m=&stud[j+1].com;m1=&stud[j].com;s3=*m;*m=*m1;*m1=s3; w=&stud[j+1].sum;w1=&stud[j].sum;s4=*w;*w=*w1;*w1=s4; }} 2)数据统计模块程序 voidStatistic(Studentstud[],intn)/*新增功能,输出统计信息*/ {inti,j=0,k=0,su=0;floataver;/*成绩平均值*/ for(i=0;i su+=stud[i].sum; if(stud[j].sum>stud[i].sum)j=i;if(stud[k].sum } aver=1.0*su/n; printf("\t\t\t这里总共有%d个学生.\n",n);/*总共记录数*/ printf("\t\t\t最高分是: \n");/*最高分*/ printf("\t\t\t学号: %s姓名: %s总成绩: %d\n",stud[k].num,stud[k].name,stud[k].sum); printf("\t\t\t最低分是: \n");/*最低分*/ printf("\t\t\t学号: %s姓名: %s总成绩: %d\n",stud[j].num,stud[j].name,stud[j].sum); printf("\t\t\t全体学生的平均分是: %5.2f\n",aver);/*平均分*/ } 组员四(姓名: 梁宗森)的程序清单: 1)数据查找模块程序 voidQuery_a_record(Studentstud[],intn)/*查找并显示一个记录*/ {chars[20];inti=0; printf("\t\t\t你要查询的学生名字是: ");scanf("\t\t\t%s",s); while(strcmp(stud[i].name,s)! =0&&i if(i==n) {printf("\t\t\t很抱歉,没有此人! \n");/*输入失败信息*/ return;} printf("\t\t\t该学生学号是: %s\n",stud[i].num);/*输出该学生信息*/ printf("\t\t\t该学生英语成绩是: %d\n",stud[i].eng); printf("\t\t\t该学生数学成绩是: %d\n",stud[i].mat); printf("\t\t\t该学生计算机成绩是: %d\n",stud[i].com); printf("\t\t\t该学生总成绩是: %d\n",stud[i].sum); } 2)数据显示模块程序 voidDisplay(Studentstud[],intn)/*显示所有记录*/{ inti; printf("\t\t----------------------------------------\n");/*格式头*/ printf("\t\t学号姓名英语数学计算机总分\n"); printf("\t\t----------------------------------------\n"); for(i=1;i printf("\t\t%-8s%-8s%-7d%-7d%-7d%-9d\n",stud[i-1].num,stud[i-1].name,stud[i-1].eng,stud[i-1].mat,stud[i-1].com,stud[i-1].sum); if(i>1&&i%10==0)/*每十个暂停*/ {printf("\t\t-----------------------------------\n");/*格式*/ printf("\t");system("pause"); printf("\t\t-----------------------------------\n"); }} printf("\t\t\t");system("pause"); } 组员五(姓名: 容金龙)的程序清单: 1)数据读入模块程序 intAddfromText(Studentstud[],intn)/*从文件中读入数据*/ {inti=0,num;FILE*fp;/*定义文件指针*/charfilename[20];/*定义文件名*/ printf("\t\t\t输入文件名: ");scanf("\t\t\t%s",filename); if((fp=fopen(filename,"rb"))==NULL)/*打开文件*/{ printf("\t\t\t对不起,读入文件失败! \n");/*打开失败信息*/ printf("\t\t\t");system("pause");return(n); } fscanf(fp,"%d",&num);/*读入总记录量*/ while(i { fscanf(fp,"%s%s%d%d%d%d",stud[n+i].num,stud[n+i].name,&stud[n+i].eng,&stud[n+i].mat,&stud[n+i].com,&stud[n+i].sum); i++; } n+=num;fclose(fp);/*关闭文件*/ printf("\t\t\t读入数据成功! \n");printf("\t\t\t");system("pause");return(n); } 2)数据保存模块程序 voidWritetoText(Studentstud[],intn)/*将所有记录写入文件*/{ inti=0;FILE*fp;/*定义文件指针*/charfilename[20];/*定义文件名*/ printf("\t\t\t把学生成绩记录到文件里去! \n");/*输入文件名*/ printf("\t\t\t请定义文件名: ");scanf("\t\t\t%s",filename); if((fp=fopen(filename,"w"))==NULL)/*打开文件*/{ printf("\t\t\t对不起,打开失败! \n");system("pause");return; } fprintf(fp,"%d\n",n);/*循环写入数据*/ while(i { fprintf(fp,"%-8s%-8s%-7d%-7d%-7d%-9d\n",stud[i].num,stud[i].name,stud[i].eng,stud[i].mat,stud[i].com,stud[i].sum); i++; } fclose(fp);/*关闭文件*/printf("数据记录成功! \n");/*返回成功信息*/ } 6、各模块运行结果及说明 组员一(姓名: 何金海)的运行界面: 文字说明: 主函数控制整个程序,按下数字“0”后按回车键退出程序;输入数字“4”后按提示进行删除数据;输入数字“6”后按提示进行数据修改。 ---------------------------------------------------------------------------------- 组员二(姓名: 凌大昌)的运行界面: 文字说明: 输入数字“1”后按回车键进行输入记录;输入数字“3”后按回车键对学生信息进行插入; ---------------------------------------------------------------------------------- 组员三(姓名: 张志坤)的运行界面: 文字说明: 输入数字“7”后按提示进行成绩统计,统计出最高分和最低分。 --------------------------------------------------------------------------------- 组员四(姓名: 梁宗森)的运行界面: 文字说明: 输入数字“2”后按回车键进行学生信息按学号排序显示;输入数字“5”后按提示进行学生信息查询。 ---
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 信息管理 系统