




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、设计内容与设计要求1 .设计内容:学生考勤管理系统1、问题描述学生信息包括:学号、姓名、性别、年龄、班级等信息。考勤信息包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假和旷课)。2、功能要求(1)添加功能:程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应 的提示信息,如果找到,则显示相应的记录信息。还可以按课程名、学生姓名对缺课记录进行查询。(3)显示功能:可显示当前系
2、统中所有学生的记录和缺课记录,每条记录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。(5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。(6)统计功能:能根据多种参数进行统计。 能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。需要排序。(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。目 录一、需求分析61 .系统设计目的与意义62 .系统功能需求(系统流程图) 63 .系统功能流程图7
3、4 .输入输出的要求7二、总体分析7工系统功能分析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数据成员学号,姓名,性别,年龄,班级缺课类型,缺课次数,指针域 doub
5、le num; / 学号 char Name20; / 姓名 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; /从文件输入数
6、据virtual void Output()=0; / 向屏幕输出数据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
7、 Output(ofstream& ofs)double Incoming()迟到类: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 p
8、ublic Person数据成员:protected:int Allowance;int Hours; / 第几节课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 Inp
9、ut(ifstream& ifs)void Output()void Output(ofstream& ofs)double 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
10、(); /信息存盘void Load(); /信息装入void Find(); /查找void Build(); /导引void Stat(); /统计四、 界面设计与各功能模块的实现1. 界面设计1 .界面设计 程序运行后会出现一个简捷的窗口,便于用户查询数据。2. 功能模块实现设计通过主窗体调用其他窗体。 应用系统主控界面包括学生信息录入, 查找等功能模块。 学生 信息录入功能完成学生信息和成绩的输入。 记录查询功能可以对数据各分类的记录进行查询。 具体举例如下: 1)输入函数: void Input() cout<<"n 学号 :" cin>>
11、num; cout<<"n姓名:" cin>>Name;cout<<"n性别:" cin>>sex;cout<<"n年龄:" cin>>old;cout<<"n班级:" cin>>G;cout<<"n 第几节课 :" cin>>Hours;Salary=Incoming(); 2 )删除函数void school:del() student *p,*p2;int num;cou
12、t<<"请输入编号 cin>>num;if( !find(&p,num,"A")(p->next)->output();ndl;MannagerHcout<<"SORRY!找不领尔要;Peson内容! return;Assitantp2=p->next;delete p2;p-AnexTefch->next;school:setkey(1);2.类的派生之间帏rche_Assitant五、系统调试1.首页进入学生考勤管理系统主菜单2录入学生信息界面:3 .显示学生信息界面:4 .修改学生
13、信息六、使用说明及心得体会此次C+课程设计,在指导教师的精心教导下,我学会了如何用C+与写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计, 最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照 程序编写原则,便于查询。七、附件源文件代码:#include <fstream.h>文件操作头文件#include <string.h> 字符串流class Person队员类(抽象类)protected:double num; / 学号char Name20; / 姓名char sex;/性别double old
14、;/ 年龄long double G;/ 班级int Duty; / 缺课类型(1-迟到,2-早退 ,3-请假,4-旷课 )double Salary; /缺课次数Person *next; /指针域public:Person() /基类构造 next=0; / 指针域设置为空virtual Person() / 基类虚析构 virtual void Input()=0; / 从键盘输入数据virtual void Input(ifstream& ifs)=0; / 从文件输入数据virtual void Output()=0; / 向屏幕输出数据virtual void Output
15、(ofstream& ofs)=0; / 向文件输出数据virtual double Incoming()=0; / 计算次数friend class College; ;class Teacher:virtual public Person /迟到类 protected:int Hours; / 第几节课char B;/迟到日期char Z;/课程名称public: Duty=1;Salary=800; void Input() / 键盘补充输入其它数据 cout<<"n 学号 :" cin>>num;cout<<"n
16、姓名:"cin>>Name;cout<<"n性别:"cin>>sex;cout<<"n年龄:"cin>>old;cout<<"n班级:"cin>>G;cout<<"n 第几节课 :" cin>>Hours;Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>sex>>old&
17、gt;>G>>Duty>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<
18、;Salary<<"t"<<endl; void Output(ofstream& ofs) ofs<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t&quo
19、t;<<Salary<<"t"<<endl; double Incoming() if(Hours>120)return Salary+(Hours-120)*20;elsereturn Salary;class Assistant:virtual public Person / 早退 protected:int Allowance;int Hours; 第几节课 char B;早退日期 char Z;课程名称public: Assistant() Duty=2;Salary=650;Allowance=150; void lnpu
20、t() cout«"n 学号cin»num; cout«"n 姓名cin»Name; cout«"n 性另Ucin»sex; cout«"n 年龄cin»old; cout«"n 班级cin»G; cout«"n 第几节课cin»Hours; Salary=lncoming(); void lnput(ifstream& ifs) ifs»num»Name»sex»ol
21、d»G»Duty»Hours»Salary; void Output() cout«num«"t"«Name«"t"«sex«"t"«old«"t"«G«"t"«Duty«"t"«Hours«"t"«Salary«"t"«endl
22、; void Output(ofstream& ofs) ofs«num«"t"«Name«"t"«sex«"t"«old«"t"«G«"t"«Duty«"t"«Hours«"t"«Salary«"t"«endl; double IncomingO if(Sal
23、ary>70) return Salary+Allowance+(Hours-70)*20; else return Salary+Allowance;class Managervirtual public Person 请彳取 protected:int Allowance;int Hours; /第几节课 char B;请假日期 char Z;课程名称public:Manager() Duty=3;Salary=750;Allowance=250; void lnput() cout«"n 学号cin»num; cout«"n 姓名c
24、in»Name;cout<<"n 性别 :" cin>>sex;cout<<"n 年龄 :" cin>>old;cout<<"n 班级 :" cin>>G;cout<<"n 第几节课 :" cin>>Hours;Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>sex>>old>
25、>G>>Duty>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<Sa
26、lary<<"t"<<endl; class Collegeprivate: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
27、 Build(); / 导引void Stat(); / 统计;College:College() / 构造函数 (创建 1 个头结点的链表)Person *p=new Teacher;PL=p; cout<<"自动装入数据n"Build(); College:College() / 析构函数(仅保留1 个头结点 )Person *p=PL;while(p) / 逐个删除结点,包括头结点PL=p->next;delete p;p=PL;PL=0;void College:Add() / 增加char c; do cout<<"n* 增
28、加 *n"/查找尾结点Person *p=PL; 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->next=pm;break;case 4: pta=new T
29、eacher_Assistant; pta->Input();p->next=pta;break;default: return;cout<<" 是否进行循环?y/nn"cin>>c;while(c='y'|c='Y');Save();/查找void College:Find()double ID;Person *p1;Person *p2;cout<<" 输入你要查询的编号: "cin>>ID;p1=PL->next;p2=PL;while(p1)if(p
30、1->num=ID)break; / 找到elsep2=p1; / 继续查找p1=p1->next;if(!p1) cout<<" 找不到你所查询的人 !n 请确认你所查询的编号是否出错!n"return;else cout<<"n* 出勤信息表*n"cout<<" 学号 姓名 性别 年龄 班级 缺课类型 缺课次数 n"p1->Output();/查找缺课结点(返回1-找到,0-未找到.结点指针由 p1 返回 ,p2 为前看指针 )int College:Cfind(int ID,
31、Person *p1,Person *p2)* p1=PL->next;* p2=PL;while(*p1)if(*p1)->num=ID)break; / 找到else* p2=*p1; / 继续查找* p1=(*p1)->next;return *p1?1:0;void College:Delete() / 删除cout<<"n* 删除 *n"int num; Person *p1,*p2;cout<<" 编号 :" cin>>num;if(!Cfind(num,&p1,&p2)c
32、out<<" 指定的人员没有找到 !n"elsep2->next=p1->next; / 连接delete p1;cout<<" 正确删除 !n"Save();void College:Modify() / 修改cout<<"n* 修改 *n"int num;Person *p1,*p2;cout<<" 编号 :" cin>>num;if(!Cfind(num,&p1,&p2)cout<<" 指定的人员没有
33、找到 !n"elsep1->Output(); / 输出原来的出勤信息(做提示 )p1->Input(); / 输入新的出勤信息(更新 )cout<<" 修改完成 !n"Save(); void College:Print() / 输出出勤信息cout<<"n* 出勤信息表*n"cout<<" 学号 姓名 性别 年龄 班级 缺课类型 缺课次数 n"Person *p=PL->next;if(!p)cout<<" 无出勤记录!n"return
34、;while(p) / 遍历链表,输出出勤信息p->Output();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(); / 关闭文件cout<<" 职工信息已经保存在 Person.dat.n"void College:Build() / 出勤信息char buf81; / 临时空间i
35、nt Duty; / 人员类型Person *p2; / 新建结点的指针long t; / 读写位置Clear();ifstream f("Person.dat",ios:in);Person *p=PL; / 尾结点指针while(1)t=f.tellg();f>>buf>>buf>>Duty;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=n
36、ew Teacher_Assistant; break;default: f.close(); return;p->next=p2;p=p->next;f.seekg(t);p->Input(f);elsebreak;f.close();void College:Load() / 出勤信息录入char ah;int c;cout<<"n* 出勤信息录入 *n"docout<<" 输入要录入的出勤人员个数 :n"cin>>c;for(int i=1;i<=c;i+)Person *p=PL;whi
37、le(p->next)p=p->next;int ch;cout<<" 输入出勤分类码1- 迟到 ,2-早退 ,3-请假 ,4- 旷课 :" cin>>ch;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;ca
38、se 3: pm=new Manager; pm->Input();p->next=pm;break;case 4: pta=new Teacher_Assistant; pta->Input();p->next=pta;break;default: return;Save();cout<<" 是否还要继续录入出勤信息? y/nn"cin>>ah;while(ah='Y'|ah='y');void College:Stat()Person *p1;Person *p2;double Sa=0;int a,b,i=0;double c,d;cout<<"选择你要统计的类别n1-类别;2-次数;3-缺课总次数;n"cin>>a;if(a=1)cout<<" 输入你要统计的类别: n1- 迟到 ,2-早退 ,3-请假 ,4- 旷课 n"cin>>b;p1=PL->next;p2=PL;while(p1)if(p1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同解除变更协议书
- 单位用工安全协议书
- 公司涂料供货协议书
- 卫士诊所转让协议书
- 合同欺诈赔偿协议书
- 员工自购保险协议书
- 合伙塔吊租赁协议书
- 厂房修建合约协议书
- 单位职工禁毒协议书
- 危房整治补偿协议书
- 2025年春青岛版数学九年级下册课件 5.1 第3课时 简单的分段函数
- 儿童行为干预效果评估的机器学习方法-洞察阐释
- 区块链考试试题及答案
- 演讲口才考试试题及答案
- 1.1细胞是生命活动的基本单位课件高一上学期生物人教版(2019)必修1
- 2025-2030中国氟化工行业市场发展现状及发展趋势与投资前景研究报告
- 2025年湖北省武汉市高考地理调研试卷(2月份)
- 2024年呼和浩特市玉泉区消防救援大队招聘真题
- SL631水利水电工程单元工程施工质量验收标准第3部分:地基处理与基础工程
- 新22J01 工程做法图集
- 2025年诗词大赛考试指导题库300题(含答案)
评论
0/150
提交评论