东北电力大学理学院C语言课程设计报告.doc

上传人:z**** 文档编号:89806272 上传时间:2023-05-13 格式:DOC 页数:24 大小:201KB
返回 下载 相关 举报
东北电力大学理学院C语言课程设计报告.doc_第1页
第1页 / 共24页
东北电力大学理学院C语言课程设计报告.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《东北电力大学理学院C语言课程设计报告.doc》由会员分享,可在线阅读,更多相关《东北电力大学理学院C语言课程设计报告.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、优质文本?C语言?课程设计报告学生姓名:学 号:学 院:理学院班 级:题 目:学生考勤系统指导教师: 李鹏松 职称: 教 授 胡建平 副教授 朱振菊 实验师 2015年07月13日优质文本目 录目录I一、选题背景11.1 课题背景.11.2 编写目的.1 1.3 本课题所需解决的问题.21.4 技术要求2二、算法设计22.1 问题分析2 2.1.1 题目.3 2.1.2 功能要求.32.2 需求分析.3 2.2.1 功能需求.3 2.2.2 设计方案.4 2.2.3 流程图.5三、程序设计及功能说明63.1 主要自定义函数分析.63.1.1 select函数.6 3.1.2 check函数.7

2、3.1.3 manage函数.83.1.4 modify函数.103.1.5 calculate函数.11四、结果分析.124.1 运行结果12五、总结及心得体会.14参考文献.15源程序.16优质文本一、 选题背景1.1课题背景程序实践是本科生重要教学环节之一。通过程序实践,强化学生的计算机应用技能,使学生验证、稳固和充实所学的理论知识, 加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力 学生考勤管理程序是学校管理工作中一个比拟重要的任务,过多的学生考勤管理程序工作给学校管理人员带来了很大麻烦的。虽然原始的记录方法在一定的程度上可以解决问题,可是现在计算机已经走到了我们的生活,

3、它的缺乏之处就显而易见了。 学生考勤管理程序,是一个对于学生考勤的管理系统, 不仅大大减少了考勤管理人员的大量的工作,而且还方便了班级和学校对学生出课率的查询,只要通计算机登入本系统就能及时修改、更正学生的考勤信息,使信息真实、有效。这样节省了大量人力物力,节省了珍贵的时间,大大提高了工作效率.用C语言进行了该系统的编写。操作上力争实现人性化、合理化,满足学校、老师、非计算机管理人员的使用和查看1.2编写目的作为用户与该系统软件开发维护人员共同遵守的软件需求标准说明,本?软件需求说明书?的主要目的是明确所要开发的软件所应具有的功能、性能,使系统分析人员和软件设计人员能清楚地了解用户的需求,并在

4、此根底上进一步提出概要设计和完成后续设计与开发工作,为软件开发范围、业务处理标准提供依据,也是应用软件进行合同最终验收的依据。 系统对学校全体学生的资料和考勤情况进行管理,通过每日的打卡把出勤信息输入到学校的考勤管理中心,保存学生每日的的出勤情况,以便于统计学生的出勤情况。同时方便班长查阅,即节省了人力,又省去了中间的很多容易出错的步骤。让学校学生的考勤管理更具有透明性,且方便管理。 此外系统还涉及系统数据平安和用户管理的问题、各种代码使用和维护问题、数据平安和数据维护问题、统计报表生成和输出等问题,因此还要求系统具有系统管理和事务处理功能。总而言之,要求通过系统的开发,到达系统工程的总体目标

5、是:在整个系统的框架下,结合学生在学校的实际出勤情况的需要实现对数据更新、数据查询、数据统计、数据分析等功能进行有效的管理。并提供用户友好接口,满足学校管理需求的软件,提高学校对学生的管理效率,从而完善学校的管理制度。 预期的读者就是各类学校的系统管理员或系统求购者,使用前仔细阅读此软件说明是很必要的,以便更好的使用、管理和维护此系统!1.3本课题所需解决的问题当代大学课堂中的考勤方式多为课堂上教师点名的模式,这种方法是一种浪费教育资源的表达。老师点名一方面是为了留住学生,另一方面也是为学生负责,对那些出勤的学生负责。但是点名是一件消耗时间的事情,老师在讲台上逐个地念名字,同学答到,至少耗时五

6、分钟。然而,学生在讲台下,那么需要十分认真地等念到自己的名字,这严重浪费了课堂时间和课堂精力。如果学生用自主签到作为考勤根本方式,可以变被动为主动,这样不仅仅节省了课堂时间,提高了课堂学习效率;还提高学生自主管理意识和能力。1.4技术要求 该系统是基于C语言这门根底的计算机语言设计开发的,该系统的制作需要我们对于指针,结构体能够熟练地应用,从而实现对于文件的修改、储存、读取等等。该系统工具采用Micrisift Visual C+6.0。首先设计一个教师用的信息输入界面,利用所学c语言知识编写程序,有运用算法,用N-S流程图表示算法,还有c语言各种数据类型运算符表达式等,其中有整形变量的应用来

7、输入输出成绩等,字符型变量等,还有运用c语言顺序程序设计中的各种函数表达等,并且运用了选择结构,循环结构的运用,运用数组的应用来表出数据,应用函数参数、函数的值、函数的调用、还有函数的嵌套调用递归调用来计算学生最后输出的成绩等,应用了局部变量和全局变量。应用结构体变量、结构体数组等来做该系统。并且应用文件的各种知识,例如文件的读写、文件的定位、出错的检测等工具。 二、算法设计 2.1 问题分析2.1.1题目 学生考勤系统2.1.2功能要求 学生考勤系统应包含各班学生的全部信息,每个学生是一条记录,包括姓名,性别,学号,出勤情况等. 本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定

8、的考勤评分标准自动给出每个学生的考勤分数.2.2 需求分析2.2.1 功能需求为了解决人工操作在学生考勤中存在的缺乏,从学校管理人员能够更容易、更方便地使用计算机对学生进行管理,以实现无纸化操作的方面进行分析。学生考勤管理系统能够提供学生考勤的情况记录,方便地对学生考勤进行评定。学生考勤管理系统应实现以下功能。 1.学生信息管理 添加学生根本信息,包括学生学号、姓名、性别、地址、所在班级等信息,修改学生根本信息,删除学生根本信息,查看学生根本信息。 2.学生考勤管理 包括出勤管理,请假管理。它们可以实现对学生日常主要考勤情况的记录管理。教师能够把学生的考勤情况输入到相应的数据库,也可对其进行添

9、加、修改、删除。 3.查看成绩 学生查看所学课程的平时成绩的记录管理。2.2.2 设计方案此程序是过程性语言设计的。运用多种条件语句,主体采用的是链表指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序使用了布尔函数。选择语句多采用if多分支选择结构与switch语句。首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。循环语句采用了 for语句等、do-while语句,for语句用于循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。do-while语句

10、先循环后判断, Break语句在switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数功能,一个程序是由假设干个函数组成的,保存和读取函数是和其他函数互相调用的。该系统的设计本着简明扼要的原那么设计开发的,有着人性化的提示界面与提示语句,结构完整有致,简单明了。1. 设计考勤系统框架2. 将框架分为三局部分别由小组三人完成3. 设计考勤系统子系统:学生信息管理系统4. 设计目录5. 设计考勤算法6. 将框架组合完成课设2.2.3流程图图21 系统流程图三、程序及功能说明3.1主要自定义函数分析3.1.1select函数功能说明:实现对目录的选择

11、流程图: void select() int m;scanf(%d,&m);/输入要选择的数字switch(m)case 1: check();break;case 2: manage();break;case 3: calculate();break;case 4: quit();break;default: printf(输入错误!请重新输入:n);/*条件选择*/3.1.2check函数功能实现:此函数主要是学生签到功能的实现流程图: void check()int i,n;char no30;system(cls);/窗口清屏printf(请输入学号:n);scanf(%s,no);/

12、输入查找的学号for(i=0;i2;i+)if(strcmp(no,stui.num)=0)/匹配学号stui.th+;/考勤加一printf(签到成功!n);printf(请输入考勤系统功能数字:n);n=5;/5赋给nif(n!=5)/当没有匹配到学号时执行语句printf(查无此人n);save();/保存3.1.3manage函数功能实现:对学生信息进行管理,添加,修改,查询等流程图: void manage()int a,i=1;system(cls);/清屏printf(n);printf(tt*n);printf(ttt 学生信息管理系统n);printf( 1.添加学生信息n)

13、;printf( 2.查询学生信息n);printf( 3.修改学生信息n);printf( 4.退出学生信息管理系统n);printf(tt*n);scanf(%d,&a);/输入数字while(i!=0)/执行循环if(a=0)/如果a在0-3范围内switch(a)case 1: input(); break;case 2: search(); break;case 3: modify(); break;printf(请输入信息管理功能数字:);scanf(%d,&a);/输入数字elseif(a=4)/如果a=4退出系统system(cls);break;elseprintf(输入错误

14、!请重新输入:n);scanf(%d,&a);/输入数字3.1.4modify函数功能实现:对已经写入的学生信息进行修改。流程图: void modify() int i,j,c; char k30; FILE *fp;/定义文件指针 if(fp=fopen(stu.txt,rb)=NULL)/如果文件翻开失败 printf(cannot open filen); return ;/返回上级函数 printf(n请输入要修改学生的学号:); scanf(%s,k);/输入学号for(i=0;i2;i+)fread(&stui,sizeof(struct student),1,fp);/文件读出

15、for(j=0;j3;j+)/循环 if(strcmp(k,stui.num)=0)/学号匹配 c=i; /找到数据序号 fclose(fp);/文件关闭printf(请输入新修改的内容:n); /下面输入该学生新信息 printf(请输入学生姓名:n);scanf(%s,stuc.name);printf(请输入学生学号:n); scanf(%d,stuc.num);printf(请输入学生性别(m:男生f:女生):n);scanf(%s,stuc.sex); save();/保存3.1.5calculate函数功能实现:通过对学生签到情况的统计,计算出学生的最终考勤成绩。流程图: void

16、 calculate() int i;system(cls);/清屏printf(课程结束考勤评分如下n);for(i=0;i2;i+)/循环printf(学号:%s 姓名:%s 分数:%d,stui.num,stui.name,stui.th*25);/输出成绩 考勤次数*25printf(n);printf(请输入考勤系统功能数字:nn);四、结果分析4.1运行结果 主目录 签到界面 学生信息管理目录界面 添加学生信息界面 查询学生信息界面 修改学生信息界面 考勤评定分数界面 退出考勤系统界面 五、总结及心得体会 此次c语言课程设计,在指导教师的精心教导下,我学会了如何用c语言编写一个简单

17、的应用程序。首先要对程序的设计要求有一个比拟明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原那么,便于查询。 经过一年对?c语言程序?的学习,我们都学到了不少东西,可能有一些人学的不够理想,但无论如何,这些知识都为我们的下一步学习打下了坚实的根底。做这样的一个课程设计,一方面是为了检验我们一学期的学习成果,另一方面也是为了让我们进一步掌握和运用它,同事也让我们认清自己的缺乏之处和薄弱环节,加以弥补加强。本程序在刚刚开始进行编写时,思路是很清晰的。但写完程序后,调试程序过程中发现有许多的错误,像在printf函数语句后面

18、少加分号,if函数后面加上分号。或者一些变量定义错误。这些问题都是我平时学习马虎造成的。这些问题经过我屡次的调试,已经成功解决。 我在编写此程序代码时,我学习到许多知识,这些知识有的在课本上难以学到的,像system“cls;去除屏幕函数。我在网络上查询资料以及请教同学,把自己所学习到的c语言知识综合在一起来进行运用,写出了此程序代码。最后,我总结了写程序的经验:一定要仔细。 参考文献1 谭浩强C语言程序设计教程北京:高等教育出版社,2007.2 曹哲主编C语言实验与课程设计指导北京:机械工业出版社,2010.源程序#include#include#include#include/*包含头文件

19、*/*定义结构体*/struct student char name20;char num30;char sex2;int th;stu2;/*定义结构体数组*/*自定义函数声明*/void menu();void select();void check();void manage();void input();void save();void search();void modify();void calculate();void quit();/*全局变量*/FILE *fp;/*主函数*/main() int i=1;stu0.th=0;/给th赋值stu1.th=0;/给th赋值men

20、u();while(i!=0)select();if(i!=n) menu();/*主函数中一直执行循环*/*目录函数*/void menu() printf(tt*n);printf(ttt 欢送使用学生考勤系统n);printf(ttt 本科课程共计四节n);printf( 1.学生每日签到n);printf( 2.学生信息管理n);printf( 3.考勤评定分数n);printf( 4.退出考勤系统n);printf( 请选择相应的数字n);printf(tt*n);/*选择函数*/void select() int m;scanf(%d,&m);/输入要选择的数字switch(m)c

21、ase 1: check();break;case 2: manage();break;case 3: calculate();break;case 4: quit();break;default: printf(输入错误!请重新输入:n);/*条件选择*/*签到函数*/void check()int i,n;char no30;system(cls);/窗口清屏printf(请输入学号:n);scanf(%s,no);/输入查找的学号for(i=0;i2;i+)if(strcmp(no,stui.num)=0)/匹配学号stui.th+;/考勤加一printf(签到成功!n);printf(

22、请输入考勤系统功能数字:n);n=5;/5赋给nif(n!=5)/当没有匹配到学号时执行语句printf(查无此人n);save();/保存/*信息管理函数*/void manage()int a,i=1;system(cls);/清屏printf(n);printf(tt*n);printf(ttt 学生信息管理系统n);printf( 1.添加学生信息n);printf( 2.查询学生信息n);printf( 3.修改学生信息n);printf( 4.退出学生信息管理系统n);printf(tt*n);scanf(%d,&a);/输入数字while(i!=0)/执行循环if(a=0)/如果

23、a在0-3范围内switch(a)case 1: input(); break;case 2: search(); break;case 3: modify(); break;printf(请输入信息管理功能数字:);scanf(%d,&a);/输入数字elseif(a=4)/如果a=4退出系统system(cls);break;elseprintf(输入错误!请重新输入:n);scanf(%d,&a);/输入数字 /*输入函数*/void input() int i;for (i=0;i2;i+)/循环printf(请输入第%d学生姓名:n,i+1);scanf(%s,stui.name);

24、printf(请输入学生学号:n); scanf(%s,stui.num);printf(请输入学生性别(m:男生f:女生):n);scanf(%s,stui.sex);/*输入信息*/save();/保存/*查询函数*/void search() int i,n; char no30;/定义数组printf(请输入您要查找的学生学号:n);scanf(%s,no);/输入学号for(i=0;i2;i+)if(strcmp(no,stui.num)=0)/匹配学号printf(n学生的信息为:姓名 学号 性别n);printf(学生根本信息:%-5s,%-5s,%-3snn,stui.name

25、,stui.num,stui.sex);/输出信息n=5;/5赋给nif(n!=5)/当学号匹配不到时执行printf(查无此人n);/*保存函数*/void save() int i;FILE *fp;/定义文件指针if(fp=fopen(stu.txt,wb)=NULL)/如果文件翻开失败printf(cannot open filen);return;/返回上级函数for(i=0;i2;i+)/循环if(fwrite(&stui,sizeof(struct student),1,fp)!=1)/如果写入失败printf( errorn);fclose(fp);/文件关闭printf(已保

26、存n);/*修改函数*/void modify() int i,j,c; char k30; FILE *fp;/定义文件指针 if(fp=fopen(stu.txt,rb)=NULL)/如果文件翻开失败 printf(cannot open filen); return ;/返回上级函数 printf(n请输入要修改学生的学号:); scanf(%s,k);/输入学号for(i=0;i2;i+)fread(&stui,sizeof(struct student),1,fp);/文件读出for(j=0;j3;j+)/循环 if(strcmp(k,stui.num)=0)/学号匹配 c=i; /

27、找到数据序号 fclose(fp);/文件关闭printf(请输入新修改的内容:n); /下面输入该学生新信息 printf(请输入学生姓名:n);scanf(%s,stuc.name);printf(请输入学生学号:n); scanf(%d,stuc.num);printf(请输入学生性别(m:男生f:女生):n);scanf(%s,stuc.sex); save();/保存/*考勤评定函数*/void calculate() int i;system(cls);/清屏printf(课程结束考勤评分如下n);for(i=0;i2;i+)/循环printf(学号:%s 姓名:%s 分数:%d,stui.num,stui.name,stui.th*25);/输出成绩 考勤次数*25printf(n);printf(请输入考勤系统功能数字:nn);/*退出函数*/void quit() printf(n);printf(n);printf(tttt谢谢使用本系统!n);printf(tttt*再见!*n);printf(tt 制作人:李鑫宇,谷维鑫,刘佳伟n);printf(n);exit(0);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁