《c程序设计》课程设计学生成绩管理.docx
- 文档编号:9110949
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:20
- 大小:108.47KB
《c程序设计》课程设计学生成绩管理.docx
《《c程序设计》课程设计学生成绩管理.docx》由会员分享,可在线阅读,更多相关《《c程序设计》课程设计学生成绩管理.docx(20页珍藏版)》请在冰豆网上搜索。
《c程序设计》课程设计学生成绩管理
《C程序设计》课程实践报告
[学生成绩管理]
1.设计目标
学生信息包括:
学号,姓名,班级、学期、成绩等。
解决问题:
提高学生成绩的管理水平和管理效率,为全校职工和学生提供方便、快捷、准确的学生成绩服务。
主要功能:
(1)能按学期、按班级完成对学生成绩的录入、修改。
(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序。
(3)能查询学生成绩,不及格科目及学生名单。
(4)能按班级输出学生各个学期的成绩单。
要求:
系统以菜单方式工作。
学期intterm
班级intclasses
姓名charname
学号intnum
成绩intcore[4]
2.总体设计
主流程
3.详细设计
整个系统除了主函数外,另外还有5个函数,实现六大功能:
输入功能、输出功能、修改功能,查找并显示功能、排序并显示功能。
各个函数分别如下:
:
(1).定义结构体及宏定义
#include
#include
#include
#defineNUM100
structstudent
{intterm;
intnum;
intclasses;
charname[10];
intscore[4];
intsum;
floataverage;
}stu[NUM];
(2).主菜单函数:
voidzcd()
利用无限次循环for(;;)和swithch()进行菜单选择来实现各函数的调用,系统根
据输入的数字选项来调用相应的函数。
等执行完每一个函数功能后,按任一键回
到主界面也要通过这个函数来实现!
(3).输入信息函数:
voidinput()
利用循环for(;;)输入学生的信息和求各学生的平均分。
(4).排序并显示函数:
voidsort()
用循环for(;;)求各学生的平均分,用冒泡法基于平均分对学生进行排序并输出。
(5).查找并显示一个记录:
voidsearch()
利用循环for(;;)依次与输入的学号对比,若找到相符的,则输出该生的相关信息;否则提示无此学生。
(6).按学期、按班级输出成绩函数:
voidprint()
利用swithch()进行菜单选择来实现print1()和print2()的各自调用,print1()实现按学期输出成绩,print2()实现按班级输出成绩;利用循环for(;;)依次输出不及格学生的名单及成绩。
(7).修改成绩函数:
voidmodify()\
利用循环for(;;)依次与输入的学号对比,若找到相符的,则提示要修改的相关信息;否则,提示无此学生。
4.调试与测试
初次遇到这个程序,以为所学知识肯定不够用但是整体框架给出我们后就觉得还是可行的。
即通过主函数中的switch选择结构,在通过用户的可视化界面做出选择,通过对switch各个分支的副函数进行编写调试。
最终完成程序,并优化。
最后通过多次的使用,对细节进行了优化。
增加一些判断语句,让用户了解程序运行状况;增加提示。
学c需要的是一颗好奇、细心、勤奋的心。
多多练习,多多思考。
多了解硬件知识,熟悉并记忆一些小的程序片段。
必能有所收获。
5.分析及结论
实现功能:
1、输入功能:
可以一次完成无数条信息的输入。
2、输出功能:
能按班级输出学生的成绩单。
3、修改功能:
完成对单个学生成绩的修改。
4、查找功能:
完成对单个学生信息查找,并显示。
5、排序功能:
按学生成绩进行排序,并显示。
总结经验:
1、要对系统的功能和要求做出详细的分析,并合理分解任务。
2、把分解出来的子任务,做给一个相对独立的模块。
3、在设计一个模块之前,要简单构想一下总界面的显视情况。
4、针对构想出来的界面进行程序的编写。
6.运行结果
运行开始:
输入成绩记录:
排序并显示:
7.结束语
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我们通过这次实践学到了许多知识。
学到了设计一个简单的系统,要注意哪些方面。
也使我们知道自己哪些方面做得还不够。
这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!
在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。
8.参考文献
[1]《C语言程序设计》,谭浩强,清华大学出版社。
[2]《C程序设计学习辅导》,谭浩强,清华大学出版社。
9.源代码:
#include
#include
#include
#defineNUM100
structstudent
{intterm;
intnum;
intclasses;
charname[10];
intscore[4];
intsum;
floataverage;
}stu[NUM];
voidinput()
{
system("cls");
inti;
chara;
for(i=0;i {printf("\n请输入学生的学期: "); scanf("%d",&stu[i].term); printf("\n请输入学生的学号: "); fflush(stdin); scanf("%d",&stu[i].num); printf("\n请输入学生的班级: "); scanf("%d",&stu[i].classes); printf("\n请输入学生的姓名: "); scanf("%s",stu[i].name); printf("\n请输入学生的语文成绩: "); scanf("%d",&stu[i].score[0]); printf("\n请输入学生的数学成绩: "); scanf("%d",&stu[i].score[1]); printf("\n请输入学生的英语成绩: "); scanf("%d",&stu[i].score[2]); printf("\n请输入学生的计算机成绩: "); scanf("%d",&stu[i].score[3]); stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];//算总分和平均 stu[i].average=(float)stu[i].sum/4.0; printf("是否要继续添加(按N&n退出)"); fflush(stdin); a=getchar(); if(a=='n'||a=='N') break; } } voidsort() { voidprint(); inti,j=0; floattemp; for(i=0;i { stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]; stu[i].average=(float)stu[i].sum/4.0; } for(i=0;i { for(j=i+1;j { if(stu[i].sum { temp=stu[i].sum; stu[i].sum=stu[j].sum; stu[j].sum=temp; } } } printf("学号\t姓名\t班级语文数学英语计算机总分平均分\n"); for(i=0;i printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average); /*输出学生信息*/ system("pause");system("cls");print(); } voidsearch() { system("cls");/*清屏*/ intnumber=0,i; printf("\t\t\t请输入要查找学生的学号: "); scanf("%d",&number); printf("学号\t姓名\t班级语文数学英语计算机总分平均分\n"); for(i=0;i if(number==stu[i].num)break;/*查找判断*/ if(i {printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);/*输出学生信息*/ } else printf("没找到该学生的信息\n"); system("pause"); } voidprint() { voidzcd(); voidprint1(); voidprint2(); voidprint(); system("cls"); chara; printf("1、按学期输出\n"); printf("2、按班级输出\n"); printf("3、返回\n"); fflush(stdin); a=getchar(); switch(a) { case'1': print1();break; case'2': print2();break; case'3': zcd();break; default: print(); } } voidprint1()//按学期 { inti,m; printf("请输入学期: \n"); scanf("%d",&m); printf("学号\t姓名\t班级语文数学英语计算机总分平均分\n"); for(i=0;i { if(m==stu[i].term) printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);/*输出学生信息*/ } system("pause");system("cls");print(); } voidprint2()//按班级 { inti,j,k; printf("请输入班级: \n"); scanf("%d",&k); printf("学号\t姓名\t班级语文数学英语计算机总分平均分\n"); for(i=0;i { if(k==stu[i].classes) { stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]; stu[i].average=stu[i].sum/4.0; printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);/*输出学生信息*/ } } printf("输出不及格学生名单及成绩: \n"); printf("学号\t姓名\t班级语文数学英语计算机\n"); for(i=0;i {for(j=0;j<4;j++) { if(stu[i].score[j]<60&&k==stu[i].classes)/*输出不及格学生名单及成绩*/ printf("%d\t%s\t%d%5d%5d%5d%6d\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]); break; } } system("pause");system("cls");print(); } voidmodify() { voidzcd(); system("cls"); intnumber,i; printf("\t\t\t请输入要修改信息的学生学号: "); scanf("\t\t\t%d",&number); for(i=0;i if(number=stu[i].num)break;/*查找判断*/ if(i { printf("请输入修改后的学生的信息: "); printf("\n请输入学生的学期: "); scanf("%d",&stu[i].term); printf("\n请输入学生的学号: "); fflush(stdin); scanf("%d",&stu[i].num); printf("\n请输入学生的班级: "); scanf("%d",&stu[i].classes); printf("\n请输入学生的姓名: "); scanf("%s",stu[i].name); printf("\n请输入学生的语文成绩: "); scanf("%d",&stu[i].score[0]); printf("\n请输入学生的数学成绩: "); scanf("%d",&stu[i].score[1]); printf("\n请输入学生的英语成绩: "); scanf("%d",&stu[i].score[2]); printf("\n请输入学生的计算机成绩: "); scanf("%d",&stu[i].score[3]); } else printf("没找到该学生的信息\n"); system("paues");system("cls");zcd(); } voidzcd() { voidzcd(); intn=0; charm; system("cls");/*清屏*/ printf("\n\t\t---------欢迎使用苏州科技学院学生管理系统-----------\n\n\t\n\n\n\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("\n\t\t\t输入你的选择Enteryourchoice(1~6): "); fflush(stdin); m=getchar(); do {switch(m) { case'1': input();zcd();break; case'2': sort();system("pause");zcd();break; case'3': print();system("pause");break; case'4': search();zcd();break; case'5': modify();system("pause");zcd();break; case'6': exit(0);/*如菜单返回值为7则程序结束*/ default: printf("错误命令");getchar();zcd(); } }while (1); } voidmain() { voidzcd(); voidinput(); voidsort(); voidsearch(); voidprint(); voidprint1(); voidprint2(); voidmodify(); zcd(); } /*主函数界面*/ 目录 第一章总论1 一、项目概况1 二、项目提出的理由与过程6 三、项目建设的必要性8 四、项目的可行性12 第二章市场预测15 一、市场分析15 二、市场预测16 三、产品市场竞争力分析19 第三章建设规模与产品方案22 一、建设规模22 二、产品方案22 三、质量标准22 第四章项目建设地点25 一、项目建设地点选择25 二、项目建设地条件25 第五章技术方案、设备方案和工程方案28 一、技术方案28 二、产品特点30 三、主要设备方案32 四、工程方案32 第六章原材料与原料供应35 一、原料来源及运输方式35 二、燃料供应与运输方式35 第七章总图布置、运输、总体布局与公用辅助工程37 一、总图布置37 二、运输38 三、总体布局38 四、公用辅助工程39 第八章节能、节水与安全措施44 一、主要依据及标准44 二、节能44 三、节水45 四、消防与安全45 第九章环境影响与评价47 一、法规依据47 二、项目建设对环境影响48 三、环境保护措施48 四、环境影响评价49 第十章项目组织管理与运行50 一、项目建设期管理50 二、项目运行期组织管理52 第十一章项目实施进度55 第十二章投资估算和资金筹措56 一、投资估算56 二、资金筹措58 第十三章财务评价与效益分析61 一、项目财务评价61 二、财务评价结论65 三、社会效益68 四、生态效益68 第十四章风险分析70 一、主要风险分析识别70 二、风险程度分析及防范风险的措施70 第十五章招标方案72 一、招标范围72 二、招标组织形式72 三、招标方式72 第十六章结论与建议74 一、可行性研究结论74 二、建议75 附件77 一、附表77 二、附件77 三、附图77
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c程序设计 程序设计 课程设计 学生 成绩 管理