饭卡管理系统_第1页
饭卡管理系统_第2页
饭卡管理系统_第3页
饭卡管理系统_第4页
饭卡管理系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、饭卡管理系统指导教师班级姓名学号完成日期 系统需求:随着宁波大学的发展,学生,教师及外来人员的不断增加,对于食堂来讲, 普通意义上 的现金交易严重影响了工作效率, 使消费者等待时间加长, 食堂交易方式数字化已经刻不容 缓,宁波大学饭卡管理系统就是基于以上问题开发, 基本上能实现普通交易的功能, 同时又 能提高工作效率。功能分析: 宁大高校饭卡信息包括:饭卡号码、饭卡所有者信息、初次办卡时间、余额。其中,饭 卡的所有者分为学生、教师、临时人员,学生有各自的班级号,教师有所属学院等信息。 实现功能:( 1) 学生入学或老师新调入,需要新建一张饭卡。( 2) 学生毕业或老师调离,撤销当前对象的饭卡。

2、( 3) 饭卡的充值和消费。( 4) 查询和排序功能A:按饭卡所有人姓名查询,输出此饭卡的所有信息。B:按饭卡号码查询,输出此饭卡的所有信息。 C:按饭卡号码大小排序,输出所有饭卡的信息。程序设计:Ccard 类:基类,设置初始信息,设置充值,消费,余额 , 信息查询对象函数,初始信息中 包括人的公有特征,如姓名,性别,身份证号码。声明代码:Cstudent 类: 从 Ccard 类公有继承初始信息函数、查询函数,自己再设置独立的关于学生 的对象,譬如班级号和类别,并要求对卡号保存。声明代码:Cteacher 类:从 Ccard 类公有继承初始信息函数、查询函数,自己再设置独立的关于教师 的对

3、象,譬如所属学院、职称,并要求对卡号保存。声明代码:Ctemp 类:从 Ccard 类公有继承初始信息函数、查询函数,由于是临时卡,不保存卡号。 声明代码:遇到问题:1) 当查询充值余额和消费余额时,程序正常是调用double result();/充值函数、double consume();/ 消费函数、 double balance();/ 余额函数,但是当运行余额 函数时,总会 2 次调用充值和消费函数,这样就直接导致充值的金额和消费的余额 扩大一倍,最后发现原来是返回函数写错了,因为money 是余额 ,money1 是充值金额,money2是消费金额,我在而我都返回了money值给充值

4、函数、消费函数和余额函数。2) 按照卡号查询饭卡所有者信息时,除了初始信息,姓名,性别,身份证号码外,最 主要的还是查询出这个号码的所剩余额, 刚开始时我使用的是调用充值, 消费函数,这样一来,当输出余额是会弹出对话框,问你充了多少钱,消费了多少钱,一般情况下查询时肯定不会充值和消费,所以应该输入充值0 消费 0,但是这样对于操作会很繁琐,虽然结果一样会输出,最后我直接调用money对象,直接输出,这样就不用再手动输入了,结果直接会显示在显示屏上。3)删除信息函数,最后由于查的可以用指针的方法用new 和 delet函数彻底释放内存中的信息,但是由于对C+勺认识不够深,不会用指针的方法处理这个

5、删除任务,所以简而求其次,把各个初值都赋 0 值,这样的话信息就会以 0 初值的方式显示,也可以说基本完成删除信息的任务4) 用姓名查找, 首先想到怎么去掉用姓名函数, 然后通过再把和姓名相关的信息输出,但是写好程序后,不管输入怎么的姓名,程序就是无动于衷,什么都输不出,最后和老师一讨论,决定用匹配的方式,就是输入的姓名和原始建卡时所存在的姓名匹配,成功的话 sflag 设 1,输出建卡时的内容,简单易懂改进:这个程序只能说够用, 挺基本的, 很多功能还需要修改完善, 譬如可以实现个人历史充 值记录和消费记录, 然后可以知道他的日平均消费或者月平均消费, 对于数字的输入也没有 比较好的识别,

6、譬如金额可以输入负数可以输入字母, 虽然程序中写明用数字, 但是实用中 难免会出现误输入,系统就不会报错。感想:最最有体会的地方就是我对 C+程序员致以最高的尊敬,写程序真的是太痛苦了,对于 初学C+语言的我来说,亲自写个程序对我是莫大的考验,整个程序涉及到了C+的各个方面,如书中的继承,结构,类,运算符操作,数值定义方法等等,一旦程序写完觉得自己整 个人都轻松了很多, 其中我要感谢帮助过我的人, 我的指导老师, 我的同窗,我想要真正写 个能在实际生活中使用的程序, 凭现在的我是万万不可能的, 这得积累几年的经验, 几年的 锻炼才可以啊, 虽然这是个基础程序,但也凝结了我几天的辛勤劳作,万事开

7、头难,有了这次实践,我想我以后会做的更好。功能框图:系统总程序:#include<iostream>#include<string> #include<cstdlib> using namespace std;class CCard protected: char sex; string idnum; int cardnum1; string name; string chucitime; double balance; static int cardnum;public:CCard(); void setsex(char); char getsex();

8、void setidnum(string); string getidnum(); void setname(string); string getname(); void setchuci(string); string getchuci(); void chongzhi(double); void consume(double); double getbalance(); int getcardnum(); void del(); void add();/ 卡类/ 拥卡者性别 / 拥卡者 ID/ 拥卡者卡号/ 拥卡者姓名/ 初次办卡的时间/ 卡内余额/ 卡号设为静态,可以使卡号连续增加/

9、设置拥卡者性别/ 获得拥卡者性别/ 设置拥卡者 ID/ 获得拥卡者的 ID/ 设置拥卡者名字/ 获取拥卡者名字/ 设置办卡时间/ 获取办卡时间/ 充值/ 消费/ 获取卡内余额/ 获取饭卡编号/ 消除饭卡/ 新建饭卡;class CStudent:public CCard protected:string class1; char lei;public:void check();void display();/ 学生类,派生自卡类/ 班级/ 学生属性(本科、研究生)/ 核查身份/ 现实信息void setclass(string);/ 设置班级string getclass();/ 获得班级vo

10、id setlei(char);/ 设置学生属性char getlei();/ 获得学生属性addcstudent();/ 添加学生;class CTeacher:public CCard protected:string xueyuan; char zhicheng;public:/ 教师类,派生自卡类void setxueyuan(string); / string getxueyuan();void setzhicheng(char); char getzhicheng(); void check();void display();class CTemp:public CCardpubl

11、ic: void check(); void display();/ 教师所属学院 / 教师职称设置教师所属学院/ 获得教师所属学院 / 设置教师职称 / 获得教师职称 / 查询信息 / 显示信息/ 临时人员类,派生自卡类/ 核查信息/ 显示信息int CCard:cardnum=1; / 初始化卡号为 1 CCard:CCard() / 卡类构造函数cardnum1=cardnum+;/ 拥卡者卡号为初始卡号加 1,当创建对象时,会自动加1name="0"balance=0;/ 余额sex='0'idnum="0"/ 拥卡者 IDchu

12、citime="0"/ 初次办卡的时间 0CCard:CCard(); / 卡类析构函数void CCard:setname(string na) / 卡类对象函数,设置拥卡者姓名, na 为写的名字name=na;string CCard:getname() return name;void CCard:setchuci(string time) chucitime=time;string CCard:getchuci() return chucitime;void CCard:chongzhi(double m) balance+=m;cout<<"

13、; 你的充值数额 :"<<m<<" void CCard:consume(double e) if (balance>=e) / 获得拥卡者姓名/ 设置办卡时间/ 获得办卡时间/ 卡类对象函数,给卡充值, m 充值金额当前余额 :"<<balance<<endl;/ 卡类对象函数,消费金额, e 消费金额balance-=e;cout<<"您已消费"<<e<<"元,余额:"<<balance<<endl;else

14、/ 余额少于消费金额,余额不足cout<<" 你的余额不足,请充值 "<<endl;double CCard:getbalance()/ 获得饭卡余额return balance;int CCard:getcardnum()/获得卡号。 1 加上去return cardnum1;void CCard:setsex(char sex1)sex=sex1;char CCard:getsex()return sex;void CCard:setidnum(string id) idnum=id;/ 设置拥卡者性别/ 获得拥卡者性别/ 设置拥卡者身份证号,

15、id 为输入账号string CCard:getidnum()/ 获得拥卡者身份证号return idnum;void CStudent:setclass(string class2)/ 设置拥卡者班级 class1=class2;string CStudent:getclass()return class1;void CStudent:setlei(char lei1)lei=lei1;/ 获得拥卡者班级/ 设置拥卡者属性(本科、研究生)char CStudent:getlei()return lei;/ 获得拥卡者属性(本科、研究生)void CTeacher:setxueyuan(str

16、ing xueyuan1) /Teacher 类中,设置教师所属学院 xueyuan=xueyuan1;string CTeacher:getxueyuan()return xueyuan;/Teacher 类中,获得教师所属学院void CTeacher:setzhicheng(char zhicheng1) zhicheng=zhicheng1;/Teacher 类中,设置教师职称char CTeacher:getzhicheng()return zhicheng;/Teacher 类中,获得教师职称void main()int choice;int m,i;int num1,num2,n

17、um3;char tt;CStudent s100;CTeacher t100;CTemp c100;int ssign=0,tsign=0,csign=0,temp1; string temp,na1;string num4,num5,num6;int n0,n1,n2,na2;int flagx = 0;int flag = 0;int sflag = 0;/ 选项变量/switch 语句中的选择数据/ 消费充值,匹配姓名卡号时用/ 定义性别时用/CStudent 类对象 10 个/CTeacher 类对象 10 个 /CTemp 类对象10 个/ 撤销卡,匹配姓名卡号的时候用while(

18、choice!=0)cout<<"*n"cout<<" 宁波大学饭卡管理系统n"cout<<"*n"cout<<"cout<<"*1-帮助信息*n"cout<<"*cout<<"*cout<<"*cout<<"*cout<<"*cout<<"*2-新建饭卡*n"3-撤销饭卡*n"4-饭卡充值*n&

19、quot;5-饭卡消费*n"6-饭卡查询和排序*n"0-退出系统*n"cout<<"*n" cout<<" 请选择操作选择 (0 6):"<<endl; cin>>choice;switch (choice)case 1:cout<<"nn 宁大饭卡分为三类,教师卡、学生卡、临时卡。 n" <<"您可以根据您的需要按照服务代码建立饭卡,用于就餐、借阅、医疗 等方面消费。 nnn"break;case 2:cout&

20、lt;<" n"cout<<" * 请选择您所需的操作 * n"cout<<" 学生 1; 老师 2; 临时人员 3.(选择后按回车键确认 )n"cin>>m;while(m!=0)switch(m)case 1: / 学生建卡if(100=ssign) / 最多 100 个cout<<" 学生帐户已满,不能添加!"<<endl;cout<<" 输入学生姓名 :"cin>>temp;sssign.setna

21、me(temp); / 调用卡基类的设置姓名 cout<<" 输入初次办卡时间 (如:2010-1-1):"cin>>temp;sssign.setchuci(temp); / 调用卡基类的设置初次建卡时间cout<<"输入性别:(女一f;男一m)"cin>>tt;if(tt)!='f&&(tt)!='m')/ 如果不输入 f 和 mcout<<"指令错误!请重新输入!"<<e ndl;cout<<"请

22、输入您的性别(女一f;男一m):"cin>>tt;sssign.setsex(tt); / 调用卡基类的设置性别 cout<<" 输入身份证号码 :"cin>>temp; sssign.setidnum(temp); cout<<" 所在班级号 :"cin>>temp;sssign.setclass(temp); / 调用派生类学生类的设置班级函数 cout<<" 所属类别 (本科生 b; 研究生 y):"cin>>tt; if(tt)!=&

23、#39;y'&&(tt)!='b')cout<<" 指令错误!请重新输入! "<<endl; cout<<" 所属类别 (本科生 b; 研究生 y):" cin>>tt;sssign.setlei(tt); / 调用派生类学生类的设置类型函数 cout<<" 添加学生帐户成功 !"<<endl;ssign+;/ 继续下一个break;case 2: / 老师建卡 if(100=tsign)cout<<"

24、 教师帐户已满,不能添加 !"<<endl; cout<<" 输入老师姓名 :" cin>>temp;ttsign.setname(temp);cout<<" 输入初次办卡时间 (如:2010-1-1):" cin>>temp;ttsign.setchuci(temp);cout<<"输入性别(女一f;男一m):" cin>>tt;if(tt)!='f'&&(tt)!='m')cout<&

25、lt;"指令错误!请重新输入!"<<e ndl;cout<<"请输入您的性别(女一f;男一m):" cin>>tt;cout<<" 输入身份证号码 :"cin>>temp;ttsign.setidnum(temp);cout<<" 所属学院 :"cin>>temp;ttsign.setxueyuan(temp);cout<<"职称(讲师一j;副教授一fp; 教授一P):" cin>>tt;

26、if(tt)!='j'&&(tt)!='fp'&&(tt)!='p')co ut< < "指令错误!请重新输入!"<<endl;教授一 p):"co ut< < "所属类别 (讲师 j; 副教授 fp; cin>>tt;ttsign.setzhicheng(tt);/ 设置职称cout<<"添加教师帐户成功!!"<<e ndl;tsign+;/ 继续下一个break;case 3:/

27、临时建卡if(100=csign)cout<<" 临时帐户已满,不能添加 !"<<endl;cout< <"输入临时人员姓名:"cin>>temp;ccsign.setname(temp);cout<<"输入初次办卡时间(如:2010-6-1):" cin>>temp;ccsign.setchuci(temp);cout<<" 输入性别 (女 f;男 m):"cin>>tt;if(tt)!='f'&

28、;&(tt)!='m')cout<<"指令错误!请重新输入!"<<e ndl;cout<<"请输入您的性别(女一f;男一m):" cin>>tt;ccsign.setsex(tt); / 设置性别cout<<" 输入身份证号码 :" cin>>temp; ccsign.setidnum(temp); cout<<" 添加临时帐户成功 !" csign+;break;break;break;case 3:cou

29、t<<" 请输入待撤销饭卡用户姓名 n" cin>>na1;cout<<" 请输入待撤销饭卡用户卡号 n"cin>>na2;for(i=0;i<100;i+)num4=si.getname();num5=ti.getname();num6=ci.getname();n0=si.getcardnum();n1=ti.getcardnum();/ 输入姓名和学生卡读取姓名一样/ 输入卡号和学生卡读取卡号一样n2=ci.getcardnum(); if (na1=num4) if(na2=n0)si.set

30、name("0"); / 赋 0 值 si.setchuci("0");si.setsex('0');si.setidnum("0");si.setclass("0");si.setlei('0');cout<<" 卡号 :"<<si.getcardnum()<<" 姓名 :"<<si.getname()<<" 办卡时间 :"<<si.getchuci(

31、)<<" 余额 :"<<si.getbalance();cout<<" 性 别 :"<<si.getsex()<<" 身 份 证 号 :"<<si.getidnum()<<" 所在班级 :"<<si.getclass()<<" 类别 :"<<si.getlei()<<"n" sflag = 1;break;if(na1=num5) / 输入姓名和

32、教师卡读取姓名一样if(na2=n1) / 输入卡号和教师卡读取卡号一样ti.setname("0");/ 赋 0 值ti.setchuci("0");ti.setsex('0');ti.setidnum("0");ti.setxueyuan("0");ti.setzhicheng('0');cout<<" 卡号 :"<<ti.getcardnum()<<" 姓名 :"<<ti.getname()

33、 <<" 办卡时间 :"<<ti.getchuci()<<" 余额 :"<<ti.getbalance();cout<<" 性别 :"<<ti.getsex()<<" 身份证号 :"<<ti.getidnum() <<所属学院 :"<<ti.getxueyuan()< 职称 :"<<ti.getzhicheng()<<"n"sf

34、lag = 1;break;if(na1=num6)/ 输入卡号和临时卡读取卡号一样if(na2=n2)/ 输入卡号和临时卡读取卡号一样ci.setname("0"); / 赋 0 值ci.setchuci("0");ci.setsex('0');ci.setidnum("0");次办卡:cout<<" 卡号 :"<<ci.getcardnum()<<" 姓名 :"<<ci.getname()<<" 初<

35、<ci.getchuci()<<" 余额 :"<<ci.getbalance();cout<<" 性别 :"<<ci.getsex()<<" 身份证号 :"<<ci.getidnum()<<"n" sflag = 1;break;if(1=sflag)cout<<" 该账户已成功删除 !"<<endl;if(0=sflag) / 姓名不匹配cout<<"nn 查

36、无此人 !nn"<<endl;elsesflag = 0;break;case 4:/ 饭卡充值double m1;cout<<" 请输入待充值的卡号 n"cin>>temp1;for(i=0;i<100;i+)num1=si.getcardnum(); / 学生卡号 num2=ti.getcardnum(); / 教师卡号 num3=ci.getcardnum(); / 临时卡卡号 if(temp1=num1) if(si.getname()!="str")cout<<" 请输入

37、充值数额 n"cin>>m1;si.chongzhi(m1); / 调用卡基类充值函数 flagx = 1;break;if(temp1=num2) if(ti.getname()!="str")cout<<" 请输入充值数额 n"cin>>m1;ti.chongzhi(m1);flagx = 1;break;if (temp1=num3)if(ci.getname()!="str")cout<<" 请输入充值数额 n" cin>>m1;ci.c

38、hongzhi(m1);flagx = 1;break;if(0=flagx) / 查无此人cout<<"nn 查无此人 !nn"elseflagx = 0;break; break;case 5:cout<<" 请输入待消费的卡号 n"cin>>temp1;for(i=0;i<100;i+) if(temp1=si.getcardnum() / 学生消费cout<<" 请输入消费金额 n"cin>>m1;si.consume(m1);flag = 1;break;el

39、se if(temp1=ti.getcardnum() / 老师消费cout<<" 请输入消费金额 n"cin>>m1;ti.consume(m1);flag = 1;break;else if(temp1=ci.getcardnum() / 临时卡消费cout<<" 请输入消费金额 n"cin>>m1;ci.consume(m1);flag = 1;break;cout<<"nn 查无此人 !nn"elseif(0=flag)/ 姓名卡号不匹配flag = 0; break

40、;case 6:cout<<" 请选择排序 1; 查询 2n" cin>>m;switch (m)case 1:cout<<"现有用户按卡号从大到小排列为:"<<e ndl;for(i=99;i>=0;i-)if(ci.getname()!="0")/ 临时卡信息cout<<" 卡 号 名:"<<ci.getname()<<"办卡时间:"<<ci.getchuci()<<"

41、cout<<" 性别 (女一 f; 号:"<<ci.getid num() <<"n"for(i=99;i>=0;i-)if(ti.getname()!="0")cout<<" 卡:"<<ci.getcardnum()<<" 余额 :"<<ci.getbalance(); 男 m):"<<ci.getsex()<<"/ 教师信息号名:"<<t

42、i.getname()<<"办卡时间:"<<ti.getchuci()<<" cout<<" 性别 (女 f;:"<<ti.getcardnum()<<" 余额 :"<<ti.getbalance(); 男 m):"<<ti.getsex()<<"身份证身份证号 :"<<ti.getidnum()<<" 所属学院 :"<<ti.get

43、xueyuan()<<" 职称 (讲师一 j; 副教授一 fp; 教授一 p):"<<ti.getzhicheng()<<"n"for(i=99;i>=0;i-)if(si.getname()!="0") cout<<" 卡/ 学生信息名:"<<si.get name()<<"号:"<<si.getid num()<<" y):"<<si.getlei()<

44、<"n"号办卡时间 :"<<si.getchuci()<<" cout<<" 性别 (女 f;所在班级 :"<<si.getclass()<<":"<<si.getcardnum()<<" 余额 :"<<si.getbalance(); 男 m):"<<si.getsex()<<" 所属类别 (本科生 b;身份证 研究生break;case 2:cou

45、t<<"请输入饭卡拥有者名字一1;饭卡号码一2 n"cin>>m;switch (m) case 1:cout<<" 请输入饭卡查询的名字 n"cin>>na1;for(i=0;i<100;i+)num4=si.getname();/ 学生num5=ti.getname();/ 教师num6=ci.getname();/ 临时卡if (na1=num4) cout<<" 卡号 :"<<si.getcardnum()<<" 姓名 :&qu

46、ot;<<si.getname()<<" 办卡时间 :"<<si.getchuci()<<" 余额 :"<<si.getbalance();cout<<" 性 别 ( 女 f; 男 m):"<<si.getsex()<<" 身 份 证 号 :"<<si.getidnum()<<" 所在班级 :"<<si.getclass()<<" 所属类别 (

47、本科生 b; 研究生 y):"<<si.getlei()<<"n"sflag = 1;break;else if(na1=num5)cout<<" 卡号 :"<<ti.getcardnum()<<" 姓名 :"<<ti.getname()<<" 办卡时间 :"<<ti.getchuci()<<" 余额 :"<<ti.getbalance();cout<<&

48、quot; 性 别 ( 女 f; 男 m):"<<ti.getsex()<<" 身 份 证 号 :"<<ti.getidnum()<<" 所属学院 :"<<ti.getxueyuan()<<" 职称 ( 讲师 j; 副教授 fp; 教授 p):"<<ti.getzhicheng()<<"n"sflag = 1;break;else if(na1=num6)cout<<" 卡号 :"

49、;<<ci.getcardnum()<<" 姓名 :"<<ci.getname()<<" 办卡时间 :"<<ci.getchuci()<<" 余额 :"<<ci.getbalance();cout<<" 性 别 ( 女 f; 男 m):"<<ci.getsex()<<" 身 份 证 号:"<<ci.getid num()<<"n"sflag = 1;break; if(0=sflag)cout<<"nn 查无此人 !nn"<<

温馨提示

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

评论

0/150

提交评论