1、 - 1 - 毕毕 业业 设设 计计 论论 文文 学生考勤管理系统的设计学生考勤管理系统的设计 学生姓名:学生姓名: 专专 业:业:应用电子技术应用电子技术 班班 级:级: 负责教师负责教师: 2012 年年 5 月月 - 2 - 一、一、学生考勤打卡机学生考勤打卡机分析分析33 二、系统的主要功能二、系统的主要功能33 三、流程图三、流程图.4.4 四、数据结构设计四、数据结构设计.4.4- -7 7 五、类设计五、类设计77 六、主要算法设计六、主要算法设计.8.8- -9 9 七、主要代码七、主要代码.9.9- -2121 八、八、AT89S52 单片机简介单片机简介.22.22- -3
2、131 九、调试九、调试32-34 十、十、总结总结3535 - 3 - 一、一、学生考勤打卡机学生考勤打卡机分析分析 1.11.1 需求分析需求分析 功能需求: 1、录入学生的缺勤记录; 2、修改某个学生的缺勤记录; 3、查询某个学生的缺勤情况; 4、统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并 能进行排序; 5、统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序; 6、系统以菜单方式工作 数据需求 本系统主要涉及的数据有学生缺课信息类和有关信息排序类。 学生缺课信息包括 缺课时间,学生姓名,课程名称,第几节,学生迟到次数,早退次数,请假次数,旷 课
3、次数。有关信息排序类包括对课程排序和对姓名排序。 性能需求 要求系统具有可靠性,速度要快 二、系统的主要功能二、系统的主要功能 (1)、录入学生的缺课记录,函数代码 void input(records *r)模块中。首先 提示用户按照正确的格式进行学生缺课记录的录入,这个步骤比较简单,只需要不断 地将记录的每个数据项存入结构体对应的成员中。 (2)、修改某个学生的缺课记录,函数代码 void edt(records *r)模块中。首 先必须查找到你所需要修改的那位的学生全部缺课记录。 这个模块不需要定义新的结 构体。在修改前当然要检查记录是否为空了,不为空的话,可以设置下面这五个菜单 供用户
4、选择:1、缺课日期 2、第几节课 3、课程名称 4、学生姓名 5、缺课类型 6、 退出修改程序并返回系统主菜单。修改很简单,仅需要对该学生的某个部分进行替换 即可。采用 switch 语句很快就解决。最后实现对所选记录的修改,完成后更新原有 的学生记录。 (3)、查询某个学生的缺课情况,函数代码 void search(records *r)模块中。 达到查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序的目的, (4)、统计,函数代码为 void order_c()和 void order_s()的类模块中。 其中实现对课程排序和对学生姓名的排序。 三、流程图三、流程图 学生考勤系
5、统结构图: - 4 - 基类的数据成员 和成员描述 record String date,cname,sname; int cno,type; void set() ; string tostr(); 类名/函数名 描述 类名/函数名 描述 record 基类 edt() 修改学生信息 records 实现学生旷课情况排序 的类 del() 删除学生信息 wt/rd() 实现对文件的输入和输 出 search() 查找学生信息 input() 录入学生的缺课记录 search_s() 一定范围查找学生 信息 edt() 修改学生信息 main() 主函数 四、数据结构设计四、数据结构设计 此程
6、序运用多种条件语句,主体采用的是动态数组、指针。系统的设计采用了数 组语句、 选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简 洁。程序使用了布尔函数。选择语句多采用 if 多分支选择结构与 switch 语句。首先 计算 switch 表达式,然后在 caes 子句中寻找值相等的常量表达式,并以此为入口符 号,由此开始顺序执行。循环语句采用了 for 语句等、do-while 语句,for 语句用于 已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和 循环增量。do-while 语句先循环后判断, Break 语句在 switch 语句中,保证多分支 情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数 功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的 再有使用有关类的设计,学生缺课信息类和有关信息排序类,如下: class record /学生缺课信息类 public: voi