《学生考勤管理系统(C++).docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统(C++).docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、附录代码:#include iostream#include #include string.h#include using namespace std;#define Size 1000class Recordpublic: Record(); /构造函数 void Entersystem(); /进入系统函数 void GetPwd(); /获取密码 void SetDate(); /输入设置学生信息 void SetPwd(); /修改登录密码 void ReadDate(); /读取文本信息函数 void SaveData(); /向文本保存信息函数 void PutRecord();
2、 /输入考勤函数 void FindRecord(); /查找学生信息函数 void ShowRecord(); /输出所有学生信息 void Order(); /按学号排序 void ModifyDate(); /修改学生信息 void DelRecord(); /删除学生信息private: int renshu; /学生人数 int chidao; /迟到次数 int zaotui; /早退次数 int kuangke; /旷课次数 int qingjia; /请假次数long ID; /学生学号char Name20; /学生姓名char password20; /登录密码void S
3、howDate(int i);/类的实现/构造函数Record:Record() renshu=0; chidao=0; zaotui=0; qingjia=0; kuangke=0; ID=0; Name20=0; password20=0;Record CRecordSize;char pwd=1,2,3,4,5,6;/输出函数void Record:ShowDate(int i) coutt CRecordi.ID CRecordi.Name CRecordi.chidao CRecordi.zaotui CRecordi.qingjia CRecordi.kuangkeendl;/获取
4、密码void Record:GetPwd() int a=0;while(1) char ch; ch=getch(); if(ch=b) if(a!=0) coutchar(b) char(b); a-; else if(ch=r) passworda=0; coutendl; break; else cout*; passworda+=ch; / /登陆进入系统void Record:Entersystem() int a=3,b=1; char repwd20; fstream file(mima.dat,ios:in|ios:binary);file.get(repwd,20,0);f
5、ile.close(); b=strlen(repwd);if(b) strcpy(pwd,repwd); while(a) system(cls); coutnnnnttt欢迎使用考勤管理系统!; coutnnntt请输入登陆密码:; GetPwd(); a-; if(strcmp(pwd,password)!=0) if(a) system(cls); coutnnntt密码输入错误!还有a次输入机会!n; couttt; system(pause); else system(cls); coutnnntt连续3次密码输入错误!系统自动退出!n; couttt; system(pause)
6、; exit(0); else break;/修改密码void Record:SetPwd() char repwd20=0; int a=0; while(!a) system(cls);coutnnnntt输入原密码: ; GetPwd(); if(strcmp(password,pwd)!=0) coutnntt原密码错误!nn a; if(a) system(cls); coutnnnnttt密码修改失败!nn; else coutnntt请输入新密码:; GetPwd(); strcpy(repwd,password); coutnntt再次输入新密码:; GetPwd(); if(
7、strcmp(repwd,password)!=0) coutnntt两次输入密码不相同!nn a;if(a) system(cls); coutnnnnttt密码修改失败!nn; else strcpy(pwd,password); coutnntt密码修改成功!请牢记你的新密码!nn; fstream file(mima.dat,ios:out|ios:binary); file.write(pwd,strlen(pwd); file.close(); break; /输入增添学生人数void Record:SetDate() int i=0; int m=0; coutm; for(i=
8、0;im;i+) coutn输入/增添第i+1个学生的信息 :endl; coutCRecordrenshu+i.ID;coutCRecordrenshu+i.Name; renshu+=m;/按学号排序void Record:Order() int s,z; long t; char r20; s=renshu; for(int i=0;is;i+) for(int j=i+1;j=CRecordj.ID) strcpy(r,CRecordi.Name); strcpy(CRecordi.Name,CRecordj.Name); strcpy(CRecordj.Name,r); t=CRec
9、ordi.ID;CRecordi.ID=CRecordj.ID;CRecordj.ID=t; z=CRecordi.chidao;CRecordi.chidao=CRecordj.chidao; CRecordj.chidao=z; z=CRecordi.zaotui; CRecordi.zaotui=CRecordj.zaotui; CRecordj.zaotui=z; z=CRecordi.qingjia; CRecordi.qingjia=CRecordj.qingjia; CRecordj.qingjia=z; z=CRecordi.kuangke;CRecordi.kuangke=C
10、Recordj.kuangke; CRecordj.kuangke=z; /设置学生考勤信息void Record:PutRecord() int i; double long id;if(renshu=0) coutnnnnt目前没有任何学生信息请先输入学生个人信息再进行此操作!nn;else coutid;for(i=0;i=renshu) coutn没有你所查找的记录!n; else coutn该学生的原始信息记录是:n; coutnt学号 姓名 迟到 早退 请假 旷课endl; ShowDate(i); coutn信息记录:n; int m=0; while(!m) int n; co
11、utn; switch(n) case 1: coutn; CRecordi.chidao+=n; break;case 2: coutn; CRecordi.zaotui+=n; break;case 3: coutn; CRecordi.qingjia+=n; break;case 4: coutn; CRecordi.kuangke+=n; break; default: break; coutm; coutn该学生现在的信息记录是: n; coutnt学号 姓名 迟到 早退 请假 旷课endl; ShowDate(i);/修改学生信息void Record:ModifyDate() i
12、nt i,j=1; long id;if(renshu=0) coutnnnnt目前没有任何学生信息请先输入学生个人信息再进行此操作!nn;else while(j=1) system(cls); coutid;for(i=0;i=renshu) coutntt没有你所查找的记录!n; couti; if(i=0) j=1; else system(cls); coutnnnn ttt 信息修改失败!nn; break; else coutn该学生的原始信息是:n; coutnt学号 姓名 迟到 早退 请 假 旷 课endl; ShowDate(i); coutn信息修改: n; char n
13、ame=0; int n=0; while(n=0) coutn; switch(n) case 1:coutid; CRecordi.ID=id; break; case 2: coutname; strcpy(CRecordi.Name,name); break; case 3: coutn; CRecordi.chidao=n; break; case 4: coutn; CRecordi.zaotui=n; break; case 5: coutn; CRecordi.qingjia=n; break; case 6: coutn; CRecordi.kuangke=n; break;
14、 default: break; coutnt该学生修改后的信息是:n; coutnt学号 姓名 迟到 早退 请假 旷课endl; ShowDate(i); coutj; if(j=0) n=0; else if(j=1) break; else j=2; system(cls); coutnnnn ttt 该学信息修改成功!nn; break; /删除学生信息void Record:DelRecord() int i=0,j,z; long t,id; char r=0,A,a=Y,b=N;if(renshu=0) coutnnnnt目前没有任何学生信息请先输入学生个人信息再进行此操作!nn
15、;else coutj; if(j=1) coutA; if(A=a|A=a+32) renshu=0; coutnnnttt所有信息删除成功!nn; else if(A=b|A=b+32) coutnnttt你取消了对所有信息的删除!nn; else coutnnttt输入错误!删除失败!nn; else if(j=2) while(!i) system(cls); coutid;for(i=0;i=renshu) coutn没有你所查找的记录!n; else coutn该学生的原始信息是:n; coutnt学号 姓名 迟到 早退 请假 旷课endl; ShowDate(i); coutn是
16、否删除该学生的信息: A; if(A=a|A=a+32) j=renshu-1; strcpy(r,CRecordi.Name); strcpy(CRecordi.Name,CRecordj.Name); strcpy(CRecordrenshu-1.Name,r);t=CRecordi.ID;CRecordi.ID=CRecordj.ID;CRecordj.ID=t;z=CRecordi.chidao;CRecordi.chidao=CRecordj.chidao;CRecordj.chidao=z; z=CRecordi.zaotui;CRecordi.zaotui=CRecordj.za
17、otui;CRecordj.zaotui=z; z=CRecordi.qingjia; CRecordi.qingjia=CRecordj.qingjia;CRecordj.qingjia=z;z=CRecordi.kuangke;CRecordi.kuangke=CRecordj.kuangke;CRecordj.kuangke=z; renshu-; coutnntt该学生删除信息删除成功!nn; else if(A=b|A=b+32) coutnntt你取消了对该生信息的删除!nn; else coutnntt输入错误!删除失败!nn; couti; if(i) coutnnnnttt你
18、取消了对学生信息的继续删除!n; else coutnnttt输入错误!操作失败!nn;/按学号输出某个学生的信息void Record:FindRecord() int i; long id; int a=0; if(renshu=0) coutnnnnt目前没有任何学生信息请先输入学生个人信息再进行此操作!nn; else coutid;for(i=0;irenshu;i+)if(CRecordi.ID=id) a=1; coutnt学号 姓名 迟到 早退 请假 旷课endl; ShowDate(i);if(a=0) coutn没有你所查找的记录!;coutendl;return;/输出全
19、班学生的信息void Record:ShowRecord() int i; Order();if(renshu=0) coutnnnnt目前没有任何学生信息请先输入学生个人信息再进行此操作!nn;else coutn输出全班一学期的考情情况endl; coutnt学号t姓名t迟到t早退t请假t旷课endl; for(i=0;ilingshilingshilingshilingshilingshilingshi; while(!file2.eof() file2CRecordi.ID;file2CRecordi.Name;file2CRecordi.chidao;file2CRecordi.za
20、otui;file2CRecordi.qingjia;file2CRecordi.kuangke;i+; if(i=0)renshu=i;else i-; renshu=i; file2.close();return;/向文本中保存信息void Record:SaveData()int i=0; Order();ofstream file(Record.txt); file学号t姓名t迟到t早退t请假t旷课endl;for(i=0;irenshu;i+) fileCRecordi.IDt; fileCRecordi.Namet;fileCRecordi.chidaot;fileCRecordi
21、.zaotuit;fileCRecordi.qingjiat;fileCRecordi.kuangkeendl;file.close();/测试主函数 main() Record Stu,Enter; int a=1; Enter.Entersystem(); Stu.ReadDate();while(a) system(cls); / coutnt*08级物理系光信班*n;coutnt*上课考勤管理系统*nn;coutnt* 1: 输入/增添学生名 *nn; coutt* 2: 修改学生信息 *nn; coutt* 3: 单人考勤信息 *nn;coutt* 4: 全班考情信息 *nn;coutt* 5: 输入学生考情 *nn;coutt* 6: 删除学生信息 *nn; coutt* 7: 修改登录密码 *nn;coutt* 8: 退出 *nn;coutchoose; system(cls);switch(choose)case 1: Stu.SetDate(); break; case 2: Stu.ModifyDate(); br