C语言课程设计 学生成绩管理系统.docx
- 文档编号:8304000
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:26
- 大小:311.63KB
C语言课程设计 学生成绩管理系统.docx
《C语言课程设计 学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 学生成绩管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生成绩管理系统
中国地质大学
本科生课程论文封面
课程名称C语言课程设计
教师姓名
本科生姓名
本科生学号
本科生专业072114(机械)
所在院系机电学院
类别:
日期:
2012年6月25日
目录
课程论文题目
程序设计思路
功能模块图
数据结构设计
算法设计
程序代码
程序运行结果
编程中遇到的困难及解决方法
总结心得及良好建议
致谢
一、课程论文题目:
学生成绩管理系统
1:
题目要求
请设计《学生成绩管理系统》,实现学生信息的录入,显示,查找,添加,保存,删除,插入等功能模块。
要求功能选择用菜单实现,数据输入和结果输出要求有文件存放。
原始数据文件格式:
学号姓名英语C语言高等数学平均成绩
01张三75858080
02李四…………
2:
需求分析
根据题目要求,由于学生信息总是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择。
3:
总体设计
根据上面的需求分析,可以将这个系统的设计分为:
数据输入模块、数据显示模块、数据查找模块、数据插入模块、成绩排序模块和成绩保存模块等。
二、程序设计思路
1、用户输入模块
在此模块中用户根据自己的需求输入数字1~7中的任意一个数字,实现相应的功能。
2、信息录入功能模块
此模块可以让用户输入每个学生的信息:
学号、姓名、英语成绩、C语言成绩、高等数学成绩、平均成绩。
用户可以连续输入学生的信息,或者删除或者查询,也可以保存当前已录入的信息。
3、修改学生成绩模块
用户可以根据实际情况的变化修改已录入的学生成绩的信息,跟实际同步。
4、文件保存模块
用户可以在确定已录入的信息无误之后将学生的信息存为一个数据文件。
已保存的信息可以再文件中查看也可以在程序中进行查看。
用户输入的学生信息可以随时保存。
5、查询功能模块
在此模块里,用户可以根据提示输入所想要查询的学生的学号以查询学生的信息。
6、删除功能模块、
在此模块里,用户可以根据自己的需求选择想要删除的学生信息,选择之后程序会再次确认,以防误删。
7、排序功能模块
在此模块中,程序会将用户已录入的信息按平均成绩由低到高进行排序。
三、功能模块图
四、数据结构设计
structxueshengchengji/*声明学生成绩数据结构体*/
{
charxuehao[10];/*学生学号*/
charname[10];/*学生姓名*/
floatcyuyan;/*c语言成绩*/
floatmath;/*高数成绩*/
floatenglish;/*英语成绩*/
floataverage;/*平均成绩*/
};
structxueshengchengjichengji[100],*p=chengji;/*声明记录学生成绩情况的100个元素的结构体数组*/
五、算法设计
1、添加模块
voidadd()
{
printf("\t请输入学生学号:
");
fflush(stdin);/*清除键盘缓冲区*/
gets(chengji[++n].xuehao);
printf("\t\t\t\t请输入学生姓名:
");
gets(chengji[n].name);
printf("\t\t\t\t请输入该学生的英语成绩:
");
scanf("%f",&chengji[n].cyuyan);
printf("\t\t\t\t请输入该学生的C语言成绩:
");
scanf("%f",&chengji[n].math);
printf("\t\t\t\t请输入该学生的高等数学成绩:
");
scanf("%f",&chengji[n].english);
/*计算总成绩*/
chengji[n].average=(chengji[n].cyuyan+chengji[n].math+chengji[n].english)/3;
/*输出内容*/
printf("\n\t\t\t\t该学生成绩为:
%f",chengji[n].average);
printf("\n\n\t\t\t\t按任意键返回......");
getch();
}
2、修改模式
voidmodify()
{
charxuehao[10];/*接收学生学号字符数组*/
inti;/*循环变量*/
if(n==-1)/*人数为0说明成绩记录尚未添加*/
{
printf("\n\n\t\t当前还没有学生成绩记录,按任意键返回主菜单......");
getch();
return;
}
printf("\t请输入学生学号:
");/*提示信息*/
gets(xuehao);/*从键盘读取字符串*/
for(i=0;i<=n;i++)/*在学生总数范围内循环查找*/
{
if(strcmp(chengji[i].xuehao,xuehao)==0)/*比较并找到*/
{
/*显示该学生成绩情况*/
printf("\n\t\t\t该学生成绩情况如下:
");
printf("\n\t\t\t===================\n\n");
printf("%-6s%-6s%-9s","学号","姓名","平均成绩");
printf("%-12s%-6s%12s","英语","C语言","高等数学");
printf("%-6s%-6s",chengji[i].xuehao,chengji[i].name);
printf("%9.2f%9.2f%9.2f%9.2f",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].average);
/*接受该学生新的成绩情况*/
printf("\n\t\t请输入该学生新的英语成绩:
");
scanf("%f",&chengji[i].cyuyan);
printf("\n\t\t请输入该学生新的C语言成绩:
");
scanf("%f",&chengji[i].math);
printf("\n\t\t请输入该学生新的高等数学成绩:
");
scanf("%f",&chengji[i].english);
3、查询模块
/*查询学生成绩(依据学号)*/
voidfind()
{
charxuehao[10];/*接收学生学号字符数组*/
inti;/*循环变量*/
if(n==-1)/*人数为0说明成绩记录尚未添加*/
{
printf("\n\n\t\t当前还没有学生成绩,按任意键返回主菜单......");
getch();
return;
}
printf("\t请输入学生学号:
");/*提示信息*/
gets(xuehao);/*从键盘读取字符串*/
for(i=0;i<=n;i++)/*在职工总数范围内循环查找*/
{
if(strcmp(chengji[i].xuehao,xuehao)==0)/*比较并找到*/
{
printf("\n该学生成绩情况如下:
");
printf("\n===================\n\n");
printf("%-6s%-6s%","学号","姓名");
printf("%-12s%-6s%12s%9s\n","英语","C语言","高等数学","平均成绩");
printf("%-6s%-6s%",chengji[i].xuehao,chengji[i].name);
printf("%9.2f%9.2f%9.2f%9.2f",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].average);
printf("\n按任意键返回主菜单......");
getch();
break;
}
}
if(i==n+1)
{
printf("\n\t\t您所输入的学生学号有误或不存在!
");
printf("按任意键返回主菜单......");
getch();
return;
}
}
4、删除模块
voiddel()
{
charxuehao[10];
inti,j;
chard;
printf("\t请输入待删除学生学号:
");
gets(xuehao);
for(i=0;i<=n;i++){
if(strcmp(chengji[i].xuehao,xuehao)==0){
printf("\n\t\t你确认要删除%s号学生成绩信息么(y/n)?
",chengji[i].xuehao);
d=getche();
if(d=='y'||d=='Y')
{
if(i==n)
n--;
else
{
for(j=i;j<=n;j++)
{
strcpy(chengji[j].xuehao,chengji[j+1].xuehao);
strcpy(chengji[j].name,chengji[j+1].name);
chengji[j].english=chengji[j+1].english;
chengji[j].math=chengji[j+1].math;
chengji[j].cyuyan=chengji[j+1].cyuyan;
}
n--;
}
printf("\n\n\t\t该学生记录成功删除,按任意键返回主菜单......");
getch();
break;
}
else{
printf("\n\n\t\t你选择了不删除该学生记录,按任意键返回主菜单......");
getch();
return;
}
}
}
if(i==n+1){
printf("\n\t\t本班级无此学号,按任意键返回主菜单......");
getch();
}
}
5、排序模块
voidrank()
{
inti,j;
printf("\t按平均成绩排序如下\n");
for(i=0;i for(j=i+1;j if(chengji[i].average>chengji[j].average) {*p=chengji[j];chengji[j]=chengji[i];chengji[i]=*p;} printf("%-6s%-6s","学号","姓名"); printf("%-12s%-6s%12s%-9s\n","英语","C语言","高等数学","平均成绩"); for(i=0;i<=n;i++) { printf("%-6s%-6s",chengji[i].xuehao,chengji[i].name); printf("%9.2f%9.2f%9.2f%9.2f\n",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].average); } printf("\n\n\t\t\t\t按任意键返回......"); getch(); } 六、程序代码个 #include #include #include #include #defineTRUE1 /*以下函数为自定义函数声明语句*/ voidread();/*从数据文件中读取学生成绩数据*/ voidwrite();/*想学生成绩数据文件写入记录*/ voidfind();/*查询学生成绩数据记录*/ voidmodify();/*修改学生成绩数据记录*/ voidadd();/*向学生成绩数据文件中增加记录*/ voiddel();/*从学生成绩数据文件中删除记录*/ voidrank();/*排列学生成绩*/ structxueshengchengji/*声明学生成绩数据结构体*/ { charxuehao[10];/*学生学号*/ charname[10];/*学生姓名*/ floatcyuyan;/*c语言成绩*/ floatmath;/*高数成绩*/ floatenglish;/*英语成绩*/ floataverage;/*平均成绩*/ }; structxueshengchengjichengji[100],*p=chengji;/*声明记录学生成绩情况的100个元素的结构体数组*/ intn=-1;/*声明统计学生人数的变量(全局)*/ voidmain(){ charch; read();/*从数据文件中读取学生成绩数据并初始化学生成绩结构体数组*/ while(TRUE){ system("cls");/*清屏命令*/ printf("\n\n\t\t★☆欢迎使用学生成绩管理系统☆★\n\n\n"); printf("\t\t请选择(1-7): \n"); printf("\t\t======================================================\n"); printf("\t\t\t1.查询学生成绩记录\n"); printf("\t\t\t2.修改学生成绩记录\n"); printf("\t\t\t3.添加学生成绩记录\n"); printf("\t\t\t4.删除学生成绩记录\n"); printf("\t\t\t5.保存学生成绩记录\n"); printf("\t\t\t6.成绩排序\n"); printf("\t\t\t7.退出\n"); printf("\t\t======================================================\n"); printf("\n\t\t"); ch=getch(); switch(ch){ case'1': find(); break;/*查询*/ case'2': modify(); break;/*修改*/ case'3': add(); break;/*添加*/ case'4': del(); break;/*删除*/ case'5': write(); break;/*保存*/ case'6': rank(); break;/*排序*/ case'7': return;/*退出*/ default: printf("\t\t\n"); getch(); } } return; } /*从数据文件cj.dat中读取学生成绩数据到数据组chengji中*/ voidread() { FILE*file;/*声明文件指针*/ if((file=fopen("cj.dat","rb"))==NULL) /*以二进制方式打开学生成绩数据文件,并判断是否失败*/ { printf("\n\n\t学生成绩数据文件无法打开,或为空! "); printf("\n\n\t按任意键进入主菜单......."); getch(); return; } else/*文件打开成功时*/ { n++;/*计算结构体数组下标*/ while(fread(&chengji[n],sizeof(chengji[n]),1,file)==1) n++; fclose(file);/*关闭文件指针*/ printf("\n\n\t学生成绩数据读取完毕,共有%d人! \n",n); printf("\n\t5秒后继续......\n",n); n--;/*计算学生记录总数*/ Sleep(5000);/*延时5分钟*/ } } /*向学生成绩数据文件中写入记录*/ voidwrite() { FILE*file;/*声明文件指针*/ if(n==-1)/*学生人数为0时*/ { printf("没有数据可存! 按任意键返回主菜单\n"); getch(); return; } if((file=fopen("cj.dat","wb"))! =NULL) /*以二进制方式打开学生成绩数据文件,并判断是否失败*/ { fwrite(&chengji[0],sizeof(chengji[0]),n+1,file);/*所有记录一次写入文件*/ fclose(file);/*关闭文件指针*/ printf("\n\n\t\t%d条学生记录保存完毕! \n",n+1); } else/*文件打开不成功时*/ printf("\t\t无法打开学生成绩数据文件! \n"); printf("\n\t\t按任意键返回主菜单......"); getch(); } /*查询学生成绩(依据学号)*/ voidfind() { charxuehao[10];/*接收学生学号字符数组*/ inti;/*循环变量*/ if(n==-1)/*人数为0说明成绩记录尚未添加*/ { printf("\n\n\t\t当前还没有学生成绩,按任意键返回主菜单......"); getch(); return; } printf("\t请输入学生学号: ");/*提示信息*/ gets(xuehao);/*从键盘读取字符串*/ for(i=0;i<=n;i++)/*在职工总数范围内循环查找*/ { if(strcmp(chengji[i].xuehao,xuehao)==0)/*比较并找到*/ { printf("\n该学生成绩情况如下: "); printf("\n===================\n\n"); printf("%-6s%-6s%","学号","姓名"); printf("%-12s%-6s%12s%9s\n","英语","C语言","高等数学","平均成绩"); printf("%-6s%-6s%",chengji[i].xuehao,chengji[i].name); printf("%9.2f%9.2f%9.2f%9.2f",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].average); printf("\n按任意键返回主菜单......"); getch(); break; } } if(i==n+1) { printf("\n\t\t您所输入的学生学号有误或不存在! "); printf("按任意键返回主菜单......"); getch(); return; } } voidlist() { inti; system("cls"); printf("\n\n\t\t\t全体学生成绩情况如下\n"); printf("\t\t\t===========================\n\n"); printf("%-6s%-6s%-9s","学号","姓名","平均成绩"); printf("%-12s%-6s%12s\n","英语","C语言","高等数学"); for(i=0;i<=n;i++) { printf("%-6s%-6s%8.2f",chengji[i].xuehao,chengji[i].name,chengji[i].average); printf("%9.2f%9.2f%9.2f",chengji[i].english,chengji[i].math); } } voidmodify() { charxuehao[10];/*接收学生学号字符数组*/ inti;/*循环变量*/ if(n==-1)/*人数为0说明成绩记录尚未添加*/ { printf("\n\n\t\t当前还没有学生成绩记录,按任意键返回主菜单......"); getch(); return; } printf("\t请输入学生学号: ");/*提示信息*/ gets(xuehao);/*从键盘读取字符串*/ for(i=0;i<=n;i++)/*在学生总数范围内循环查找*/ { if(strcmp(chengji[i].xuehao,xuehao)==0)/*比较并找到*/ { /*显示该学生成绩情况*/ printf("\n\t\t\t该学生成绩情况如下: "); printf("\n\t\t\t===================\n\n"); printf("%-6s%-6s%-9s","学号","姓名","平均成绩"); printf("%-12s%-6s%12s","英语","C语言","高等数学"); printf("%-6s%-6s",chengji[i].xuehao,chengji[i].name); printf("%9.2f%9.2f%9.2f%9.2f",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].average); /*接受该学生新的成绩情况*/ printf("\n\t\t请输入该学生新的英语成绩: "); scanf("%f",&chengji[i].cyuyan); printf("\n\t\t请输入该学生新的C语言成绩: ");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程设计 学生成绩管理系统 语言 课程设计 学生 成绩管理系统
![提示](https://static.bdocx.com/images/bang_tan.gif)