学生管理系统课程设计5.docx
- 文档编号:4680087
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:21
- 大小:176.08KB
学生管理系统课程设计5.docx
《学生管理系统课程设计5.docx》由会员分享,可在线阅读,更多相关《学生管理系统课程设计5.docx(21页珍藏版)》请在冰豆网上搜索。
学生管理系统课程设计5
高级语言程序设计报告书
系部名称
:
电子与信息工程系
学生姓名
:
专业名称
:
电子信息工程
指导老师
:
班级
:
电子0902
学号
:
时间
:
2010-06-21至2010-07-02
一、课程设计目的:
1.熟悉C语言程序的编辑、编译链接和运行的过程,至少能够用一种编译器较熟练地编辑、编译及调试程序。
2.掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
3.熟练运用if语句和switch语句以及嵌套应用。
涉及循环调用的,了解并掌握三种控制语句while、do-while和for语句。
4.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
5.掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
6.掌握结构体类型变量、数组的定义和使用。
二、课程设计内容:
1.编写程序并进行调试运行。
2.输入学生资料,并保存于文件。
每个学生包含信息:
学号、姓名、成绩等。
3.对已存入的学生信息进行更新操作,包括添加一个学生信息、删除某个学生信息和修改某个学生信息。
4.通过输入姓名、学号的方式查询学生信息。
5.最后输出学生信息供需要时打印。
三、需求分析
1、录入信息:
通过输入学号、姓名、高数成绩、英语成绩、C语言成绩、平均成绩、总成绩
实现信息的录入功能,并计算出总分。
2、输出功能:
显示输入的内容。
3、更新功能:
增加、修改、删除、查询一条或多条信息。
4、条件查询功能:
用户可选择不同的查询方式,如按学号、按姓名进行相应信息的查询。
5、统计功能:
统计各科及格人数。
6、排序功能:
按学生平均成绩进行排序。
四、概要设计
1.系统结构图(功能模块图)和数据变量说明
对系统进行分析,给出系统总体结构。
五、详细设计及运行结果
流程图,函数之间相互调用的图示,程序设计及编码,运行结果
真
假
真
六、调试情况,设计技巧及体会
1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
本程序基本符合本次实验的基本要求,实现了数据的录入、存储、读写、修改、删除、查询、统计、排序及输出等功能。
本程序的主程序中设有主菜单,主菜单中包括输入信息模块、输出信息模块、修改信息模块、添加信息模块、删除信息模块、信息查询模块及总成绩排行模块,其中查询选项之中可选择按学号查询和按姓名查询两种方式,输出模块能准确快速的将学生信息打印出来本程序运行时简洁明了,恰当的提示语句给程序应运带来了许多便利。
我学会了简单的设置一个密码。
..
不足之处:
使用结构体数组进行编程,不能实现按学号大小进行插入学生成绩信息,这一点会在今后的编写程序过程中加以注意,这一点可以使用链表方法进行插入,不能很好的使用指针和文件,在以后的编程中要逐渐学会使用文件和指针变量,链表。
2、在设计过程中的感受
通过此次实验,我基本掌握了如何对一个大的实际程序进行整体的安排
布局,以及如何将各个函数模块之间联系起来从而实现函数的调用,在此同时也熟悉了C语言的运行环境及程序编辑,编译,链接和运行过程,掌握了C语言的程序书写格式和C语言程序结构语句的使用,特别是if,switch,do-while和for语句,掌握了C语言数据类型,运算符,表达式等的使用方法,掌握了数组,结构体,指针,等的简单应用,培养了独立完成某个大程序的能力以及独立思考解决问题的能力,收获颇丰,还有在刚开始的总体构思完成后,对各个功能实现的过程中可以用小模块进行操作,比如,输入数据,输出数据,保存数据等..在一个个小模块中调试,最后各个小模块都完成后,在将所有的模块都放到一起进行调试,这样可以避免一些错误和弯路,且能快速的完成系统对各功能的要求。
七、参考文献
《C语言程序设计》作者:
王曙燕
八、附录:
源代码
/*学生管理系统*/
#include
#include
#include
typedefstructStudent
{charID[10];/*学生学号*/
charname[20];/*学生姓名*/
floatscore1;/*高数成绩*/
floatscore2;/*英语成绩*/
floatscore3;/*C语言成绩*/
floataverage;/*平均成绩*/
floatsum;/*总成绩*/
inttongji;
}stu;
stustudents[100];
intnum=0;
floatAvg(stustu)/*求平均成绩*/
{
return(stu.score1+stu.score2+stu.score3)/3;
}
floatSum(stustu)/*求总成绩*/
{
return(stu.score1+stu.score2+stu.score3);
}
intSearchByIndex(charid[10])/*按学号查询*/
{inti;
for(i=0;i { if(strcmp(students[i].ID,id)==0)/*字符串比较函数*/ { returni; } } return-1; } intSearchByname(charname[20])/*按姓名查询*/ { inti; for(i=0;i { if(strcmp(students[i].name,name)==0)/*字符串比较函数*/ { returni; } } return-1; } voidDisplaySingle(intindex)/*显示单个学生*/ {printf("%10s%10s%8s%8s%8s%10s%10s\n","学号","姓名","数学","语文","C语言","平均成绩","总分"); printf("---------------------------------------------------------------------------\n"); printf("%10s%10s%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[index].ID,students[index].name,students[index].score1,students[index].score2,students[index].score3,students[index].average,students[index].sum); } voidInsert()/*插入信息*/ { while (1) {printf("请输入学号: "); scanf("%s",&students[num].ID); printf("请输入姓名: "); scanf("%s",&students[num].name); printf("请输入成绩: "); scanf("%f",&students[num].score1); printf("请输入成绩: "); scanf("%f",&students[num].score2); printf("请输入成绩: "); scanf("%f",&students[num].score3); getchar(); students[num].average=Avg(students[num]); students[num].sum=Sum(students[num]); num++; printf("是否继续? (y/n)"); if(getchar()=='n') { break; } } } voidCorrect()/*修改学生信息*/ { while (1) {charid[20]; intindex; printf("请输入要修改的学生的学号: "); scanf("%s",&id); index=SearchByIndex(id); if(index==-1) { printf("学生不存在! \n"); } else {printf("你要修改的学生信息为: \n"); DisplaySingle(index); printf("--请输入新值--\n"); printf("请输入学号: "); scanf("%s",&students[index].ID); printf("请输入姓名: "); scanf("%s",&students[index].name); printf("请输入成绩: "); scanf("%f",&students[index].score1); printf("请输入成绩: "); scanf("%f",&students[index].score2); printf("请输入成绩: "); scanf("%f",&students[index].score3); getchar(); students[index].average=Avg(students[index]); students[index].sum=Sum(students[index]); } printf("是否继续? (y/n)"); if(getchar()=='n') {break; } } } voidDelete()/*删除学生信息*/ {inti; while (1) {charid[20]; intindex; printf("请输入要删除的学生的学号: "); scanf("%s",&id); getchar(); index=SearchByIndex(id); if(index==-1) { printf("学生不存在! \n"); } else {printf("你要删除的学生信息为: \n"); DisplaySingle(index); printf("是否真的要删除? (y/n)"); if(getchar()=='y') { for(i=index;i { students[i]=students[i+1]; } num--; } getchar(); } printf("是否继续? (y/n)"); if(getchar()=='n') {break; } } } voidSelectByName()/*按姓名查询*/ { while (1) {charname[20]; intindex; printf("请输入要查询的学生的姓名: "); scanf("%s",&name); getchar(); index=SearchByname(name); if(index==-1) { printf("学生不存在! \n"); } else { printf("你要查询的学生信息为: \n"); DisplaySingle(index); } printf("是否继续? (y/n)"); if(getchar()=='n') { break; } } } SelectByIndex()/*按学号查询*/ { while (1) {charid[20]; intindex; printf("请输入要查询的学生的学号: "); scanf("%s",id); index=SearchByIndex(id); if(index==-1) { printf("学生不存在! \n"); } else { printf("你要查询的学生信息为: \n"); DisplaySingle(index); } printf("是否继续? (y/n)"); if(getchar()=='n') printf("\n按任意键进入主菜单! "); getchar(); return0; } } voidshuru()/*输入信息*/ { while (1) {printf("请输入学号: "); scanf("%s",&students[num].ID); printf("请输入姓名: "); scanf("%s",&students[num].name); printf("请输入成绩: "); scanf("%f",&students[num].score1); printf("请输入成绩: "); scanf("%f",&students[num].score2); printf("请输入成绩: "); scanf("%f",&students[num].score3); getchar(); students[num].average=Avg(students[num]); students[num].sum=Sum(students[num]); num++; printf("是否继续? (y/n)"); if(getchar()=='n') { break; } } } voidSort()/*按平均成绩排序(冒泡法)*/ {inti,j; stut; for(i=1;i { for(j=1;j<=num-i;j++) { if(students[i].average>students[j].average) {t=students[i]; students[i]=students[j]; students[j]=t; } } } } voidDisplay() {inti; printf("%10s%10s%8s%8s%8s%10s%10s\n","学号","姓名","数学","语文","C语言","平均成绩","总分"); printf("-------------------------------------------------------------\n"); for(i=0;i {printf("%10s%10s%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[i].ID,students[i].name,students[i].score1,students[i].score2,students[i].score3,students[i].average,students[i].sum); } } voidRead()/*读取信息*/ { FILE*fp;/*定义文件指针*/ inti=0; if((fp=fopen("e: \\xueshengguanli.txt","rb"))==NULL) {printf("不能打开文件! \n"); return; } while((fread(&students[i],sizeof(stu),1,fp))==1) { i++; num++; } fclose(fp); } voidWrite()/*写入信息*/ { FILE*fp;/*定义文件指针*/ inti; if((fp=fopen("e: \\xueshengguanli.txt","wb"))==NULL) { printf("不能打开文件! \n"); return; } for(i=0;i { if(fwrite(&students[i],sizeof(stu),1,fp)! =1) { printf("写入文件错误! \n"); return; } } fclose(fp); } voidtongji() { inti,k=0,q=0,j=0; for(i=0;i {if(students[i].score1>60) k++; } printf("高数及格人数为%d",k); for(i=0;i {if(students[i].score2>60) j++; } printf("英语及格人数为%d",j); for(i=0;i {if(students[i].score3>60) q++; } printf("c语言及格人数为%d",q); } voidmain() {intchoice,i,m,n; m=1216; for(i=1;i<3;i++) { printf("\n请输入密码: "); scanf("%d",&n); if(m==n) { printf("请进入系统"); break; } else {printf("不能进入系统"); } } Read(); do {printf("\n------学生成绩管理系统------\n"); printf("1.显示全部记录\n"); printf("2.增加学生记录\n"); printf("3.修改学生记录\n"); printf("4.删除学生记录\n"); printf("5.按姓名查询学生记录\n"); printf("6.按学号查询学生记录\n"); printf("7.按平均成绩排序\n"); printf("8.输入成绩\n"); printf("9.统计\n"); printf("10.退出\n"); printf("请选择(1-10): "); scanf("%d",&choice); //getchar(); switch(choice) {case1: Display();break; case2: Insert();break; case3: Correct();break; case4: Delete();break; case5: SelectByName();break; case6: SelectByIndex();break; case7: Sort();Display();break; case8: shuru();break; case9: tongji();break; case10: break; } }while(choice! =10); Write(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 管理 系统 课程设计