1、附录代码:include iostream”#include conio。h#include string。h”include fstreamusing namespace std;#define Size 1000class Recordpublic: Record(); /构造函数 void Entersystem(); /进入系统函数 void GetPwd(); /获取密码 void SetDate(); /输入设置学生信息 void SetPwd(); /修改登录密码 void ReadDate(); /读取文本信息函数 void SaveData(); /向文本保存信息函数 voi
2、d PutRecord(); /输入考勤函数 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 password2
3、0; /登录密码void ShowDate(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
4、 CRecordi。kuangkeendl;/获取密码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::inios::bi
5、nary);file。get(repwd,20,0);file。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); cout”nnntt密码输入错误!还有a次输入机会!n; couttt; system(”pause”); else system(”cls”); coutnnntt连续3次密码
6、输入错误!系统自动退出!n”; couttt”; system(pause”); exit(0); else break;/修改密码void Record:SetPwd() char repwd20=0; int a=0; while(!a) system(”cls);cout”nnnntt输入原密码: ”; GetPwd(); if(strcmp(password,pwd)!=0) cout”nntt原密码错误!nn” a; if(a) system(”cls”); cout”nnnnttt密码修改失败!nn; else cout”nntt请输入新密码:; GetPwd(); strcpy(
7、repwd,password); cout”nntt再次输入新密码:”; GetPwd(); if(strcmp(repwd,password)!=0) couta;if(a) system(”cls); cout”nnnnttt密码修改失败!nn”; else strcpy(pwd,password); cout”nntt密码修改成功!请牢记你的新密码!nn”; fstream file(”mima。dat”,ios::out|ios:binary); file。write(pwd,strlen(pwd)); file.close(); break; /输入增添学生人数void Record
8、:SetDate() int i=0; int m=0; cout”n输入/增添学生人数 : ”; cinm; for(i=0;im;i+) cout”n输入/增添第”i+1”个学生的信息 :”endl; cout”nt学号: ”; cinCRecordrenshu+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;js;j+) if(CRecordi.ID=CRecord
9、j.ID) strcpy(r,CRecordi.Name); strcpy(CRecordi。Name,CRecordj.Name); strcpy(CRecordj。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.zaotui; CRecordj。zaotui=z; z=CRecordi。qi
10、ngjia; CRecordi。qingjia=CRecordj。qingjia; CRecordj。qingjia=z; z=CRecordi。kuangke;CRecordi。kuangke=CRecordj。kuangke; CRecordj。kuangke=z; /设置学生考勤信息void Record::PutRecord() int i; double long id;if(renshu=0) cout=renshu) coutn没有你所查找的记录!n”; else cout”n该学生的原始信息记录是:n; coutnt学号姓名迟到早退请假旷课endl; ShowDate(i);
11、coutn信息记录:n”; int m=0; while(!m) int n; coutnt请输入选择缺课类型: ( 1迟到 2早退 3请假 4旷课 ) : ”; cinn; switch(n) case 1: coutn; CRecordi.chidao+=n; break;case 2: cout”n请输入早退次数: ”; cinn; CRecordi.zaotui+=n; break;case 3: coutn; CRecordi。qingjia+=n; break;case 4: coutn; CRecordi.kuangke+=n; break; default: break; co
12、ut”nt继续输入该生考情请输0否则输任意值: ”; cinm; cout”n该学生现在的信息记录是: n; coutnt学号姓名迟到早退请假旷课”endl; ShowDate(i);/修改学生信息void Record::ModifyDate() int i,j=1; long id;if(renshu=0) coutid;for(i=0;irenshu;i+) if(CRecordi。ID=id) break; if(i=renshu) cout”ntt没有你所查找的记录!n; cout”n重新查询修改请输0否则输任意值:”; cini; if(i=0) j=1; else system(
13、”cls”); cout”nnnn ttt 信息修改失败!nn; break; else cout”n该学生的原始信息是:n”; cout”nt学号姓名迟到早退请假旷课endl; ShowDate(i); cout”n信息修改: n”; char name=0; int n=0; while(n=0) cout”nt选择修改内容: ( 1学号 2姓名 3迟到 4早退 5请假 6旷课) : ”; cinn; switch(n) case 1:cout”n新的学号:”; cinid; CRecordi。ID=id;break; case 2: coutn新的姓名:; cinname; strcpy
14、(CRecordi。Name,name); break; case 3: cout”n输入迟到次数:”; cinn; CRecordi.chidao=n; break; case 4: coutn; CRecordi.zaotui=n; break; case 5: coutn输入请假次数:”; cinn; CRecordi。qingjia=n; break; case 6: coutn; CRecordi.kuangke=n; break; default: break; cout”nt该学生修改后的信息是:n; cout”nt学号姓名迟到早退请假旷课”endl; ShowDate(i);
15、cout”nn 继续修改该生请输入0 修改其他学生请输入1 否则请输入其他任意值: ”; cinj; if(j=0) n=0; else if(j=1) break; else j=2; system(”cls); cout”nnnn 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;else coutj; if(j=1) coutA; if(A
16、=aA=a+32) renshu=0; cout”nnnttt所有信息删除成功!nn; else if(A=bA=b+32) cout”nnttt你取消了对所有信息的删除!nn; else cout”nnttt输入错误!删除失败!nn”; else if(j=2) while(!i) system(cls); coutn请输入要删除学生的学号: ”; cinid;for(i=0;irenshu;i+) if(CRecordi.ID=id) break; if(i=renshu) cout”n没有你所查找的记录!n”; else cout”n该学生的原始信息是:n”; cout”nt学号姓名迟到
17、早退请假旷课”endl; ShowDate(i); coutn是否删除该学生的信息: ” 确认(Y)/取消(N): ; cinA; if(A=a|A=a+32) j=renshu1; strcpy(r,CRecordi.Name); strcpy(CRecordi。Name,CRecordj。Name); strcpy(CRecordrenshu1。Name,r);t=CRecordi。ID;CRecordi。ID=CRecordj.ID;CRecordj。ID=t;z=CRecordi。chidao;CRecordi.chidao=CRecordj。chidao;CRecordj.chida
18、o=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=CRecordj。kuangke;CRecordj。kuangke=z; renshu; cout”nntt该学生删除信息删除成功!nn; else if(A=b|A=b+32) coutnntt你取消了对该生信息的删除!nn; el
19、se couti; if(i) coutnnnnttt你取消了对学生信息的继续删除!n; else cout”nnttt输入错误!操作失败!nn”;/按学号输出某个学生的信息void Record:FindRecord() int i; long id; int a=0; if(renshu=0) cout”nnnnt目前没有任何学生信息请先输入学生个人信息再进行此操作!nn; else cout”n请输入你要查找的学生学号: ;cinid;for(i=0;irenshu;i+)if(CRecordi。ID=id) a=1; coutnt学号姓名迟到早退请假旷课endl;ShowDate(i)
20、;if(a=0) cout”n没有你所查找的记录!;coutendl;return;/输出全班学生的信息void Record:ShowRecord() int i; Order();if(renshu=0) cout”nnnnt目前没有任何学生信息请先输入学生个人信息再进行此操作!nn;else cout”n输出全班一学期的考情情况”endl; cout”nt学号t姓名t迟到t早退t请假t旷课endl; for(i=0;ilingshilingshilingshilingshilingshilingshi; while(!file2.eof()) file2CRecordi.ID;file2
21、CRecordi。Name;file2CRecordi。chidao;file2CRecordi.zaotui;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.ID”
22、t”; fileCRecordi.Namet”;fileCRecordi.chidaot”;fileCRecordi。zaotui”t”;fileCRecordi。qingjiat”;fileCRecordi。kuangkeendl;file。close();/测试主函数 main() Record Stu,Enter; int a=1; Enter。Entersystem(); Stu。ReadDate();while(a) system(”cls”); / cout”nt*08级物理系光信班*n;cout”nt*上课考勤管理系统*nn”;coutnt* 1: 输入/增添学生名 *nn”;
23、cout”t* 2: 修改学生信息 *nn”; coutt* 3: 单人考勤信息 *nn;cout”t* 4: 全班考情信息 *nn”;cout”t* 5: 输入学生考情 *nn;cout”t* 6: 删除学生信息 *nn”; coutt* 7: 修改登录密码 *nn”;coutt* 8: 退出 *nn”;coutchoose; system(”cls”);switch(choose)case 1: Stu.SetDate(); break; case 2: Stu。ModifyDate(); break; case 3: Stu.FindRecord(); break; case 4: Stu。ShowRecord(); break; case 5: Stu。PutRecord(); break; case 6: Stu。DelRecord(); break; case 7: Stu。SetPwd(); break; case 8: Stu.SaveData(); exit(0);defaul