C语言学生成绩管理系统设计报告.docx
《C语言学生成绩管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
C语言学生成绩管理系统设计报告
课程设计报告
课程名称《C语言程序设计》
课题名称学生成绩管理系统
专业网络工程
班级2011级网络工程1班
学号
姓名
目录
1、C语言课程设计任务书1
1.1、题目与要求1
1.2、本程序涉及的知识点1
2、总体设计1
2.1、功能模块设计1
2.2、所有功能模块的流程图1
3、详细设计3
3.1、输入函数3
3.2、输出函数3
4、调试与测试:
3
4.1、调试方法与步骤:
3
4.2、测试结果的分析与讨论:
3
4.3、测试过程中遇到的主要问题及采取的解决措施:
4
5、源程序清单和执行结果4
6、C程序设计总结5
7、致谢5
1、C语言课程设计任务书
1.1、题目与要求
本课程设计任务是编写学生成绩管理系统程序。
要求完成应用程序运行后,要在屏幕上显示一个菜单、要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
用户进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
1.2、本程序涉及的知识点
变量的定义、输入和输出函数、数据结构的定义、if语句、switch语句、转意字符的使用等等。
2、总体设计
2.1、功能模块设计
根据课程设计题目的功能要求,各个功能模块的组成框图如下:
输入密码进入菜单
根据提示选择操作项
进行操作
用continue语句实现循环操作
2.2、所有功能模块的流程图
3、详细设计
模块功能说明:
如函数功能、入口及出口参数说明,函数调用关系描述等;
3.1、输入函数及写入文件
(1)、函数原形:
scanf(“%d”,&),fprintf(fp,“%ld%s%s”,stu[i].studentID,stu[i].studentName,stu[i].studentSex),
(2)、功能:
scanf()函数利用取地址符号&完成对程序中某个变量的赋值,进而程序中判断循环的功能。
Fprintf()函数利用write将数据写入文件中
(3)、变量及类型:
intn,m:
整型形参变量,接收函数传过来的数字。
inti,j,k:
循环控制变量。
(4)、说明:
输入字符后需要按回车键,待系统做出判断后往下执行。
3.2、输出函数
(1)、函数原形:
printf(“%d”,x),fscanf(fp,“%ld%s%s”,stu[i].studentID,stu[i].studentName,stu[i].studentSex),
(2)、功能:
输出相关提示信息及最后结果。
(3)说明:
输出时要把要输出的信息用双引号括起来,输出数字时要在其代表变量前加逗号。
4、调试与测试:
4.1、调试方法与步骤:
进入第一步出现如下信息:
输入密码(密码是:
123)
选择y后,进入第二步。
用户输入要操作的选项。
第三步:
执行操作
用户输入数据进行操作
第四步:
输出结果
屏幕显示出用户输入的数据
4.2、测试结果的分析与讨论:
(测试要写出测试用例及每个用例结果的的截图)
5、源程序清单和执行结果
(清单中应有足够的注释)
#include
#include#include
#defineN30
typedefstructstudent//创建学生信息结构体
{
longstudentID;
charstudentName[10];
charstudentSex[5];
intscore[3];
intsum;
floataver;
}STUDENT;
voidMenu(void);//菜单功能
voidinputscore(STUDENTstu[],intn,intm);//从键盘输入n个学生的学号、姓名、性别、各科成绩、总分、平均分到结构体stu中
voidwritetofile(STUDENTstu[],intn,intm);//输入学生的学号、姓名、性别、各科成绩、总分、平均分,并保存记录到文件
intreadtofile(STUDENTstu[],intm);//函数功能:
从文件中读出学生的学号、姓名、性别、各科成绩、总分、平均分到结构体数组stu中并返回学生数
voidprintscore(STUDENTstu[],intn,intm);//函数功能:
输出n个学生的学号、姓名、性别、各科成绩、总分、平均分到屏幕上
voidnamepaixu(STUDENTstu[],intn,intm);//函数功能:
选择排序法按姓名升序排序
intnamechaxun(STUDENTstu[],charname[],intn);//函数功能:
查找输入的姓名
voidintput(STUDENTstu[],inti);//函数功能:
输入待查信息
voidxiugai(STUDENTstu[],inti,intk);//函数功能:
修改学生成绩
voidhighorlow(STUDENTstu[],intn,intm);//函数功能:
计算语文、数学、英语的最高分和最低分
voidtotaloraver(STUDENTstu[],intn,intm);//函数功能:
计算语文、数学、英语的总分和平均分
voidpassorbast(STUDENTstu[],intn,intm);//函数功能:
统计语文、数学、英语的及格人数及优秀人数
voidpaiming(STUDENTstu[],intn);//函数功能:
计算每个人的总成绩、平均分、排名,并输出到屏幕上
voidaverage(STUDENTstu[],intn);//函数功能:
按平均分由高到低的顺序显示全部学生的学号和姓名voidnumber(STUDENTstu[],intn,intm);
voiddayin();//函数功能:
将各科最高分、最低分、总分、平均分、及格人数、优秀人数显示到屏幕上
//..............................................................
intmain()
{
STUDENTstu[N];
intch,mm,i=0;
intn,k;
charname[10];
printf("请输入密码:
");//密码是123
while
(1)
{
i++;
scanf("%d",&mm);
if(mm==123)
break;
elseif(i==3)
exit(0);
else
printf("密码错误,请重新输入:
");
}
Menu();
do{
printf("请选择序号:
");
scanf("%d",&ch);
switch(ch)
{
case1:
printf("Howmanystudents?
:
");
scanf("%d",&n);
inputscore(stu,n,3);
writetofile(stu,n,3);
break;
case2:
n=readtofile(stu,3);
printscore(stu,n,3);
break;
case3:
n=readtofile(stu,3);
namepaixu(stu,n,3);
printscore(stu,n,3);
printf("输入你想查寻的姓名:
");
scanf("%s",&name);
i=namechaxun(stu,name,n);
intput(stu,i);
break;
case4:
n=readtofile(stu,3);
namepaixu(stu,n,3);
printscore(stu,n,3);
printf("输入你要修改的人的姓名:
");
scanf("%s",&name);
i=namechaxun(stu,name,n);
printf("你想要修改的科目:
\n");
printf("1:
语文\n2:
数学\n3:
英语\n");
printf("请选择:
");
scanf("%d",&k);
xiugai(stu,i,k);
break;
case5:
n=readtofile(stu,3);
highorlow(stu,n,3);
totaloraver(stu,n,3);
passorbast(stu,n,3);
dayin();
break;
case6:
n=readtofile(stu,3);
paiming(stu,n);
break;
case7:
n=readtofile(stu,3);
average(stu,n);
break;
case8:
n=readtofile(stu,3);
number(stu,n,3);
break;
//.........................................................................................................
case0:
printf("谢谢使用,再见\n");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}while
(1);
return0;
}
6、C程序设计总结
本程序在刚开始调试时有许多错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。
在刚开始的几次调试中曾经出现过不能运行、不能进行循环输入、不能进行数据储存、不能输出有效的数据等等问题。
经过我的努力及同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善。
现在它能进行了数据输入储存、数据打印等等。
在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学学到了课本上没有的知识。
从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。
除此之外,我还得到了一些有用的教训:
写程序时必须要细心,不能输错一个字符标点,就连花括号的输入也得注意。
在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。
7、致谢
能够完成这次课程设计必须感谢C语言课程老师江家保、王东良、李飞龙同学(他们帮我修改了几处重要错误,同时启发我完善了该程序的功能)。