C语言课程设计fan.docx
- 文档编号:23415034
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:26
- 大小:299.29KB
C语言课程设计fan.docx
《C语言课程设计fan.docx》由会员分享,可在线阅读,更多相关《C语言课程设计fan.docx(26页珍藏版)》请在冰豆网上搜索。
C语言课程设计fan
河南理工大学
计算机科学与技术学院
课程设计报告
2012—2013学年第一学期
课程名称C/C++高级语言程序设计课程设计设计题目班级成绩管理系统
学生姓名范孟会
学号311109030103
专业班级信息管理与信息系统11-01班
指导教师于金霞
2012年9月20日
目录
一、课程设计问题描述1
1、课程设计题目1
2、设计任务要求1
二、总体设计1
1、算法提示:
1
2、总流程图2
3、统计函数流程图2
三、详细设计4
1、程序的模块组成4
2、各个程序的功能介绍4
3、源代码4
四、程序运行结果测试与分析11
1.系统调试11
2.系统结果分析11
3.系统说明12
五、结论与心得15
六、参考文献16
一、课程设计问题描述
1、课程设计题目
班级成绩管理系统
对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
2、设计任务要求
(1)本系统采用一个结构体数组,每个数据的结构应当包括:
学号、姓名、M门课程名称。
(2)本系统显示这样的菜单:
请选择系统功能项:
a、成绩录入
b、成绩显示
c、成绩保存
d、成绩排序
e、成绩修改(要求先输入密码)
f、成绩统计
1)显示每门课程成绩最高的学生的基本信息
2)显示每门课程的平均成绩
3)显示超过某门课程平均成绩的学生人数
g、退出系统
1)执行一个具体的功能之后,程序将重新显示菜单。
2)将学生成绩保存到文件中。
二、总体设计
1、算法提示
(1)数据结构结构体类型数组。
(2)数据库结构下表构成该系统的基本数据库。
姓名
学号
课程名称1
课程名称2
●●●●●●
char
char
float
float
(3)学生信息结构数组
structstu
{
charname[20];
intnum;
intscore[M];
};
(4)测试数据:
学生人数:
N=10
课程门数:
M=4
课程名:
数学、语文、英语、政治
2、总流程图
3、统计函数流程图
I=i+1
I=0;sum=0
↓
Average=Sum/I
Sum=sum+s[i].score
↓
K=k+1
↓
↓
↓
J=0k=0
输出平均成绩
J=j+1
调用show3函数
三、详细设计
1、程序的模块组成
第一个模块先定义好一些必要的全局变量以及调用的函数和结构体数组。
第二个模块设计一个菜单函数menu();实现能供用户选择功能项。
第三个模块用enter()函数实现成绩的输入。
第四个模块用save()函数实现成绩的保存。
第五个模块用print()函数实现成绩输出。
第六个模块用cort()函数实现成绩排序功能。
第七个模块用modify()函数实现成绩修改功能。
第八个模块用count()函数实现成绩统计功能。
2、各个程序的功能介绍
1)为便于用户使用先定义一个常数N,表示人数学生信息的结构体数组以及调用功能项的函数。
2)在menu()函数中,用switch来选择要执行的功能项用dowhile实现每种具体功能后能返回菜单。
3)Enter()函数用scanf依次输入学生信息,在输入多门成绩成绩时用for循环来实现结尾调用save()函数保存。
4)Print()函数中为使界面美观,对学生成绩用%5d输出且用换行实现学生信息整齐排列。
5)Save()函数使用文件保存。
6)Cort()函数先定义choice1,输出想要排序的科目的序号,用选择排序法实现函数学生成绩的排序。
7)Modify()函数先定义好一个密码以及flag=0。
如果输入的密码错误则flag=1,用dowhile实现是否重新输入密码,密码准确后调用modi函数实现修改功能。
8)Count()函数用menu1函数实现一个菜单功能。
用switch实现,用户选择想执行的功能。
从而调用Show1()Show2()Show3()
3、源代码
#include
#include
#defineM4/*课程数*/
#defineNUM3/*人数*/
#defineNULL0
#include
#include
intavar[M];
structstu
{
charname[20];
intnum;
intscore[M];
};
voidenter(structstus[],intn);/*进入*/
voidprint(structstus[],intn);/*输入文件*/
voidsave(structstus[],intn);/*保存文件*/
voidsort(structstus[],intn);/*排序*/
voidmodify(structstus[],intn);/*修改*/
voidcount(structstus[],intn);/*统计*/
intmenu();
voidmain()
{
voidclrscr();
structstustudent[NUM];
for(;;)
switch(menu())
{
case1:
enter(student,NUM);break;
case2:
print(student,NUM);break;
case3:
save(student,NUM);break;
case4:
sort(student,NUM);break;
case5:
modify(student,NUM);break;
case6:
count(student,NUM);break;
case7:
return;
}
}
intmenu()
{
intchoice;
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("学生人数NUM课程数学0语文1英语2政治3\n");
printf("***************************************************************\n");
do
{
printf("\nchoice1-7:
");
scanf("%d",&choice);
}
while(choice<1||choice>7);
returnchoice;
}
voidenter(structstus[],intn)/*成绩录入*/
{
charc;
inti=0;
intj;
do
{
printf("pleaseenterthemessage:
\n");
getchar();
printf("entername:
\n");
scanf("%s",s[i].name);
printf("enternum:
\n");
scanf("%d",&s[i].num);
printf("enterscore:
\n");
for(j=0;j scanf("%d",&s[i].score[j]); printf("按Y继续录入,按N结束录入! "); getchar(); scanf("%c",&c); if(c! ='Y'&&c! ='y')/*可以选择数否继续录入*/ break; ++i; } while(i! =n); } voidsave(structstus[],intn) { FILE*fp; inti; charsave[20]; printf("enterthefilename: "); scanf("%s",save); if((fp=fopen("stu-list","wb"))==NULL) { printf("cannotopenfile\n"); return; } else { for(i=0;i if(fwrite(&s[i],sizeof(structstu),1,fp)! =1); printf("filewriteerror\n"); fclose(fp); printf("success\n"); } } voidprint(structstus[],intn)/*成绩显示*/ { inti,j; for(i=0;i { printf("数学语文英语政治\n"); printf("%s",s[i].name); printf("%d",s[i].num); for(j=0;j printf("%5d",s[i].score[j]); printf("\n"); } } voidsort(structstus[],intn)/*成绩排序*/ { inti,j,min,temp,k; printf("pleasechoicesubject1-4: \n"); scanf("%d",&k); for(i=0;i { min=i; for(j=i+1;j if(s[min].score[k]>s[j].score[k]) { temp=s[min].score[k]; s[min].score[k]=s[j].score[k]; s[j].score[k]=temp; } } printf("\nThesortednumbers: \n"); for(i=0;i printf("%5d",s[i].score[k]); printf("\n"); } voidcount(structstus[],intn)/*成绩统计*/ { voidshow1(structstua[],intn1); voidshow2(structstua[],intn1); voidshow3(structstua[],intn1); intmenu1(); for(;;) switch(menu1()) { case1: show1(s,n);break; case2: show2(s,n);break; case3: show3(s,n);break; case4: return; } } intmenu1() { intchoice1; printf("\n**********************************\n"); printf("1: 显示每科成绩最高的学生信息\n"); printf("2: 显示每科平均成绩\n"); printf("3: 显示超过某门课程平均成绩的学生人数\n"); printf("4: 退出n"); printf("**********************************\n"); do { printf("\nEntertouchoice1(1-4): "); scanf("%d",&choice1); } while(choice1<1||choice1>4); returnchoice1; } voidshow1(structstua[],intn1) { intk,i,j,c=0; printf("pleaseenterthesubjectnum: "); scanf("%d",&k);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 fan