毕业论文学生考勤管理系统的设计.doc
《毕业论文学生考勤管理系统的设计.doc》由会员分享,可在线阅读,更多相关《毕业论文学生考勤管理系统的设计.doc(37页珍藏版)》请在三一办公上搜索。
1、张家界航空工业职业技术学院毕 业 设 计 论 文学生考勤管理系统的设计学生姓名: 专 业:应用电子技术 班 级: 093331 负责教师: 龙治红 2012 年 5 月一、学生考勤打卡机分析.3二、系统的主要功能.3三、流程图.4四、数据结构设计.4-7五、类设计.7六、主要算法设计.8-9七、主要代码.9-21八、AT89S52单片机简介.22-31九、调试.32-34十、总结.35一、学生考勤打卡机分析1.1需求分析功能需求: 1、录入学生的缺勤记录; 2、修改某个学生的缺勤记录; 3、查询某个学生的缺勤情况; 4、统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并能进
2、行排序; 5、统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序; 6、系统以菜单方式工作数据需求 本系统主要涉及的数据有学生缺课信息类和有关信息排序类。学生缺课信息包括缺课时间,学生姓名,课程名称,第几节,学生迟到次数,早退次数,请假次数,旷课次数。有关信息排序类包括对课程排序和对姓名排序。性能需求 要求系统具有可靠性,速度要快二、系统的主要功能 (1)、录入学生的缺课记录,函数代码void input(records *r)模块中。首先提示用户按照正确的格式进行学生缺课记录的录入,这个步骤比较简单,只需要不断地将记录的每个数据项存入结构体对应的成员中。 (2)、修改某个学生
3、的缺课记录,函数代码void edt(records *r)模块中。首先必须查找到你所需要修改的那位的学生全部缺课记录。这个模块不需要定义新的结构体。在修改前当然要检查记录是否为空了,不为空的话,可以设置下面这五个菜单供用户选择:1、缺课日期2、第几节课3、课程名称4、学生姓名5、缺课类型6、退出修改程序并返回系统主菜单。修改很简单,仅需要对该学生的某个部分进行替换即可。采用switch语句很快就解决。最后实现对所选记录的修改,完成后更新原有的学生记录。 (3)、查询某个学生的缺课情况,函数代码void search(records *r)模块中。达到查询结果按照日期升序排序,同一天内按照所缺
4、课程的时间升序排序的目的, (4)、统计,函数代码为void order_c()和void order_s()的类模块中。其中实现对课程排序和对学生姓名的排序。三、流程图学生考勤系统结构图:基类的数据成员和成员描述 recordString date,cname,sname;int cno,type;void set();string tostr();类名/函数名描述 类名/函数名描述record 基类edt()修改学生信息records实现学生旷课情况排序的类del()删除学生信息wt/rd()实现对文件的输入和输出search()查找学生信息input()录入学生的缺课记录search_s
5、()一定范围查找学生信息edt()修改学生信息main()主函数四、数据结构设计 此程序运用多种条件语句,主体采用的是动态数组、指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序使用了布尔函数。选择语句多采用if多分支选择结构与switch语句。首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。循环语句采用了for语句等、do-while语句,for语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。do-while语句先循环后判断, Br
6、eak语句在switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的再有使用有关类的设计,学生缺课信息类和有关信息排序类,如下:class record /学生缺课信息类public:void set(string d,int cno,string c,string s,int type)date.assign(d);/日期cname.assign(c);/课程名字sname.assign(s);/学生姓名this-cno=cno;/对缺课类型的选择 为int型this-ty
7、pe=type;/缺课类型void set(record re)date.assign(re.date);cname.assign(ame);sname.assign(re.sname);this-cno=o;this-type=re.type;string date,cname,sname;int cno,type;class records /实现学生旷课情况排序的类public:records() /构造函数r=new record100;n=0;void order_s() /姓名的排序int i; int j;string *s=new stringn;int *c=new int
8、n;s0.assign(r0.sname);c0=1;int k=1,flag;for( i=1;in;i+)flag=0;for( j=0;jk;j+)if(ri.sname=sj)cj+;flag=1;break;if(!flag)sk=ri.sname;ck+=1;for(i=1;i0;j-)if(cjcj-1)int tmp=cj;cj=cj-1;cj-1=tmp;string stmp=sj;sj=sj-1;sj-1=stmp;cout旷课学生姓名t旷课次数endl;for(i=0;ik;i+)coutsittciendl;void order_c() /课程排序int i,j;st
9、ring *s=new stringn;int *c=new int n;s0.assign(ame);c0=1;int k=1,flag;for( i=1;in;i+)flag=0;for(j=0;jk;j+)if(ame=sj)cj+;flag=1;break;if(!flag)sk=ame;ck+=1;for(i=1;i0;j-)if(cjcj-1)int tmp=cj;cj=cj-1;cj-1=tmp;string stmp=sj;sj=sj-1;sj-1=stmp;cout课程名t旷课人次endl;for(i=0;ik;i+)coutsitciendl;record *r;int n
10、; 五、类设计系统中主要涉及了两个类: 一个是class record /关于学生考勤基本信息类 另一个是class records/实现学生旷课情况排序的类六、主要算法设计 关键算法:旷课情况的排序:class records/实现学生旷课情况排序的类public:records() /构造函数r=new record100;n=0;旷课记录的修改:cout请输入要修改缺课记录的学生姓名: tmp;t1.assign(tmp);for(i=0;in;i+)if(r-ri.sname=t1)flag=7;break;if(!flag)cout查无此学生!ri.date;t2=r-o;t3=r-
11、ame;t4=r-ri.sname;t5=r-ri.type;旷课项目的修改! cout请输入要修改的项目:n(1.缺课日期 2.缺课节次 3.缺课名称 4.学生姓名 5.缺课类型 6.全部) flag;switch(flag)case 1:goto e1;case 2:goto e2;case 3:goto e3;case 4:goto e4;case 5:goto e5;case 6:goto e1;default:goto e0; 用到的知识点有:函数的作用域、函数的调用、数组赋值、函数循环、以及类的定义,另外还用到了for函数、getch函数、switch函数、case函数、defau
12、lt函数等等。七、主要代码第一部分:学生考勤管理系统#include stdlib.h#include hanshushixian.h#include record.h#include #include #include #include using namespace std;#include record.hint main()c1: /主菜单实现 system(cls); cout *endl; cout * 欢迎访问学生考勤管理系统 *endl; cout *endl; cout * 系统主菜单: 1.显示所有学生的缺课记录 *endl;cout * 2.录入学生的缺课信息记录 *en
13、dl; cout * 3.查询某个学生的缺课情况 *endl; cout * 4.修改某个学生的缺课记录 *endl; cout * 5.删除某个学生的缺课记录 *endl; cout * 6.统计某段时间内旷课情况 *endl; cout * 7. 退出系统 *endl; cout *endl; coutO(_)O 请选择你所需要的操作 O(_)O: chose;if(chose=7)exit(0);records *r=new records();rd(r);switch(chose)case 1:pri(r);break;case 2:input(r);break;case 3:sear
14、ch(r);break;case 4:edt(r);break;case 5:del(r);break;case 6:search_s(r);break;default:goto c2;cout是否返回主菜单? (y/n)你的选择: yn;if(yn=y)goto c1;else if(yn=n)exit(0);else goto c3;return 0;第二部分:record.h (类的设计部分)#include #include using namespace std;#ifndef record_class#define record_classclass record /关于学生考勤基
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 学生 考勤 管理 系统 设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-3972550.html