收藏 分销(赏)

学生考勤标准管理系统.doc

上传人:人****来 文档编号:2827566 上传时间:2024-06-06 格式:DOC 页数:25 大小:150.54KB
下载 相关 举报
学生考勤标准管理系统.doc_第1页
第1页 / 共25页
学生考勤标准管理系统.doc_第2页
第2页 / 共25页
学生考勤标准管理系统.doc_第3页
第3页 / 共25页
学生考勤标准管理系统.doc_第4页
第4页 / 共25页
学生考勤标准管理系统.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、一、设计内容和设计要求1设计内容:学生考勤管理系统1、问题描述学生信息包含:学号、姓名、性别、年纪、班级等信息。考勤信息包含:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假和旷课)。2、功效要求(1)添加功效:程序能够添加学生统计和缺课统计,提供选择界面供用户选择所要添加类别。添加学生统计时,要求学号要唯一,假如添加了反复学号统计时,则提醒数据添加反复并取消添加。(2)查询功效:可依据学号、姓名等信息对已添加学生统计进行查询,假如未找到,给出对应提醒信息,假如找到,则显示对应统计信息。还能够按课程名、学生姓名对缺课统计进行查询。(3)显示功效:可显示目前系统中全部学生统计和

2、缺课统计,每条统计占据一行。(4)编辑功效:可依据查询结果对对应统计进行修改,修改时注意学号唯一性。(5)删除功效:关键实现对已添加学生统计进行删除。假如目前系统中没有对应统计,则提醒“统计为空!”并返回操作。(6)统计功效:能依据多个参数进行统计。能按课程名统计出学生旷课信息、还能够按姓名统计出任一学生旷课情况。需要排序。(7)保留功效:可将目前系统中各类统计存入文件中,存入方法任意。(8)读取功效:可将保留在文件中信息读入到目前系统中,供用户进行使用。目 录一、需求分析61.系统设计目标和意义62.系统功效需求(系统步骤图)63.系统功效步骤图74.输入输出要求7二、总体分析71.系统功效

3、分析82.系统功效结构图8三、具体设计91.类设计:11四、界面设计和各功效模块实现121.界面设计12五、系统调试141.首页进入学籍管理系统主菜单142录入学生信息缺课界面:153.显示学生信息缺课界面164.查找学生信息界面175.删除学生信息界面186.修改学生信息187.统计学生信息:19六、使用说明及心得体会20七、附件20一、 需求分析1.系统功效步骤图退出主程序初始化程序菜单程序查找删除修改统计录入显示保留3.输入输出要求1.输入要求:经过主函数体调用其它函数应用系统主控界面包含学生信息录入,查找等功效模块。学生信息录入功效完成学生信息和缺课信息输入。统计查询功效能够对数据各分

4、类统计进行查询。2.输出要求:1)能够按编号、姓名对学生信息进行检索并将检索结果显示在屏幕上。2)能够统计全部学生缺课类型,及其缺课次数。3)假如检索不到对应信息应提醒用户。二、 总体分析系统功效分析能够从屏幕上读取一个学生信息和缺课信息并将信息存入到数据文件中。能够将指定信息从文件中删除。能够按编号、姓名对学生信息进行检索并将检索结果显示在屏幕上。能够统计全部学生缺课次数,及其缺课类型。要求有错误提醒功效。假如检索不到对应信息应提醒用户。 三、具体设计1.类设计:类:Person 数据组员学号,姓名,性别,年纪,班级缺课类型,缺课次数,指针域double num; /学号 char Name

5、20; /姓名 char sex;/性别 double old;/年纪 long double G;/班级 int Duty; /缺课类型(1-迟到,2-早退,3-请假,4-旷课) double Salary; /缺课次数 Person *next; /指针域 、组员函数Person() /基类结构 next=0; /指针域设置为空 virtual Person() /基类虚析构 virtual void Input()=0; /从键盘输入数据 virtual void Input(ifstream& ifs)=0; /从文件输入数据 virtual void Output()=0; /向屏幕

6、输出数据 virtual void Output(ofstream& ofs)=0; /向文件输出数据 virtual double Incoming()=0; /计算次数 friend class College; 类:Teacher(公共继承和Person类)数据组员:protected: int Hours; /第几节课 char B;/迟到日期 char Z;/课程名称class school组员函数:Tercher()void Input()void Input(ifstream& ifs)void Output(ofstream& ofs)double Incoming()迟到类:

7、class Assistant:virtual public Person数据组员:protected: int Allowance; int Hours; /第几节课 char B;/早退日期 char Z;/课程名称 组员函数:Assistant()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming()请假类:class Manager:virtual public Person数据组员:protected: int Allowance;int Hours;

8、/第几节课 char B;/请假日期 char Z;/课程名称组员函数:Manager()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming()旷课类:class Teacher_Assistant:public Teacher,public Assistant组员函数:Teacher_Assistant()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)dou

9、ble Incoming()学生类:class College数据组员private: Person *PL; void Clear(); int College:Cfind(int ID,Person *p1,Person *p2)组员函数:public: College(); /结构 College(); /析构 void Add(); /退出 void Delete(); /删除 void Modify(); /修改 void Print(); /输出 void Save(); /信息存盘 void Load(); /信息装入 void Find(); /查找 void Build();

10、 /导引 void Stat(); /统计四、 界面设计和各功效模块实现1. 界面设计1.界面设计程序运行后会出现一个简捷窗口,便于用户查询数据。2.功效模块实现设计经过主窗体调用其它窗体。应用系统主控界面包含学生信息录入,查找等功效模块。学生信息录入功效完成学生信息和成绩输入。统计查询功效能够对数据各分类统计进行查询。具体举例以下:1) 输入函数:void Input() coutnum; coutName; coutsex; coutold; coutG; coutHours; Salary=Incoming(); 2)删除函数void school:del()student *p,*p2

11、;int num;coutnum;if( !find(&p,num,) )coutSORRY!找不到你要删除内容!next)-output();p2=p-next;p-next=p2-next;delete p2;school:setkey(1);2. 类派生之间示意图TercherAssitantMannagerTercher_AssitantPerson五、 系统调试1.首页进入学生考勤管理系统主菜单2录入学生信息界面:3.显示学生信息界面:4.修改学生信息六、 使用说明及心得体会此次c+课程设计,在指导老师精心教导下,我学会了怎样用C+编写一个简单应用程序。首先要对程序设计要求有一个比较

12、明确认识,然后系统分析和系统设计,最终是代码设计和调试。程序实现上,设计了简单查询界面,将各个功效集中出来根据程序编写标准,便于查询。七、附件源文件代码:#include 文件操作头文件#include 字符串流 class Person /人员类(抽象类) protected: double num; /学号 char Name20; /姓名 char sex;/性别 double old;/年纪 long double G;/班级 int Duty; /缺课类型(1-迟到,2-早退,3-请假,4-旷课) double Salary; /缺课次数 Person *next; /指针域 pub

13、lic: Person() /基类结构 next=0; /指针域设置为空 virtual Person() /基类虚析构 virtual void Input()=0; /从键盘输入数据 virtual void Input(ifstream& ifs)=0; /从文件输入数据 virtual void Output()=0; /向屏幕输出数据 virtual void Output(ofstream& ofs)=0; /向文件输出数据 virtual double Incoming()=0; /计算次数 friend class College; ; class Teacher:virtua

14、l public Person /迟到类 protected: int Hours; /第几节课 char B;/迟到日期 char Z;/课程名称public: Duty=1; Salary=800; void Input() /键盘补充输入其它数据 coutnum; coutName; coutsex; coutold; coutG; coutHours; Salary=Incoming(); void Input(ifstream& ifs) ifsnumNamesexoldGDutyHoursSalary; void Output() coutnumtNametsextoldtGtDu

15、tytHourstSalarytendl; void Output(ofstream& ofs) ofsnumtNametsextoldtGtDutytHourstSalaryt120) return Salary+(Hours-120)*20; else return Salary; ; class Assistant:virtual public Person /早退 protected: int Allowance; int Hours; /第几节课 char B;/早退日期 char Z;/课程名称 public: Assistant() Duty=2; Salary=650; All

16、owance=150; void Input() coutnum; coutName; coutsex; coutold; coutG; coutHours; Salary=Incoming(); void Input(ifstream& ifs) ifsnumNamesexoldGDutyHoursSalary; void Output() coutnumtNametsextoldtGtDutytHourstSalarytendl; void Output(ofstream& ofs) ofsnumtNametsextoldtGtDutytHourstSalaryt70) return Sa

17、lary+Allowance+(Hours-70)*20; else return Salary+Allowance; ; class Manager:virtual public Person /请假 protected: int Allowance;int Hours; /第几节课 char B;/请假日期 char Z;/课程名称public: Manager() Duty=3; Salary=750; Allowance=250; void Input() coutnum; coutName; coutsex; coutold; coutG; coutHours; Salary=Inc

18、oming(); void Input(ifstream& ifs) ifsnumNamesexoldGDutyHoursSalary; void Output() coutnumtNametsextoldtGtDutytHourstSalarytendl; class College private: Person *PL; void Clear(); int College:Cfind(int ID,Person *p1,Person *p2); public: College(); /结构 College(); /析构 void Add(); /退出 void Delete(); /删除

19、 void Modify(); /修改 void Print(); /输出 void Save(); /信息存盘 void Load(); /信息装入 void Find(); /查找 void Build(); /导引 void Stat(); /统计 ; College:College() /结构函数(创建1个头结点链表) Person *p=new Teacher; PL=p; coutnext; delete p; p=PL; PL=0; void College:Add() /增加 char c; do coutInput(); p-next=pt; break; case 2: p

20、a=new Assistant; pa-Input(); p-next=pa; break; case 3: pm=new Manager; pm-Input(); p-next=pm; break; case 4: pta=new Teacher_Assistant; pta-Input(); p-next=pta; break; default: return; coutc; while(c=y|c=Y); Save(); /查找 void College:Find() double ID; Person *p1; Person *p2; coutID; p1=PL-next; p2=PL

21、; while(p1) if(p1-num=ID) break; /找到 else p2=p1; /继续查找 p1=p1-next; if(!p1) cout找不到你所查询人!n请确定你所查询编号是否犯错!n;return; else coutn* 出勤信息表 *n; coutOutput(); /查找缺课结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针) int College:Cfind(int ID,Person *p1,Person *p2) *p1=PL-next; *p2=PL; while(*p1) if(*p1)-num=ID) break; /找到 else

22、 *p2=*p1; /继续查找 *p1=(*p1)-next; return *p1?1:0; void College:Delete() /删除 coutn* 删除 *n; int num; Person *p1,*p2; coutnum; if(!Cfind(num,&p1,&p2) coutnext=p1-next; /连接 delete p1; cout正确删除!n; Save(); void College:Modify() /修改 coutn* 修改 *n; int num; Person *p1,*p2; coutnum; if(!Cfind(num,&p1,&p2) coutO

23、utput(); /输出原来出勤信息(做提醒) p1-Input(); /输入新出勤信息(更新) cout修改完成!n; Save(); void College:Print() /输出出勤信息 coutn* 出勤信息表 *n; coutnext; if(!p) coutOutput(); p=p-next; void College:Save() /出勤信息存盘? ofstream f(Person.dat,ios:out); /打开文件 Person *p=PL-next; while(p) p-Output(f); p=p-next; f.close(); /关闭文件 coutbufbu

24、fDuty; if(f) switch(Duty) case 1: p2=new Teacher; break; case 2: p2=new Assistant; break; case 3: p2=new Manager; break; case 4: p2=new Teacher_Assistant; break; default: f.close(); return; p-next=p2; p=p-next; f.seekg(t); p-Input(f); else break; f.close(); void College:Load() /出勤信息录入 char ah; int c

25、; coutn* 出勤信息录入 *n; do coutc; for(int i=1;inext)p=p-next; int ch; coutch; Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assistant *pta; switch(ch) case 1: pt=new Teacher; pt-Input(); p-next=pt; break; case 2: pa=new Assistant; pa-Input(); p-next=pa; break; case 3: pm=new Manager; pm-Input(); p-ne

26、xt=pm; break; case 4: pta=new Teacher_Assistant; pta-Input(); p-next=pta; break; default: return; Save(); coutah; while(ah=Y|ah=y); void College:Stat() Person *p1; Person *p2; double Sa=0; int a,b,i=0; double c,d; couta; if(a=1) coutb; p1=PL-next; p2=PL; while(p1) if(p1-Duty=b) i+; /找到 p2=p1; /继续查找

27、p1=p1-next; else p2=p1; /继续查找 p1=p1-next; coutb类缺课次数是:iendl; else if(a=2) coutc; coutd; p1=PL-next; p2=PL; while(p1) if(p1-Salary=c&p1-SalaryOutput();/找到 p2=p1; /继续查找 p1=p1-next; else p2=p1; /继续查找 p1=p1-next; else if(a=3) Person *p=PL-next; while(p) /遍历链表 Sa=Sa+(p-Salary); p=p-next; cout缺课总数是:Sanext

28、; while(p) i=i+1; p=p-next; cout缺课次数是:iendl; cout统计完成!n; void main() char ch; College c; /定义大学对象 do coutn 学生考勤管理系统 n; cout1-添加n; cout2-查询n; cout3-编辑n; cout4-删除n; cout5-统计n; cout6-读取n; cout7-退出nch; switch(ch) case 1: c.Load(); break; case 2: c.Find(); break; case 3: c.Modify(); break; case 4: c.Delete(); break; case 5: c.Stat(); break; case 6: c.Print(); break; case 7: c.Add; break; while(ch!=7);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服