考勤管理程序.doc_第1页
考勤管理程序.doc_第2页
考勤管理程序.doc_第3页
考勤管理程序.doc_第4页
考勤管理程序.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计题目 考勤管理程序 一、 内容学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。二、上机环境操作系统:window xp开发工具: VC+6.0 main函数 3、 函数调用关系图start函数 模拟考勤建立学生列表查询信息退出计算考勤分数按学号查找按姓名查找 四、各函数功能说明Main() 主函数void start(void) 主函数的辅助函数start函数。void found(void) 用于建立学生列表。void search(void) 用于查询学生信息。void search1(void) 第1种查询类型的函数。按学号void search2(void) 第2种查询类型的函数。按姓名void add(void) 用于模拟考勤过程。void mark(void) 用于计算考勤分数。五、算法描述或流程图 void start() /*主函数的辅助函数start函数。*/ char x; void found();void search();void add();void mark(); printf(#n); printf(# 请选择所需功能,输入对应数字: #n); printf(# 1.建立学生列表 #n); printf(# 2.查找学生信息 #n); printf(# 3.模拟考勤过程 #n); printf(# 4.计算考勤分数 #n); printf(# 5.退出 #n); printf(# #n); printf(#n); printf(请输入对应数字:);scanf(%S,&x); switch(x) /*利用switch函数实现子函数的选择功能。*/ case1:found();break; 运行found函数 case2:search();break; 运行search函数 case3:add();break; 运行add函数 case4:mark();break; 运行mark函数 case5:break; 退出循环 default :printf(*输入有误,请重输:n);start(); 通过switch循环,选择运行相应的子函数模块。 Found函数FILE *fp 创建 For循环保存信息Printf() 信息Search()函数 开始 输出界面Swich()Swich2Swich1 Search1函数 打开文件 输入学号输出信息Add函数 打开文件输入信息Break;Strcmp 保存输入信息Mark函数打开文件 For循环保存输出信息六、程序运行效果图 进入系统建立学生信息查找信息模拟考勤计算分数七、总结整个系统的设计过程对于我来说算是个学习、探索的过程,通过实践和对比别人开发程序的过程。在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。使我体会到设置中每一步的重要性。所以在分析一个问题时,我们需要站在一个有远见的高度。通过此次设计,我不但对C语言编程有了更深刻的认识,积累了使用软件工程的思想来开发软件的经验,更重要的是学会了在对待问题时应该考虑到哪些方面和怎么解决问题。虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,希望在日后的努力中能做出更完善的系统。这次C语言的程序设计,对于我来说是一个挑战。我在C语言的学习过程中的困难并不只在程序的设计中有所体现,每一个函数都设计好了,也调试好了,把它们分开运行并没有错误,但是当把它们组合成一个程序时,便是一个一个地出现错误;把这个问题解决了,另一个新问题又来了。这不能不说是对知识的欠缺。通过这次的程序设计,我懂得了无论什么事都要去做才会发现问题,才有可能去解决问题。对知识的学习,不能潜偿辄止,要深入去学习,去了解,这样才会有所收获。有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机。同时,在这次课程设计的过程中,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,不能只是学习和重视书本上的理论知识,所以日后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机这门课程。 以前做实验题目的时候总是感觉很难,因为根本就不知道从哪里开始。这次课程设计让我对编程有了新的认识,也是我知道了只有自己亲自动手才能学到更多东西。拿到题目的时候也是很困惑但仔细琢磨后也不是想象中那么难,觉得就是上课讲到的一些内容,是自己先把自己吓住了。后来,参照书上的和网上的诸多例子,一个模块一个模块的编写,调试,一个功能一个功能去完善。发现越做越顺利,由于以前的实验中对于改错的经验积累和几个学得不错的同学的帮助,我的程序中的错误也一个一个的顺利解决。再后来,等我的程序完全做好以后,我竟然可以独立的帮同学修改一些以前根本不知所以然的错误,其实,从这次实验中我认识到,我距离高手还很远,编程有很多的乐趣也有很多的技巧性和知识性。我将在以后的日子里继续认真的学习知识,积累经验,让自己的编程能力提高。总之,我觉得编程就是要请自动手,孰能生巧,感谢学校给我们这次机会使我们通过这次试验学到了很多东西。八、参考文献 1谭浩强 C程序设计(第三版)清华大学出版社,2005 2l李春葆 C语言程序设计教程(第2版)清华大学出版社 2011九、程序清单(双列排版,小五号字)#include#includestdlib.h#includeconio.h#include /*头文件。*/int SIZE; /*宏定义。*/int CLASS;struct student /*定义一个结构体数组,包含学生信息。*/ char name9; char sex4; int number; int count; int score; stu300;void main() /*主函数,选择界面。*/ system(color 1E); void start(); printf(n); printf(n); printf(n); printf(n); printf(#n); printf(# 学生考勤系统 #n); printf(# 欢 迎 您 #n); printf(#n); printf(n); printf(n); printf(n); printf(n); printf(=n); printf(t请输入班级人数:);scanf(%d,&SIZE); printf(n); printf(t请输入课程节数:);scanf(%d,&CLASS); printf(=n); printf(n); printf(n); printf(n); printf(n); printf(n); printf(n); printf(n); printf(n); start();void start() /*主函数的辅助函数start函数。*/ char x; void found(); void search(); void add(); void mark(); printf(#n); printf(# 请选择所需功能,输入对应数字: #n); printf(# 1.建立学生列表 #n); printf(# 2.查找学生信息 #n); printf(# 3.模拟考勤过程 #n); printf(# 4.计算考勤分数 #n); printf(# 5.退出 #n); printf(# #n); printf(#n); printf(请输入对应数字:);scanf(%S,&x); switch(x) /*利用switch函数实现子函数的选择功能。*/ case1:found();break; case2:search();break; case3:add();break; case4:mark();break;case5:break; default :printf(*输入有误,请重输:n);start(); void found() /*第一个子函数found函数,用于建立学生列表。*/ int a; printf(*n); printf( 开始建表。n); printf(*n); FILE *fp; for(a=0;aSIZE;a+) /*运用for循环,逐次输入学生信息。*/ printf(请输入第%d个学生的个人信息:n,a+1); printf(姓名:); scanf(%s,); printf(性别:); scanf(%s,stua.sex); printf(学号:); scanf(%d,&stua.number); stua.count=0; stua.score=0; fp=fopen(stud,w); /*新建一个文件,运用for函数将学生信息写入文件。*/ for(a=0;aSIZE;a+) if(fwrite(&stua,sizeof(struct student),1,fp)!=1) printf(文件输入错误。n); fclose(fp); printf(n); printf(建表如下:n); fp=fopen(stud,r); /*读取新建的文件,并输出。*/ printf(姓名 t性别 t学号 t缺课数 t考勤分数 n); printf(-n); for(a=0;aSIZE;a+) fread(&stua,sizeof(struct student),1,fp); printf(%s t%s t%d t%d t%dn,,stua.sex,stua.number,stua.count,stua.score); fclose(fp); printf(n); printf(n); printf(=n); printf(# 记录完毕 #n); printf(# 欢迎下次再来。 #n); printf(=n); printf(n); printf(n); printf(n); printf(n); start(); /*返回主函数的辅助函数,即主菜单。*/ void search() /*第二个子函数search函数,用于查询学生信息。*/ char b; void search1(); void search2(); printf(*n); printf( 请选择:n); printf( 1.按姓名查找。n); printf( 2.按学号查找。n); printf(*n); printf(请输入对应数字:); scanf(%s,&b); switch(b) /*运用switch函数,构成选择结构,可供选择查询类型。*/ case1:search1();break; /*进入第1种查询类型的函数。*/ case2:search2();break; /*进入第2种查询类型的函数。*/default :printf(*输入有误,请重输:);search(); printf(n); printf(n); printf(n); printf(n); printf(=n); printf(# 查找完毕 #n); printf(# 欢迎下次再来。 #n); printf(=n); printf(n); printf(n); printf(n); printf(n); start(); /*返回主函数的辅助函数,即主菜单。*/ void search1() /*第1种查询类型的函数。*/ int c; char student_name9; FILE *fp; /*打开已建立的文件并将其输出到屏幕上。*/ fp=fopen(stud,r); for(c=0;cSIZE;c+) fread(&stuc,sizeof(struct student),1,fp); fclose(fp); printf(n); printf(n); printf(n); printf(n); printf(请输入要查询学生姓名:); scanf(%s,student_name); printf(n); printf(n); printf(n); printf(n); for(c=0;cSIZE;c+) /*运用for循环和strcmp函数逐个比较输入的姓名与列表中学生的姓名,找到相同的后输出该学生的信息。*/ if(strcmp(student_name,)=0) printf(已查到*n); printf(姓名:%s 性别:%s 学号:%d 缺课数:%dn,,stuc.sex,stuc.number,stuc.count); void search2() /*第2种查询类型的函数。*/ int c; int d; FILE *fp; fp=fopen(stud,r); for(c=0;cSIZE;c+) fread(&stuc,sizeof(struct student),1,fp); fclose(fp); printf(n); printf(n); printf(n); printf(n); printf(请输入要查询学生学号:); scanf(%d,&d); printf(n); printf(n); printf(n); printf(n); for(c=0;cSIZE;c+) /*同第1种查询类型的函数,用for循环逐个比较输入的学号与列表中学生的学号,找到相同的后输出该学生的信息。*/ if(d=stuc.number) printf(已查到*n); printf(姓名:%s 性别:%s 学号:%d 缺课数:%dn,,stuc.sex,stuc.number,stuc.count); void add() /*第三个子函数add函数,用于模拟考勤过程。*/ int e,f,y; struct name /*再建立一个叫name的结构体数组。*/ char nam9; na300; FILE *fp; fp=fopen(stud,r); /*打开已建立的文件并将其输出到屏幕上。*/ for(e=0;eSIZE;e+) fread(&stue,sizeof(struct student),1,fp); fclose(fp); printf(n); printf(n); printf(n); printf(n); printf(*n); printf( 模拟考勤开始。n); printf(*n); for(e=0;eCLASS;e+) /*运用for循环的嵌套,向name结构体中输入姓名,再依次与列表中的学生姓名逐个比较。*/ printf(请输入第%d节课未到的学生姓名并以“over”结束:,e+1); for(y=0;y=SIZE;y+) scanf(%s,nay.nam); for(f=0;fSIZE;f+) if(strcmp(nay.nam,)=0) /*如果输入的姓名与某个学生姓名相同,在其count的信息中加1。*/ stuf.count+; if(strcmp(nay.nam,over)=0) /*循环结束,遇到 over,退出循环。*/ break; fp=fopen(stud,w); /*将新的列表数据写入原文件中。*/ for(e=0;eSIZE;e+) if(fwrite(&stue,sizeof(struct student),1,fp)!=1) printf(文件输入错误。n); fclose(fp); printf(n); printf(n); printf(n); printf(n); printf(模拟考勤完毕,结果如下:n); fp=fopen(stud,r); /*打开更新的文件并将其输出到屏幕上。*/ printf(姓名 t性别 t学号 t缺课数 n); printf(-n); for(f=0;fSIZE;f+) fread(&stuf,sizeof(struct student),1,fp); printf(%s t%s t%d t%dn,,stuf.sex,stuf.number,stuf.count); fclose(fp); printf(n); printf(n); printf(n); printf(n); printf(=n); printf(# 考勤完毕 #n); printf(# 欢迎下次再来。 #n); printf(=n); printf(n); printf(n); printf(n); printf(n); start(); /*返回主函数的辅助函数。*/ void mark() /*第四个子函数mark函数,用于计算考勤分数。*/ int g; FILE *fp; /*打开更新的文件并将其输出到屏幕上。*/ fp=fopen(stud,r+); for(g=0;gSIZE;g+) fread(&stug,sizeof(struct student),1,fp); printf(n); printf(n); printf(n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论