C语言课程设计报告.docx
- 文档编号:8168051
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:17
- 大小:123.39KB
C语言课程设计报告.docx
《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告
C语言课程设计报告
题目:
学生成绩管理系统
设计者:
专业班级:
软件Java1202
学号:
指导老师:
张黎娜
2013年7月3日
河南理工大学计算机学院
目录
1学生成绩管理系统
1.1问题提出------------------------------------------------3
1.2本系统设计的知识点--------------------------------------3
1.3功能要求------------------------------------------------3
2功能设计
2.1算法设计------------------------------------------------3
2.2部分模块流程图------------------------------------------4
3程序代码设计
1定义结构及宏定义------------------------------------------5
2主函数main()--------------------------------------------5
3输入信息函数----------------------------------------------7
4显示信息函数----------------------------------------------7
5排序并显示函数--------------------------------------------8
6查找信息函数----------------------------------------------8
7修改信息函数----------------------------------------------8
4c程序设计总结
1程序调试情况----------------------------------------------9
2编辑过程中所遇问题----------------------------------------11
5结束语--------------------------------------------------13
参考文献-------------------------------------------------13
1学生成绩管理系统
1.1问题提出
本人计划编写一个学生成绩管理系统,主要用于管理学生基本信息及成绩信息,主要有学号、姓名、高数成绩、c语言成绩、英语成绩、计算机成绩以及总分和平均分。
1.2本系统涉及的知识点
我所编辑的学生成绩管理系统所涉及的知识点有:
结构、数组、循环、函数、指针.
1.3功能要求
要求:
(1)能完成对学生成绩的录入、修改
(2)能统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序
(3)能查询学生成绩,不及格科目及学生名单
(4)能输出学生的成绩单
学生属性:
学号,姓名,入学年月,有成绩的学期数,四门课的成绩等9个成员,在编程中要求当执行状态输入i为输入学生记录,输入D为删除,输入s为查询(以学号为查询条件),输入p为将整个学生记录输出,使用结构数组或结构指针编程。
2功能设计
2.1算法设计
本系统学要实现的功能要求:
1、利用switch语句设计如图所示的主菜单:
请输入实际人数
i.成绩输入菜单
2.列表菜单
s.查找菜单
4.排序菜单
D.修改菜单
0.结束
图1学生成绩管理系统主菜单
2、选择4后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数:
排序菜单请输入选项编号
按平均分排序
图2排序子菜单
3、根据所选菜单编写相应代码:
1)输入函数input:
利用循环输入的方式,将有关信息存入结构数组,结构数组根据实际的人数,采用动态方式建立......
2)求平均分函数average:
图3成绩管理系统模块图
2.2部分模块流程图
请输入你的选择
输入4
Paixuscore(STU*head,intn)
inti,j,k;
STUt;
k=i
否
否
是
是
t=*(head+k);
*(head+k)=*(head+i);
*(head+i)=t;
输出排序结果
图4排序函数
3程序代码设计
模块图:
整个系统除了主函数外,另外还有个函数,实现了大功能:
输入功能、输出功能、修改功能,查找并显示功能、排序并显示功能。
各个函数的详细设计说明分别如下:
1.定义结构及宏定义
lude
#include
#include
structstudent
{
intnumber;
charname[10];
intscore[40];
intsum;
floataverage;
structstudent*next;
};
2.主函数main()
利用无限次循环for()和switch()进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数.等执行完每个函数功能后,按任意键回到主界面也要通过这个函数来实现!
main()
{
charch;
intn;
STUstu[100];
printf("请输入实际人数:
\n");
scanf("%d",&n);
while
(1)
{
ch=caidan();
switch(ch)
{
case'i':
shuruScore(stu,n);
tongjiScore(stu,n);
break;
case'2':
dayinScore(stu,n);
break;
case'S':
chazhaoScore(stu,n);
break;
case'4':
paixuScore(stu,n);
printf("\n排序结果:
\n");
dayinScore(stu,n);
break;
case'D':
xiugaiScore(stu,n);
tongjiScore(stu,n);
printf("\n修改后信息:
\n");
dayinScore(stu,n);
break;
case'0':
printf("谢谢使用!
!
!
");exit(0);
break;
default:
printf("输入出错!
!
!
!
!
!
!
\n");
break;
}
}
}
charcaidan(void)
{
charch;
printf("-----------------------------------\n");
printf("学生成绩表系统:
\n");
printf("-----------------------------------\n");
printf("i.成绩输入菜单\n");
printf("-----------------------------------\n");
printf("2.列表菜单\n");
printf("-----------------------------------\n");
printf("S.查找菜单\n");
printf("-----------------------------------\n");
printf("4.排序菜单\n");
printf("-----------------------------------\n");
printf("D.修改菜单\n");
printf("-----------------------------------\n");
printf("0.结束\n");
printf("-----------------------------------\n");
printf("请输入你的选择:
");
scanf("%c",&ch);
returnch;
}
3.输入信息函数
voidshuruScore(STU*head,intn)
{
intj;
STU*p;
printf("请输入学号姓名高数成绩c语言成绩英语成绩总分计算机成绩平均分:
\n");
for(p=head;p
{
scanf("%d%s",&p->number,p->name);
for(j=0;j<3;j++)
{
scanf("%d",p->score+j);
}
}
}
4.显示信息函数
voiddayinScore(STU*head,intn)
{
STU*p;
inti;
printf("河南理工大学软件学院成绩表:
\n");
printf("---------------------------------------------------------------\n");
printf("学号\t姓名\t高数\tC语言\t英语\t计算机\t总分\t平均分\n");
printf("---------------------------------------------------------------\n");
for(p=head;p
{
printf("\n%3d%8s",p->number,p->name);
for(i=0;i<3;i++)
{
printf("%7d",p->score[i]);
}
printf("%11d%9.2f\n",p->sum,p->average);
printf("---------------------------------------------------------------\n");
}
}
5.排序并显示函数
voidpaixuScore(STU*head,intn)
{
inti,j,k;
STUt;
for(i=0;i { k=i; for(j=i;j { if((head+j)->sum>(head+k)->sum) { k=j; } } if(k! =i) { t=*(head+k); *(head+k)=*(head+i); *(head+i)=t; } } } 6.查找信息函数 voidchazhaoScore(STU*head,intn) { intnumber,pos; printf("请输入你要查找的学号: "); scanf("%d",&number); pos=chazhaoNum(head,number,n); if(pos==-1) { printf("\n没找到! ! ! ! \n"); } else { dayinScore(head+pos,1); } } 7.修改信息函数 voidxiugaiScore(STU*head,constintn) { inti=0,nodeNum; charc; do{ printf("请输入你想修改学生信息的学号: "); scanf("%d",&nodeNum); head=xiugaiNode(head,nodeNum,n); printf("是否需要继续修改(Y/N)? "); scanf("%c",&c); i++; }while(c=='Y'||c=='y'); printf("%dnewnodeshavebeenmodified! \n",i); } STU*xiugaiNode(STU*head,intnodeNum,constintn) { intj; STU*newNode; newNode=SearchNode(head,nodeNum); if(newNode==NULL) { printf("没找到! ! ! ! \n"); } else { printf("请输入新的信息: \n"); printf("输入姓名: "); scanf("%s",newNode->name); for(j=0;j<3;j++) { printf("Inputscore%d: ",j+1); scanf("%d",newNode->score+j); } } returnhead; } 4c语言程序设计总结 1.程序调试情况 图5主菜单图示 图6查找功能示图 图7修改功能示图 2.本人计划编写一个学生成绩管理系统,主要用于管理学生基本信息及成绩信息,主要有学号、姓名、高数成绩、c语言成绩、英语成绩、计算机成绩以及总分和平均分。 当编辑计算总成绩、平均成绩以及不及格成绩和删除功能时,插入总称序时总是出现错误。 所以结果并未插入其中。 1.统计总成绩并输出程序: voidsort() { 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("class"); printf(); } 2.删除功能程序: voiddel() { structstudent*p1,*p2; longintnum; if(head==NULL) { printf("无学生记录! \n"); return; } printf("请输入您要删除的学生的学号: "); scanf("%ld",&num); p1=head; while(num! =p1->num&&p1->next! =NULL) { p2=p1; p1=p1->next; } if(num==p1->num) { if(p1==head) head=p1->next; elsep2->next=p1->next; free(p1); TOTAL_NUM--; } else printf("没有该学生记录,请核对! \n"); } 5结束语 经过几周的课程设计,我学到了很多东西: ①巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。 ②培养了我选用参考书,查阅手册及文献资料的能力。 培养独立思考,深入研究,分析问题、解决问题的能力。 ③经过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。 ④能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。 课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。 在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。 在此对老师和同学们表示感谢! 参考文献 贾宗璞,许合利主编《c语言程序设计》,北京: 人民邮电出版社,2010.9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告