C语言课程设计学生考勤系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. C语言程序设计
课程设计报告
设计题目:学生考勤系统设计
专业微电子科学与工程
班级微电131
学生赵杨怡
指导教师
年学期
一、总体设计
1.程序的总体设计
◎确定界面,使用户可选择操作项目(录入,修改,查询,评分)。
◎录入功能:使用结构体,要求用户输入姓名、性别、学号、日期、节次、当前出勤情况等信息,并写入文件。
◎修改功能:使用户输入学号,姓名其中一项可以修改考勤其信息。对于修改功能的实现,是先将所有文件内容读入到内存中,然后修改考勤值,最后再重新覆盖写入文件。
◎查询模块:使用字符串比较函数,利用循环找到对应结构体数组元素,然后输出需要信息。对于查询功能的实现,同修改,是先将所有文件内容读入到内存中,然后查找到其中某项,最后输出到
屏幕。
◎评分模块:系统根据总的应道考勤数按照百分制,求出每个学生的分数,并输出到屏幕。
2. 数据结构
学生信息用结构体记录,包括姓名(字符数组)、性别(字符型)、日期(年月日三个字符数组)、节次(整型)、出情况(整型)。
3. 函数原型声明
void main() //主函数
void input(); //录入数据函数
void change(); //修改数据函数
void search(); //查询数据函数
void evaluate(); //计算总评函数
二、详细设计
1.main( )函数
流程图:
2.input() 函数
流程图:
3. change()函数
4. search()函数
流程图:
5. evaluate()函数
流程图:
三、测试及调试(测试方案、存在的问题及解决方法)
测试方案:按照每个函数功能进行测试,在做完每个函数对其进行测试,主函数测试,先将所有需要的功能模块函数设置为空,每个函数用一个printf语句来测试主函数。
1.存在问题:开始将生日定义为字符数组,当用scanf来输入年月日时,年月
日之间用空格分隔,但在输出时发现年月日出现错误。
分析原因:用scanf输入年月日时,系统会把用来分隔的空格当做字符读入。解决方法:将年月日定义为整型,这样就可以用scanf输入,用空格隔开。
2.存在问题2:在查找数据时,需要先将所有数据读入一个结构体数组,在读
取后未关闭文件,执行查找时查找不到相关信息。
分析原因:再利用for循环读取全部文件内容后,文件指针将会移至文件末尾,这样再执行查找时就会从文件末尾开始,显然不符合要求,所以会出现错误。
解决方法:在读取完数据后先关闭文件,在查找时再次打开文件,这时文件指针就会指向文件开头。
3.存在问题3:再多个使用getchar或者gets输入的时候,会出现直接跳过
输入的情况。
分析原因:在使用getchar或者gets输入的时候,系统会将前一步用来确认执行的回车当成字符读入,导致跳过该步输入。
解决方法:再getchar或者gets前面加上getchar()语句,读掉回车,下面的getchar或者gets就可以正常输入。
四、小结
通过编写该程序,熟悉了C语言的基本语法,选择,循环等结构,深入练习了函数的调用方法,和文件的读写方法,熟悉了结构体的使用,更加深化了面向过程语言思想,和一些基本算法。
通过对程序的后期调试,熟悉了C常见错误,锻炼了思维的严密性,和完备性。
通过对程序的注释和画流程图,形成了一套自己编程的风格,和清晰地思
路,使思维更加条理化,清晰化。
附件:主要源程序代码(需打印)