C学生信息管理系统一卡通_第1页
C学生信息管理系统一卡通_第2页
C学生信息管理系统一卡通_第3页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/ 由于对 fsream 的不熟练,不会对指定部分的数据的修改,因而删除了一些功能,同时也导致了只能对消费额进行加减,但不能导入txt文件。Code:Uni-cardsystem.h#include<string>usingnamespacestd;classpersonpublic:voidbuildAdmin();voidbuildUndergraduate();voidbuildPostgraduate();protected:charname20;charsex;charshape10;chartel12;classconsumer:publicpersonprotecte

2、d:doublemoney;classstudent:publicconsumer/ 定义学生类protected:charnumber20;intage;charnowClass20;charbirthPlace20;classadmin:publicperson/ 定义管理员类public:voidlogin();voidadminRegister();voidadminRegister2();private:characcount12;charpassword12;chartitle;classundergraduate:publicstudent/ 定义本科生类public:voids

3、earchUndergraduate();voiddisplayUndergraduate();voidinputUndergraduate_wrapper();voidinputUndergraduate();voidinputUndergraduate1();voidunderPayout(charstr);voidmonitorPower();voidoutputClassStudent(chars);voidunderSearchAll();private:charmonitor;classpostgraduate:publicstudent/ 定义研究生类public:voidsea

4、rchPostgraduate();voiddisplayPostgraduate();voidinputPostgraduate_wrapper();voidinputPostgraduate();voidinputPostgraduate1();voidpostPayout(charstr);voidpostSearchAll();protected:doublewage;/不清楚教职工是否配备有一卡通,所以暂不考虑教职工类Uni-cardsystem.cpp#include<iostream>#include<cstring>#include<fstream

5、>#include<string>#include<iomanip>#include"uni-cardsystem.h"usingnamespacestd;voidonUndergraduate();voidonPostgraduate();boolcomp(chars1,chars2);voidinputStudent();voidadminOnLogin();/-/-以下为person 类中成员函数/-voidperson:buildAdmin()/建立 Admin.txtfstreamfile("Admin.txt",

6、ios:out|ios:app);/打开文件,指针指向文件尾file.close();/ 关闭文件voidperson:buildUndergraduate()/建立 Undergraduate.txtfstreamfile("Undergraduate.txt",ios:out|ios:app);/打开文件,指针指向文件尾file.close();/ 关闭文件voidperson:buildPostgraduate()/ 建立 Postgraduate.txtfstreamfile("Postgraduate.txt",ios:out|ios:app)

7、;/打开文件,指针指向文件尾file.close();/关闭文件/-/-以下为admin类中成员函数-/-voidadmin:login()/管理员登录及验证intensurance=0;characcount212,password212;adminad;cout<<endl<<" 管理员登录界面 "<<endl;cout<<" 请输入您的账号:"cin>>account2;cout<<" 请输入您的密码:"cin>>password2;fstrea

8、mfile("Admin.txt",ios:in);/打开文件,指针在文件头file.read(char*)&ad,sizeof(ad);/读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(ad.account,account2)&&comp(ad.password,password2)/ 判断输入的字符是否与文件中的一样cout<<" 登录成功! "<<endl;ensurance=1;break;file.read(char*)&ad,sizeof(ad);/

9、如果指针没到文件尾,继续读取file.close();if(ensurance=0)cout<<" 您的账号或密码输入错误!"<<endl;file.close();/ 关闭文件if(ensurance)adminOnLogin();voidadmin:adminRegister()/管理员在文件外录入信息adminadm;charchoose;intloop=1,loop1=1;cout<<endl<<" 管理员注册 "<<endl;while(loop1)loop1=0;cout<&l

10、t;" 输入您的账号(12 位以内): "cin>>account;fstreamfile("Admin.txt",ios:in);/打开文件,指针在文件头file.read(char*)&adm,sizeof(adm);/读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(adm.account,account)/判断输入的字符是否与文件中的一样cout<<" 账号已被占用!"<<endl;loop1=1;break;file.read(char*)&am

11、p;adm,sizeof(adm);/如果指针没到文件尾,继续读取file.close();cout<<" 输入您的密码(12 位以内): "cin>>password;cout<<" 输入您的姓名:"cin>>name;while(loop)cout<<" 选择您的性别(A. 男, B. 女): "cin>>choose;if(choose='a'|choose='A')sex='m'loop=0;elseif(c

12、hoose='b'|choose='B')sex='f'loop=0;elsecout<<" 您的输入有误,请重新选择!"<<endl;strcat(shape,"Admin");cout<<" 输入您的电话:"cin>>tel;loop=1;while(loop)cout<<" 输入您的管理员权限级别,是否为高级(cin>>choose;if(choose='y'|choose='

13、Y')title='y'loop=0;elseif(choose='n'|choose='N')title='n'loop=0;elsecout<<" 您的输入有误,请重新选择!"<<endl;y/n): "voidadmin:adminRegister2()/将管理员信息录入admin.txtadminad;ad.adminRegister();fstreamfile("admin.txt",ios:out|ios:app);/ 打开文件,指针指向

14、文件尾 file.write(char*)&ad,sizeof(ad);/ 把类信息写入文件file.close();/ 关闭文件cout<<".信息已保存"<<endl;/-/-以下为undergraduate 类中成员函数-/-voidundergraduate:searchUndergraduate()/ 通过学号及姓名查找学生信息undergraduateunde1;intensurance=1;charnumber220,name220;cout<<" 请输入您所需查询学生的学号:"cin>&g

15、t;number2;cout<<" 请输入该学生的姓名:"cin>>name2;fstreamfile("Undergraduate.txt",ios:in);/ 打开文件,指针在文件头 file.read(char*)&unde1,sizeof(unde1);/ 读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(unde1.number,number2)if(comp(,name2)cout<<endl<<""<&l

16、t;endl<<" 本科生基本信息查询结果 "<<endl;cout<<"学号:"<<unde1.number<<endl;cout<<"姓名:"<<<<endl;cout<<"专业班级:"<<unde1.nowClass<<endl;cout<<"年龄:"<<unde1.age<<endl;cout<&

17、lt;"性别:"if(unde1.sex='m')cout<<"男 "<<endl;elseif(unde1.sex='f')cout<<"女 "<<endl;cout<<" 班干部:"if(unde1.monitor='y')cout<<"班长 "<<endl;elseif(unde1.monitor='n')cout<<"无

18、 "<<endl;cout<<" 籍贯: "<<unde1.birthPlace<<endl;cout<<" 电话: "<<unde1.tel<<endl;cout<<" 余额: "<<unde1.money<<endl;elsecout<<" 您所输入姓名与学号不符!"<<endl;ensurance=0;break;file.read(char*)&u

19、nde1,sizeof(unde1);/如果指针没到文件尾,继续读取if(ensurance)cout<<" 该学号不存在!"<<endl;file.close();voidundergraduate:outputClassStudent(chars)undergraduateunder4;cout<<endl<<""<<endl<<"<<"<<" "<<s<<" 学生基本信息 &quo

20、t;<<endl学号 "<<" 姓名 "<<" 专业班级 "<<" 班长 "<<" 年龄 "<<" 性别 "籍贯 "<<" 电话 "<<" 余额 "<<endl;fstreamfile("Undergraduate.txt",ios:in);/ file.read(char*)&under4,sizeo

21、f(under4);/打开文件,指针在文件头读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(under4.nowClass,s)cout<<setw(12)<<under4.number<<setw(8)<<<<setw(16)<<under4.nowClass<<setw(3)<<under4.monitor<<setw(4)<<under4.age<<setw(3)<<under4.sex

22、<<setw(12)<<under4.birthPlace<<setw(14)<<under4.tel<<setw(6)<<under4.money<<endl;file.read(char*)&under4,sizeof(under4);/如果指针没到文件尾,继续读取file.close();voidundergraduate:monitorPower()undergraduateunder3;intensure=0,ensureExit=1;charnumber220;charname220;cou

23、t<<" 请输入您的学号:"cin>>number2;cout<<" 请输入您的姓名:"cin>>name2;fstreamfile("Undergraduate.txt",ios:in);/打开文件,指针在文件头file.read(char*)&under3,sizeof(under3);/读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(under3.number,number2)if(comp(,name2)if(u

24、nder3.monitor='y')ensure=1;elsecout<<" 你不是班长,别冒牌了!"<<endl;elsecout<<" 您输入的学号和姓名不符!"<<endl;ensureExit=0;break;file.read(char*)&under3,sizeof(under3);/如果指针没到文件尾,继续读取file.close();if(ensureExit)cout<<"您所输入的学号不存在!"<<endl;if(ens

25、ure)outputClassStudent(under3.nowClass);voidundergraduate:inputUndergraduate()/管理员录入本科生信息undergraduateundInput;charchoose;intloop=1,loop1=1;strcat(shape,"Undergraduate");while(loop1)loop1=0;cout<<" 学号: "cin>>number;fstreamfile("Undergraduate.txt",ios:in);/打开

26、文件,指针在文件头file.read(char*)&undInput,sizeof(undInput);/读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(undInput.number,number)/判断输入的字符是否与文件中的一样cout<<" 该学号已经录入"<<endl;loop1=1;break;file.read(char*)&undInput,sizeof(undInput);/如果指针没到文件尾,继续读取*/file.close();cout<<" 姓名: &

27、quot;cin>>name;cout<<" 班级: "cin>>nowClass;cout<<" 年龄: "cin>>age;while(loop)cout<<" 性别( A. 男, B. 女): "cin>>choose;if(choose='a'|choose='A')sex='m'loop=0;elseif(choose='b'|choose='B')sex=

28、9;f'loop=0;elsecout<<" 您的输入有误,请重新选择!cout<<" 籍贯: "cin>>birthPlace;cout<<" 电话: "cin>>tel;money=0;loop=1;while(loop)cout<<" 该学生是否为本班级班长(cin>>choose;if(choose='y'|choose='Y')monitor='y'loop=0;elseif(choos

29、e='n'|choose='N')monitor='n'loop=0;elsecout<<" 您的输入有误,请重新选择!"<<endl;y/n): ""<<endl;voidundergraduate:inputUndergraduate1()/管理员本科生信息进Undergraduate.txt 文件undergraduateundInput1;undInput1.inputUndergraduate();fstreamfile("Undergraduate.

30、txt",ios:out|ios:app);/打开文件,指针指向文件尾file.write(char*)&undInput1,sizeof(undInput1);/把类信息写入文件file.close();/ 关闭文件cout<<". 信息已保存 "<<endl;voidundergraduate:inputUndergraduate_wrapper()/OK! 管理员录入本科生信息时单个录入或多个录入chartotalChar;inttotal,loop=1,i;undergraduateunderInputWrapper;whi

31、le(loop)loop=0;cout<<" 本科生信息录入 "<<endl;cout<<" 您想录入多少组信息( cin>>totalChar;0-9): "if(totalChar<'0'|totalChar>'9')cout<<" 您的输入有误,请重新输入!"<<endl;loop=1;continue;total=totalChar-'0'for(i=0;i<total;i+)cout<

32、;<" 第 "<<i+1<<" 位同学: "<<endl;underInputWrapper.inputUndergraduate1();voidundergraduate:underPayout(charstr)charchoose;doublepayMoney;undergraduateundePay1;fstreamfile("Undergraduate.txt",ios:in);/ 打开文件,指针在文件头 file.read(char*)&undePay1,sizeof(und

33、ePay1);/ 读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(undePay1.number,str)cout<<" 您的姓名为:"<<undeP<<" ?( y/n) "while(1)cin>>choose;if(choose='y'|choose='Y')cout<<" 您本次消费 / 充卡金额为(消费为正值,充卡为负值): " cin>>payMoney;undePa

34、y1.money-=payMoney;cout<<" 您的余额为:"<<undePay1.money<<endl;break;elseif(choose='n'|choose='N')break;elsecout<<" 您的输入错误"<<endl;break;file.read(char*)&undePay1,sizeof(undePay1);/如果指针没到文件尾,继续读取voidundergraduate:underSearchAll()undergra

35、duateunder5;cout<<endl<<" <<" 本科生基本信息 "<<endl<<" 学号 "<<" 姓名 "<<" 专业班级 "<<" 班长 "<<" 年龄 "<<" 性别 "<<" 籍贯 "<<" 电话 "<<" 余额 &quo

36、t;<<endl;"<<endlfstreamfile("Undergraduate.txt",ios:in);/ file.read(char*)&under5,sizeof(under5);/打开文件,指针在文件头读取类信息while(!file.eof()/判断文件指针是否到文件尾cout<<setw(12)<<under5.number<<setw(8)<<<<setw(16)<<under5.nowClass<<set

37、w(3)<<under5.monitor<<setw(4)<<under5.age<<setw(3)<<under5.sex<<setw(12)<<under5.birthPlace<<setw(14)<<under5.tel<<setw(6)<<under5.money<<endl; file.read(char*)&under5,sizeof(under5);/ 如果指针没到文件尾,继续读取file.close();/-/-以下为postg

38、raduate 类中成员函数-/-voidpostgraduate:searchPostgraduate()/通过学号及姓名查找学生信息postgraduatepost1;intensurance=1;charnumber220,name220;cout<<" 请输入您所需查询学生的学号:"cin>>number2;cout<<" 请输入该学生的姓名:"cin>>name2;cout<<endl<<""<<endl<<" 研究生基

39、本信息查询结果 "<<endl;fstreamfile("Postgraduate.txt",ios:in);/ file.read(char*)&post1,sizeof(post1);/打开文件,指针在文件头读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(post1.number,number2)if(comp(,name2)post1.displayPostgraduate();elsecout<<" 您所输入姓名与学号不符!"<<end

40、l;ensurance=0;break;file.read(char*)&post1,sizeof(post1);/如果指针没到文件尾,继续读取if(ensurance)cout<<" 该学号不存在!"<<endl;file.close();voidpostgraduate:inputPostgraduate()/ 管理员录入本科生信息postgraduatepostInput;charchoose;intloop=1,loop1=1;strcat(shape,"Postgraduate");while(loop1)loo

41、p1=0;cout<<" 学号: "cin>>number;fstreamfile("Postgraduate.txt",ios:in);/ 打开文件,指针在文件头 file.read(char*)&postInput,sizeof(postInput);/ 读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(postInput.number,number)/判断输入的字符是否与文件中的一样cout<<" 该学号已经录入"<<endl;loop1

42、=1;break;file.read(char*)&postInput,sizeof(postInput);/如果指针没到文件尾,继续读取*/file.close();cout<<" 姓名: "cin>>name;cout<<" 班级: "cin>>nowClass;cout<<" 年龄: "cin>>age;while(loop)cout<<" 性别( A. 男, B. 女): "cin>>choose;if(

43、choose='a'|choose='A')sex='m'loop=0;elseif(choose='b'|choose='B')sex='f'loop=0;elsecout<<" 您的输入有误,请重新选择!"<<endl;cout<<" 籍贯: "cin>>birthPlace;cout<<" 电话: "cin>>tel;cout<<" 工资:

44、"cin>>wage;money=0;loop=1;voidpostgraduate:inputPostgraduate1()/ 管理员本科生信息进Undergraduate.txt 文件postgraduatepostInput1;postInput1.inputPostgraduate();fstreamfile("Postgraduate.txt",ios:out|ios:app);/打开文件,指针指向文件尾file.write(char*)&postInput1,sizeof(postInput1);/ 把类信息写入文件 file.cl

45、ose();/ 关闭文件cout<<". 信息已保存 "<<endl;voidpostgraduate:inputPostgraduate_wrapper()/OK!管理员录入本科生信息时单个录入或多个录入chartotalChar;inttotal,loop=1,i;postgraduatepostInputWrapper;while(loop)loop=0;cout<<" 研究生信息录入 "<<endl;cout<<" 您想录入多少组信息(0-9): "cin>&g

46、t;totalChar;if(totalChar<'0'|totalChar>'9')cout<<" 您的输入有误,请重新输入!"<<endl;loop=1;continue;total=totalChar-'0'for(i=0;i<total;i+)cout<<" 第 "<<i+1<<" 位同学: "<<endl;postInputWrapper.inputPostgraduate1();void

47、postgraduate:postSearchAll()cout<<endl<<" <<" 研究生基本信息 "<<endl;"<<endlpostgraduatepost3;fstreamfile("Postgraduate.txt",ios:in);/ file.read(char*)&post3,sizeof(post3);/打开文件,指针在文件头读取类信息while(!file.eof()/判断文件指针是否到文件尾cout<<endl;post3.d

48、isplayPostgraduate();file.read(char*)&post3,sizeof(post3);/如果指针没到文件尾,继续读取file.close();voidpostgraduate:displayPostgraduate()/ 对研究生信息进行显示cout<<" 学号: "<<number<<endl;cout<<" 姓名: "<<name<<endl;cout<<" 研究方向: "<<nowClass<

49、;<endl;cout<<" 年龄: "<<age<<endl;cout<<" 性别: "if(sex='m')cout<<"男 "<<endl;elseif(sex='f')cout<<"女 "<<endl;cout<<" 工资: "<<wage<<endl;cout<<" 籍贯: "<&

50、lt;birthPlace<<endl;cout<<" 电话: "<<tel<<endl;cout<<" 余额: "<<money<<endl;voidpostgraduate:postPayout(charstr)charchoose;doublepayMoney;postgraduatepostPay1;fstreamfile("Postgraduate.txt",ios:in);/ 打开文件,指针在文件头 file.read(char*)&

51、;postPay1,sizeof(postPay1);/ 读取类信息while(!file.eof()/判断文件指针是否到文件尾if(comp(postPay1.number,str)cout<<" 您的姓名为:"<<postP<<" ?( y/n) "while(1)cin>>choose;if(choose='y'|choose='Y')cout<<" 您本次消费 / 充卡金额为(消费为正值,充卡为负值): " cin>

52、;>payMoney;postPay1.money-=payMoney;cout<<" 您的余额为:"<<postPay1.money<<endl;break;elseif(choose='n'|choose='N')break;elsecout<<" 您的输入错误"<<endl;break;file.read(char*)&postPay1,sizeof(postPay1);/如果指针没到文件尾,继续读取Main.cpp#include<io

53、stream>#include<stdlib.h>#include<fstream>#include<iomanip>#include"uni-cardsystem.h"usingnamespacestd;voidonUndergraduate();voidonPostgraduate();voidinputStudent();voidpayOut();voidsearchLeftMoney();boolcomp(chars1,chars2)/比较文件中字符和输入的字符是否相同inti=0;while(s1i!='0'

54、;&&s2i!='0'&&s1i=s2i)i+;if(s1i='0'&&s2i='0')return1;elsereturn0;voidmainMenu()/ 输入主目录cout<<"<<" 一卡通管理系统 "<<endl<<" "<<endl<<" 1.学生基本信息查询 "<<endl<<" 2.消费信息查询与消费 &quo

55、t;<<endl<<" 3.后台管理 "<<endl<<" 0.退出本系统 "<<endl<<" "<<endl<<" "<<endl<<endl<<" 请选择您的操作(0-3):"voidconsumerMenu()intloop=1;charchoose;while(loop)cout<<"<<" 消费信息管理 &qu

56、ot;<<endl<<" "<<endl"<<endl"<<endl<<" 1.消费 /充卡 "<<endl/ 消费的数额为负值即为充卡<<" 0.返回上级目录 "<<endl<<" "<<endl<<" "<<endl<<endl<<" 请选择您的操作(0-2):"cin>>choose;while(choose>'3'|choose<'0')cout<<" 您的输入有误,请重新选择!"<<endl;cout<<" 请选择您的操作(0-2):"cin>>choose;switch(choose)case'1':payOut();continue;case'2':continue;ca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论