课程设计报告
课程名称程序设计课程设计
选题名称学生成绩管理系统
班级XXXXXXXXX姓名XX学号XXXXXXX
实验组别XXXX同组实验者XXXXX
完成时间XXXXXXXXXXXXXXXXXXXXXXX
指导教师XXXX
自动生成目录
1、课程设计任务
1.1、题目
学生成绩管理系统
1.2、要求
(1)使用addStu函数实现增加学生信息及成绩的功能
(2)使用lookStu函数实现根据学号查找学生信息及成绩的功能
(3)使用delStu函数实现根据学号对学生信息及成绩进行删除功能
(4)使用outStu函数实现输出所有学生信息及成绩功能
(5)使用setStu函数实现根据学号修改成绩的功能
(6)使用sortStu函数实现学生信息及成绩的筛选排序的功能
(7)使用stuAvg函数实现计算各科成绩的平均分功能
(8)使用menu函数创建菜单
2、总体设计
2.1、功能模块设计
根据学生成绩管理系统的功能要求,功能模块的组成框图如图2-1所示:
图2-1学生成绩管理系统功能组成框图
2.2、所有功能模块的流程图
(a)增加学生信息及成绩功能流程图如图2-2所示:
图2-2增加学生信息及成绩功能流程图
(b)根据学号查找学生信息及成绩功能流程图如图2-3所示:
图2-3根据学号查找学生信息及成绩功能流程图
(c)根据序号删除学生信息及成绩功能流程图如图2-4所示:
图2-4根据学号删除学生信息及成绩功能流程图
(d)输出全部学生信息及成绩功能流程图如图2-5所示:
图2-5输出全部学生信息及成绩功能流程图
(e)根据学号修改学生成绩功能流程图如图2-6所示:
图2-6根据学号修改学生成绩功能流程图
(f)学生信息及成绩筛选排序功能的流程图如图2-7所示:
图2-7学生成绩的筛选及排序功能流程图
(g)筛选并计算各科平均分功能的流程图如图2-8所示:
图2-8筛选并计算各科学生成绩平均分功能流程图
3、详细设计
3.1、程序中各变量、常量及函数说明
设计存放学生信息的结构体类型:
typedefstructstudent{
intsid;//学号
charsclass[10];//班级
charmajor[10];//专业
charsName[10];//姓名
intscores[4];//成绩
}STU;
学生的基础信息,scores数组长度为4,前三位用来存放学习的三门课程获得的分数,最后一位存放每个学生的总分。并给该结构体类型取了别名为STU;
charfile[]="d:\\stu.txt";
这是全局变量,将默认的文件位置字符串存放在字符数组中;
#defineMAX
这是一个常量,主要在排序时使用,每个班的人数最多人
3.2、子模块的设计与实现
(a)增加学生信息及成绩功能
录入学生的基础信息,学号,姓名,专业,班级,和学生成绩信息:C语言成绩,数据库成绩和JAVA成绩。
对录入的信息进行判断,需要判断该学号是否不存在以及输入的成绩信息是否都在0到之间。上述条件只要有一个不不满足条件,则增加学生信息和成绩失败。
(b)根据学号查找学生信息及成绩功能
输入需要查找成绩的学生学号,进入文件读取并匹配,匹配成功则输出并结束查询,如果文件读取结束都没有匹配成功,则代表该学生成绩还未录入。
(c)根据序号删除学生信息及成绩功能
输入需要删除成绩的学生学号,首先判断该学生成绩是否存在,如果存在则将文件中的数据,除了该学号学生的信息存入临时文件,全部读取完成之后,将原文件删除,将临时文件改成原文件的名字。
(d)输出全部学生信息及成绩功能
从文件中依次读取相关的学生信息和成绩。
(e)根据学号修改学生成绩功能
输入需要修改成绩的学生学号,判断学号是否存在,若存在,依次从原文件中取出学生信息记录,将学生的学号和需要修改的学号进行匹配,匹配成功则选择需要修改成绩的课程,使新的成绩替换取出的原成绩,将修改后的记录写入临时文件中。如果和需要修改的学号不匹配,则直接将记录写入临时文件。
将原文件的内容全部写入临时文件之后,将原文件删除并将临时文件名称改成原文件名称。
(f)学生信息及成绩筛选排序功能
输入要筛选出信息并进行排序的专业班级,筛选出信息后,选择排序的排序条件和排序的顺序,使用选择排序方法对筛选的数据按照条件进行排序并输出。
(g)筛选并计算各科平均分功能
选择筛选的条件,进行筛选条件输入。从文件中依次读取数据,判断读取的数据是否满足筛选条件,满足则进行各科成绩的分别累加和人数计算。输出时需要将总分除以人数来计算平均分。
4、调试与测试
4.1、调试方法与步骤
第一步:选择增加4位学生信息及成绩,输入正确的学生信息及成绩。
第二步:选择增加1位学生信息及成绩,将第一步信息再输入一遍。
第三步:提示录入信息有误,重新输入,输入不正确的成绩信息。
第四步:提示录入信息有误,重新输入,输入正确的学生信息。
第五步:选择查找学生信息及成绩功能,输入查找的学生学号。
第六步:选择输出全部学生信息及成绩功能。
第七步:选择修改学生成绩,输入需要修改成绩的学号,选择修改成绩的课程,输入修改的成绩。
第八步:选择对学生信息和成绩进行筛选排序,输入筛选的专业和班级,选择按照总分降序排序。
第九步:选择对学生成绩进行筛选计算平均分,选择计算班级的平均分,输入专业和班级。
第十步:选择删除学生信息及成绩,输入需要删除的学生学号。
第十一步:选择退出系统。
4.2、测试结果的分析与讨论
第一步测试过程:
目录选择:1
输入录入的学生数量:4
输入学生的信息及成绩:
1刘欣计算机
2王佳计算机
3黄欣计算机
4吴小蕾计算机
运行结果如图4-1所示:
图4-1第一步测试运行结果图
第二步测试过程:
目录选择:1
输入录入的学生数量:1
输入学生的信息及成绩:
4吴双节计算机
运行结果如图4-2所示:
图4-2第二步测试运行结果图
第三步测试过程:
第二步运行提示错误,需要重新输入学生信息及成绩:
5吴双节计算机
运行结果如图4-3所示:
图4-3第三步运行结果截图
第四步测试过程:
第三步运行提示错误,重新输入学生信息及成绩:
5吴双节计算机
运行结果如图4-4所示:
图4-4第四步运行结果截图
第五步测试过程:
目录选择2
输入查找的学生学号:4
运行结果如图4-5所示:
图4-5第五步运行结果截图
第六步测试过程:
目录选择:4
运行结果如图4-6所示:
图4-6第六步运行结果截图
第七部测试过程:
目录选择:5
输入需要修改成绩的学生学号:5
选择需要修改成绩的课程:2
输入修改的成绩:91
运行结果如图4-7所示:
图4-7第七步运行结果截图
第八步测试过程:
目录选择:6
输入筛选出信息的班级所属的专业:计算机
输入筛选出信息的班级:
选择排序条件:2
选择排序的顺序:0
运行结果如图4-8所示:
图4-8第八步运行结果截图
第九步测试过程:
目录选择:7
选择筛选的条件:3
输入班级:
输入班级所属专业:计算机
运行结果如图4-9所示:
图4-9第九步运行结果截图
第十步测试过程:
目录选择:3
输入需要删除成绩的学生学号:5
运行结果如图4-10所示:
图4-10第十步运行结果截图
第十一步测试过程:
目录选择:0
运行结果如图4-11所示:
图4-11第十一步运行结果截图
4.3、测试过程中遇到的主要问题及采取的解决措施
1打开文件,若文件不存在,就会打开失败,如果手动创建文件比较麻烦,只需要在打开文件时将打开方式加上t就可以了。
例如:a----atr-----rtw-----wtr+----rt+
2文件写入时,使用fwrite函数时,需要配合fflush函数,才能将文件输入缓冲区的内容写入文档中。
3文件读出时使用feof函数判断是否结束时,最后一组数据将会被重复输出,需要将循环条件改成fread函数。
5、源程序清单
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
6、课程设计总结
在刚开始着手编写系统程序时,对于系统的功能设计方面有一点模糊,在同学的建议最后选择了7个功能进行主要设计。在详细设计主要代码时也在遇到了许多的错误,其中包括文件打不开,写入文件的信息没有写入成功,读出数据重复等问题。经过书本查阅和网络搜索之后,这些问题都得到了解决。现在能对学生信息进行增加、删除、修改、查看这些基本的操作之外,还可以根据条件计算各科成绩的平均分,并对学生信息及成绩进行筛选后排序输出。
本次实验中,不仅对课程里学习的知识进行了复习和巩固,也对没有接触或者没有深入讲解的只是进行了自学,将自学的知识进行了使用,增加了对不同知识的理解,了解不同的知识主要的应用领域。
7、致谢
能够完成这次课程设计必须感谢数据结构课程设计指导老师XXX老师,老师提供的系统内容介绍和功能举例,为本系统的功能设计奠定了很好的基础,另外还要感谢我的室友给我的系统功能设计提供建议,并对系统功能的详细设计步骤增加更加详细的提议,让我的系统更加完善。
8、参考文献
[1]谭浩强.C程序设计(第五版)[M].北京:清华大学出版社,:-.
[2]K.N.King.C语言程序设计:现代方法.吕秀锋,黄倩.北京:人民邮电出版社,.
[3]StephenPrata.CPrimerPlus(第6版).姜佑.北京:人民邮电出版社,.
[4]李文娟,郭永红.基于C语言的学生成绩管理系统的设计与实现[J].中央民族大学学报:自然科学版,(2):7.
[5]毛宇昂,黄超.学生成绩管理信息系统设计研究[J].科技风,,(1):.
[6]宋福英.C语言基于结构体的学生信息管理系统实现[J].计算机时代,(3):4.
[7]钟玲玲,刘冬雪,黄小平.基于C语言的学生信息管理系统设计与实现[J].河南科技学院学报:自然科学版,,47(4):7.
[8]黄橡丽,周艳聪,孟巍.数据结构在学生成绩管理系统设计中的应用[J].数字技术与应用,,37(11):2.
[9]周轩.网络教学平台在高职院校中的应用与研究——以《C语言程序设计》课程为例[J].南方农机,,50(19):2.
[10]彭莉.基于C语言的学生成绩管理系统的实现[J].武汉工程职业技术学院学报,,():36-39.