1、学生信息管理系统一卡通/由于对fsream的不熟练,不会对指定部分的数据的修改,因而删除了一些功能,同时也导致了只能对消费额进行加减,但不能导入txt文件。Code:Uni-card system.h#include using namespace std;class person public: void buildAdmin(); void buildUndergraduate(); void buildPostgraduate(); protected: char name20; char sex; char shape10; char tel12;class consumer:publ
2、ic person protected: double money;class student :public consumer /定义学生类 protected: char number20; int age; char nowClass20; char birthPlace20;class admin :public person /定义管理员类 public: void login(); void adminRegister(); void adminRegister2(); private: char account12; char password12; char title;cla
3、ss undergraduate :public student /定义本科生类 public: void searchUndergraduate(); void displayUndergraduate(); void inputUndergraduate_wrapper(); void inputUndergraduate(); void inputUndergraduate1(); void underPayout(char str); void monitorPower(); void outputClassStudent(char s); void underSearchAll();
4、 private: char monitor;class postgraduate :public student /定义研究生类 public: void searchPostgraduate(); void displayPostgraduate(); void inputPostgraduate_wrapper(); void inputPostgraduate(); void inputPostgraduate1(); void postPayout(char str); void postSearchAll(); protected: double wage;/不清楚教职工是否配备有
5、一卡通,所以暂不考虑教职工类Uni-card system.cpp#include #include #include #include #include #include uni-card system.husing namespace std;void onUndergraduate();void onPostgraduate();bool comp(char s1,char s2);void inputStudent();void adminOnLogin();/-/-以下为person类中成员函数-/-void person:buildAdmin() /建立Admin.txt fstr
6、eam file(Admin.txt,ios:out|ios:app); /打开文件,指针指向文件尾 file.close(); /关闭文件void person:buildUndergraduate() /建立Undergraduate.txt fstream file(Undergraduate.txt,ios:out|ios:app); /打开文件,指针指向文件尾 file.close(); /关闭文件void person:buildPostgraduate() /建立Postgraduate.txt fstream file(Postgraduate.txt,ios:out|ios:
7、app); /打开文件,指针指向文件尾 file.close(); /关闭文件/-/-以下为admin类中成员函数-/-void admin:login() /管理员登录及验证 int ensurance=0; char account212,password212; admin ad; cout endl 管理员登录界面 endl; cout account2; cout password2; fstream file(Admin.txt,ios:in);/打开文件,指针在文件头 file.read(char*)&ad,sizeof(ad); /读取类信息 while(!file.eof()
8、 /判断文件指针是否到文件尾 if(comp(ad.account,account2)&comp(ad.password,password2) /判断输入的字符是否与文件中的一样 cout 登录成功! endl; ensurance=1;break; file.read(char*)&ad,sizeof(ad);/如果指针没到文件尾,继续读取 file.close(); if(ensurance=0) cout 您的账号或密码输入错误! endl; file.close(); /关闭文件 if(ensurance) adminOnLogin();void admin:adminRegister
9、() /管理员在文件外录入信息 admin adm; char choose; int loop=1,loop1=1; cout endl 管理员注册 endl; while(loop1) loop1=0; cout account; fstream file(Admin.txt,ios:in);/打开文件,指针在文件头 file.read(char*)&adm,sizeof(adm); /读取类信息 while(!file.eof() /判断文件指针是否到文件尾 if(comp(adm.account,account) /判断输入的字符是否与文件中的一样 cout 账号已被占用! endl;
10、 loop1=1; break; file.read(char*)&adm,sizeof(adm);/如果指针没到文件尾,继续读取 file.close(); cout password; cout name; while(loop) cout choose; if(choose=a|choose=A) sex=m;loop=0; else if(choose=b|choose=B) sex=f;loop=0; else cout 您的输入有误,请重新选择! endl; strcat(shape,Admin); cout tel; loop=1; while(loop) cout choose
11、; if(choose=y|choose=Y) title=y;loop=0; else if(choose=n|choose=N) title=n;loop=0; else cout 您的输入有误,请重新选择! endl; void admin:adminRegister2() /将管理员信息录入admin.txt admin ad; ad.adminRegister(); fstream file(admin.txt,ios:out|ios:app); /打开文件,指针指向文件尾 file.write(char*)&ad,sizeof(ad); /把类信息写入文件 file.close()
12、; /关闭文件 cout .信息已保存 endl;/-/-以下为undergraduate类中成员函数-/-void undergraduate:searchUndergraduate() /通过学号及姓名查找学生信息 undergraduate unde1; int ensurance=1; char number220,name220; cout number2; cout name2; fstream file(Undergraduate.txt,ios:in); /打开文件,指针在文件头 file.read(char*)&unde1,sizeof(unde1); /读取类信息 whil
13、e(!file.eof() /判断文件指针是否到文件尾 if(comp(unde1.number,number2) if(comp(unde1.name,name2) cout endl endl 本科生基本信息查询结果 endl; cout 学号: unde1.number endl; cout 姓名: unde1.name endl; cout 专业班级: unde1.nowClass endl; cout 年龄: unde1.age endl; cout 性别: ; if(unde1.sex = m) cout 男 endl; else if(unde1.sex = f) cout 女
14、endl; cout 班干部: ; if(unde1.monitor = y) cout 班长 endl; else if(unde1.monitor = n) cout 无 endl; cout 籍贯: unde1.birthPlace endl; cout 电话: unde1.tel endl; cout 余额: unde1.money endl; else cout 您所输入姓名与学号不符! endl; ensurance=0; break; file.read(char*)&unde1,sizeof(unde1);/如果指针没到文件尾,继续读取 if(ensurance) cout 该
15、学号不存在! endl; file.close();void undergraduate:outputClassStudent(char s) undergraduate under4; cout endl endl s 学生基本信息 endl 学号 姓名 专业班级 班长 年龄 性别 籍贯 电话 余额 endl; fstream file(Undergraduate.txt,ios:in);/打开文件,指针在文件头 file.read(char*)&under4,sizeof(under4); /读取类信息 while(!file.eof() /判断文件指针是否到文件尾 if(comp(und
16、er4.nowClass,s) cout setw(12) under4.number setw(8) under4.name setw(16) under4.nowClass setw(3) under4.monitor setw(4) under4.age setw(3) under4.sex setw(12) under4.birthPlace setw(14) under4.tel setw(6) under4.money endl; file.read(char*)&under4,sizeof(under4);/如果指针没到文件尾,继续读取 file.close();void und
17、ergraduate:monitorPower() undergraduate under3; int ensure=0,ensureExit=1; char number220; char name220; cout number2; cout name2; fstream file(Undergraduate.txt,ios:in);/打开文件,指针在文件头 file.read(char*)&under3,sizeof(under3); /读取类信息 while(!file.eof() /判断文件指针是否到文件尾 if(comp(under3.number,number2) if(comp
18、(under3.name,name2) if(under3.monitor=y) ensure =1 ; else cout 你不是班长,别冒牌了! endl; else cout 您输入的学号和姓名不符! endl; ensureExit=0; break; file.read(char*)&under3,sizeof(under3);/如果指针没到文件尾,继续读取 file.close(); if(ensureExit) cout 您所输入的学号不存在! endl; if(ensure) outputClassStudent(under3.nowClass);void undergradu
19、ate:inputUndergraduate() /管理员录入本科生信息 undergraduate undInput; char choose; int loop=1,loop1=1; strcat(shape,Undergraduate); while(loop1) loop1=0; cout number; fstream file(Undergraduate.txt,ios:in);/打开文件,指针在文件头 file.read(char*)&undInput,sizeof(undInput); /读取类信息 while(!file.eof() /判断文件指针是否到文件尾 if(comp
20、(undInput.number,number) /判断输入的字符是否与文件中的一样 cout 该学号已经录入 endl; loop1=1; break; file.read(char*)&undInput,sizeof(undInput);/如果指针没到文件尾,继续读取*/ file.close(); cout name; cout nowClass; cout age; while(loop) cout choose; if(choose=a|choose=A) sex=m;loop=0; else if(choose=b|choose=B) sex=f;loop=0; else cout
21、 您的输入有误,请重新选择! endl; cout birthPlace; cout tel; money = 0; loop=1; while(loop) cout choose; if(choose=y|choose=Y) monitor=y;loop=0; else if(choose=n|choose=N) monitor=n;loop=0; else cout 您的输入有误,请重新选择! endl; void undergraduate:inputUndergraduate1() /管理员本科生信息进Undergraduate.txt文件 undergraduate undInput
22、1; undInput1.inputUndergraduate(); fstream file(Undergraduate.txt,ios:out|ios:app); /打开文件,指针指向文件尾 file.write(char*)&undInput1,sizeof(undInput1); /把类信息写入文件 file.close(); /关闭文件 cout .信息已保存 endl;void undergraduate:inputUndergraduate_wrapper() /OK!管理员录入本科生信息时单个录入或多个录入 char totalChar; int total,loop=1,i;
23、 undergraduate underInputWrapper; while(loop) loop=0; cout 本科生信息录入 endl; cout totalChar; if(totalChar9) cout 您的输入有误,请重新输入! endl; loop = 1; continue; total = totalChar-0; for(i = 0; i total; i+) cout 第 i+1 位同学: endl; underInputWrapper.inputUndergraduate1() ; void undergraduate:underPayout(char str) char choose; double payMoney; undergraduate undePay1; fstream file(Undergraduate.txt,ios:in); /打开文件,指针在文件头 file.read(char*)&undePay1,sizeof(undePay1); /读取类信息 while(!file.e
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1