C语言课程设计报告学生成绩管理系统.docx
《C语言课程设计报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生成绩管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
![C语言课程设计报告学生成绩管理系统.docx](https://file1.bdocx.com/fileroot1/2022-10/29/83c7d049-ac11-46aa-95f4-9580ec2d6683/83c7d049-ac11-46aa-95f4-9580ec2d66831.gif)
C语言课程设计报告学生成绩管理系统
河南理工大学
本科生课程设计报告
题目:
学生成绩管理系统
学生姓名:
***
学号:
***********
专业:
信管
班级:
12-1
指导教师:
安葳鹏
2013年7月10日
目录
C语言课程设计任务书3
学生成绩管理系统4
【摘要】4
1.论文题目:
学生成绩管理系统4
2.技术参数、设计步骤:
4
3.设计理论分析方法:
5
4.设计结论及分析:
5
4.1各个函数功能简单分析:
5
4.1.1主菜单函数(main):
5
4.1.2输入函数(input):
5
4.1.3输出函数(display):
6
4.1.4查找(find):
6
4.1.5修改(change):
6
4.1.6删除(del):
6
4.1.7添加(add):
6
4.1.8读入(read):
6
4.1.9保存(save):
6
4.1.10排序(sort):
6
4.1.11学号排序(sortx):
7
4.1.12不及格输出(no_pass):
7
4.1.13输出(shuchu):
7
5.参考文献:
7
6.附录:
8
6.1程序部分:
8
C语言课程设计任务书
课程名称
C语言课程设计
设计题目
学生成绩管理系统
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
某班学生成绩管理,包括以下功能:
1、从键盘输入包括学号、姓名、各门课程成绩(不少于2门),并将其保存在磁盘文件student里
2、打开文件后,计算每个人的总分和平均分,排序并保存
3、具有在文件中进行单项查询或多项查询的功能(即能够按照给定的关键字,如姓名等找出满足条件的纪录)
4、具有输出文件数据信息的功能
三、设计要求及成果
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
四、进度安排
1、选择课程设计题目,分析课题的要求
2、编程
3、编程及调试
4、写课程设计报告
5、提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据课程设计完成情况,必须有可运行的程序。
2.根据课程设计报告的质量评定。
六、建议参考资料
《C语言程序设计》,贾宗璞,电子工业出版社
学生成绩管理系统
【摘要】
通过课程设计,让我对C语言有了更深的理解,让我们把学到的理论应用于具体实践中,锻炼了我们各方面的能力,从而让我们更快提高。
通过一些简单函数的叠加构成了功能比较完备的学生成绩管理系统,从输入到处理再到输出,你将体会到完美的真正含义。
学生成绩管理系统具有以下简单功能:
1.从键盘输入包括学号、姓名、各门课程成绩(不少于2门),并将其保存在磁盘文件里
2.打开文件后,计算每个人的总分,排序并保存
3.具有在文件中进行单项查询或多项查询的功能(即能够按照给定的关键字,如姓名等找出满足条件的纪录)
4.具有输出文件数据信息的功能
1.论文题目:
学生成绩管理系统
2.技术参数、设计步骤:
本程序包含输入(input)、输出(display)、查找(find)、修改(change)、删除(del)、添加(add)、读入(read)、保存(save)等基本功能。
先分别定义各种全局函数和全局变量now,同时定义结构体及结构体数组(本程序为实现简单操作暂定义长度为3)。
其中now作为现有学生信息的一个标记作用尤为重要。
每次执行完函数就返回主菜单。
共含有四个开关语句,依次在main,display,find,change中,使界面更友好,用户操作更简单。
设计共分四步完成,依次为简单设计,添加细节,上机调试,先改错再修改。
遇到的问题可以查资料或向老师提问。
3.设计理论分析方法:
应有全局的概念,拿到题目首先进行总体功能分析,只有对整体功能有了全局把握才能去里自己用那部分知识进行编写。
这个阶段好比盖房子,如果这个阶段做好了,说明房子已改好了。
剩下任务就是怎么去装修了。
确定了大体方向接下来就是功能实现阶段了,即所谓装修阶段。
同样需要逐一地先写出能实现此功能的简单程序。
比如学生成绩管理系统,先写出最简单的输入、输出、排序等功能函数。
然后通过简单函数的互相调用、嵌套构成一个新功能的复杂函数。
淡然这中间要加很多其他东西,这就需要我们多看书,多问老师同学啦。
等到所有功能都能“正常”(按提示正确输入)实现,再考虑一些细节问题,例如:
如果所有都能简单运行,可是有些时候有些输入错误或正确它都运行,这就需要我们通过改写程序使之在正确输入时运行,在错误输入时给出出错提示。
就像性别问题,输入M/W时运行,输入其他就不让它运行,同时给出正确输入的提示。
这样就好很多了。
后面的一一修改就可以了。
同时还要考虑到见名知意,如:
输入(input)、输出(display)、查找(find)、修改(change)、删除(del)、添加(add)、读入(read)、保存(save)、排序(sort)、按学号排序(sortx)、不及格(no_pass)、输出(shuchu)。
当然还有其他问题需要注意,在这里不一一细说。
4.设计结论及分析:
4.1各个函数功能简单分析:
4.1.1主菜单函数(main):
主函数为一个死循环,前几个是功能实现函数,只有9是退出。
也就是说每执行完一个函数,他就自动返回主菜单。
只有选择9(退出)时才跳出循环。
当然每选择一次它就自动清空屏幕,所以运行结果更直观。
4.1.2输入函数(input):
先输入要添加的学生数量n,同时now标记现有学生的数量。
执行n次循环,输入n个学生的信息;其中输入性别时只有为M/W(M为男,W为女,均大写)时才跳出循环。
如果出错,有提示信息。
最后自动求和并保存。
4.1.3输出函数(display):
三部分1.按总分名次输出2.按学号顺序输出3.输出有不及格课程的学生
4.1.4查找(find):
查找分为按学号查找和按姓名查找,查找成功就输出,查找失败就返回,输出提示信息继续输入。
4.1.5修改(change):
输入学号,然后选择修改项,修改完后,提示用户“是否继续修改”,只有输入N/n时退出,输入其它字符都是继续。
4.1.6删除(del):
输入要删除学生的学号,如果找到就删除其信息,并提示用户删除成功,如果没找到就提示用户删除失败。
4.1.7添加(add):
根据信息总容量(结构体数组的长度)和第一次输入的信息量判断是否能继续添加。
如果添加后信息已满,则提示用户不能继续添加,同时屏蔽了添加选项。
4.1.8读入(read):
从文件读入,避免了用户多次大量输入数据。
4.1.9保存(save):
每次执行完修改信息包括添加、录入、修改、删除等都需要保存信息。
当然在每个修改函数最后都需要调用一下保存函数。
4.1.10排序(sort):
按总成绩名次排序(冒泡法排序)。
n为要排序的学生数量,为形参。
4.1.11学号排序(sortx):
按学号先后顺序进行排序(冒泡法排序)。
n为要排序的学生数量,为形参。
4.1.12不及格输出(no_pass):
输出不及格的学生信息。
4.1.13输出(shuchu):
输出第n个学生信息。
5.参考文献:
《C语言程序设计》,贾宗璞,电子工业出版社
6.附录:
6.1程序部分:
#include
#include
#include
#include
#definemax3
voidinput();
voiddisplay();
voidfind();
voidchange();
voiddel();
voidread();
voidsave();
voidadd();
voidsort(intn);
voidsortx(intn);
voidshuchu(intn);
voidno_pass();
intnow=0;/*标记位*/
structstudent
{
intnum;
charname[20];
charsex;
intNO;
floatscore1;
floatscore2;
floatsum;
};structstudentstu[max+1];
voidmain()/*主函数(菜单)*/
{
intas;
do
{
printf("\n\t\t\t欢迎使用学生成绩管理系统\n\n");
printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.查找学员信息\n\t\t\t\t4.修改学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.添加学员信息\n\t\t\t\t7.读入学员信息\n\t\t\t\t8.保存学员信息\n\t\t\t\t9.退出");
printf("\n\n\n\t\t\t\t请选择");
scanf("%d",&as);
switch(as)
{
case1:
system("cls");input();break;
case2:
system("cls");display();break;
case3:
system("cls");find();break;
case4:
system("cls");change();break;
case5:
system("cls");del();break;
case6:
system("cls");add();break;
case7:
system("cls");read();break;
case8:
system("cls");save();break;
case9:
system("cls");exit(0);
}
}
while
(1);
}
voidinput()/*输入函数*/
{
inti,n,j;
for(i=0;;i++)
{
printf("\n请输入添加的学生数量(在%d以内):
",max-now);
scanf("%d",&n);
if(n>max)printf("\n请确保添加的数量在%d以内\t!
!
!
",max);
if(n<=max)break;
}
now=n;
for(i=0;i{
printf("\n\t\t\t\t输入第%d个学生的信息\n",i+1);
printf("\n输入学生的学号:
");
scanf("%d",&stu[i].num);
getchar();
printf("\n输入学生的姓名:
");
gets(stu[i].name);
printf("\n请输入学生的性别(M/W):
");
for(j=0;;j++)
{
stu[i].sex=getchar();
if(stu[i].sex=='M'||stu[i].sex=='W')break;
els