




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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值给充值函数、消费函数和余额函数。(2
4、) 按照卡号查询饭卡所有者信息时,除了初始信息,姓名,性别,身份证号码外,最主要的还是查询出这个号码的所剩余额,刚开始时我使用的是调用充值,消费函数,这样一来,当输出余额是会弹出对话框,问你充了多少钱,消费了多少钱,一般情况下查询时肯定不会充值和消费,所以应该输入充值0消费0,但是这样对于操作会很繁琐,虽然结果一样会输出,最后我直接调用money对象,直接输出,这样就不用再手动输入了,结果直接会显示在显示屏上。(3) 删除信息函数,最后由于查的可以用指针的方法用new和delet函数彻底释放内存中的信息,但是由于对C+的认识不够深,不会用指针的方法处理这个删除任务,所以简而求其次,把各个初值都
5、赋0值,这样的话信息就会以0初值的方式显示,也可以说基本完成删除信息的任务(4) 用姓名查找,首先想到怎么去掉用姓名函数,然后通过再把和姓名相关的信息输出,但是写好程序后,不管输入怎么的姓名,程序就是无动于衷,什么都输不出,最后和老师一讨论,决定用匹配的方式,就是输入的姓名和原始建卡时所存在的姓名匹配,成功的话sflag设1,输出建卡时的内容,简单易懂改进:这个程序只能说够用,挺基本的,很多功能还需要修改完善,譬如可以实现个人历史充值记录和消费记录,然后可以知道他的日平均消费或者月平均消费,对于数字的输入也没有比较好的识别,譬如金额可以输入负数可以输入字母,虽然程序中写明用数字,但是实用中难免
6、会出现误输入,系统就不会报错。感想:最最有体会的地方就是我对C+程序员致以最高的尊敬,写程序真的是太痛苦了,对于初学C+语言的我来说,亲自写个程序对我是莫大的考验,整个程序涉及到了C+的各个方面,如书中的继承,结构,类,运算符操作,数值定义方法等等,一旦程序写完觉得自己整个人都轻松了很多,其中我要感谢帮助过我的人,我的指导老师,我的同窗,我想要真正写个能在实际生活中使用的程序,凭现在的我是万万不可能的,这得积累几年的经验,几年的锻炼才可以啊,虽然这是个基础程序,但也凝结了我几天的辛勤劳作,万事开头难,有了这次实践,我想我以后会做的更好。功能框图:主界面公有继承基类Ccard,初始信息,初始设置
7、对象,消费,充值,余额,构造函数调用学生类里的对象函数新建调用信息对象充值消费调用充值消费函数查询调用查询函数调用临时类里的对象函数新建调用信息对象充值消费调用充值消费函数查询调用查询函数调用教师类里的对象函数新建调用信息对象充值消费调用充值消费函数查询调用查询函数有效代码无效代码退出系统饭卡查询饭卡消费饭卡充值撤销饭卡新建饭卡帮助程序系统总程序:#include#include#includeusing namespace std;class CCard/卡类protected:char sex;/拥卡者性别string idnum;/拥卡者IDint cardnum1;/拥卡者卡号stri
8、ng name;/拥卡者姓名string chucitime;/初次办卡的时间double balance;/卡内余额static int cardnum;/卡号设为静态,可以使卡号连续增加public:CCard();void setsex(char);/设置拥卡者性别char getsex();/获得拥卡者性别void setidnum(string);/设置拥卡者IDstring getidnum();/获得拥卡者的IDvoid setname(string);/设置拥卡者名字string getname();/获取拥卡者名字void setchuci(string);/设置办卡时间st
9、ring getchuci();/获取办卡时间void chongzhi(double);/充值void consume(double);/消费double getbalance();/获取卡内余额 int getcardnum();/获取饭卡编号void del();/消除饭卡void add();/新建饭卡; class CStudent:public CCard/学生类,派生自卡类protected:string class1;/班级char lei;/学生属性(本科、研究生)public:void check();/核查身份void display();/现实信息void setcla
10、ss(string);/设置班级string getclass();/获得班级void setlei(char); /设置学生属性char getlei();/获得学生属性addcstudent();/添加学生;class CTeacher:public CCard/教师类,派生自卡类protected:string xueyuan;/教师所属学院char zhicheng;/教师职称public:void setxueyuan(string);/设置教师所属学院string getxueyuan();/获得教师所属学院void setzhicheng(char);/设置教师职称char ge
11、tzhicheng();/获得教师职称void check();/查询信息void display();/显示信息;class CTemp:public CCard/临时人员类,派生自卡类public:void check(); /核查信息void display(); /显示信息;int CCard:cardnum=1; /初始化卡号为1CCard:CCard() /卡类构造函数cardnum1=cardnum+; /拥卡者卡号为初始卡号加1,当创建对象时,会自动加1name=0; balance=0; /余额 sex=0; idnum=0; /拥卡者IDchucitime=0; /初次办卡
12、的时间 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) /卡类对象函数,给卡充值,m充值金额 balance+=m;cout你的充
13、值数额:m 当前余额:balance=e)balance-=e;cout您已消费e元,余额:balanceendl;else /余额少于消费金额,余额不足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(
14、string id) /设置拥卡者身份证号,id为输入账号idnum=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;
15、void CTeacher:setxueyuan(string xueyuan1) /Teacher类中,设置教师所属学院xueyuan=xueyuan1;string CTeacher:getxueyuan() /Teacher类中,获得教师所属学院return xueyuan;void CTeacher:setzhicheng(char zhicheng1) /Teacher类中,设置教师职称zhicheng=zhicheng1;char CTeacher:getzhicheng() /Teacher类中,获得教师职称return zhicheng;void main()int choic
16、e;/选项变量int m,i; /switch语句中的选择数据int num1,num2,num3; /消费充值,匹配姓名卡号时用char tt; /定义性别时用CStudent s100;/CStudent类对象 10个CTeacher t100;/CTeacher类对象 10个CTemp c100;/CTemp类对象 10个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; in
17、t sflag = 0;while(choice!=0) cout*n;cout 宁波大学饭卡管理系统 n;cout*n;cout*n;cout* 1-帮助信息 *n;cout* 2-新建饭卡 *n;cout* 3-撤销饭卡 *n;cout* 4-饭卡充值 *n;cout* 5-饭卡消费 *n;cout* 6-饭卡查询和排序 *n;cout* 0-退出系统 *n; cout*n;cout请选择操作选择(06):choice;switch (choice) case 1: coutnn宁大饭卡分为三类,教师卡、学生卡、临时卡。n您可以根据您的需要按照服务代码建立饭卡,用于就餐、借阅、医疗等方面消
18、费。nnn;break;case 2:cout n; cout * 请选择您所需的操作 * n; coutm; while(m!=0) switch(m) case 1:/学生建卡if(100=ssign) /最多100个cout学生帐户已满,不能添加!endl;couttemp;sssign.setname(temp); /调用卡基类的设置姓名couttemp;sssign.setchuci(temp); /调用卡基类的设置初次建卡时间couttt;if(tt)!=f&(tt)!=m) /如果不输入f和m cout指令错误!请重新输入!endl;couttt; sssign.setsex(t
19、t); /调用卡基类的设置性别couttemp;sssign.setidnum(temp);couttemp;sssign.setclass(temp); /调用派生类学生类的设置班级函数couttt;if(tt)!=y&(tt)!=b) cout指令错误!请重新输入!endl;couttt; sssign.setlei(tt); /调用派生类学生类的设置类型函数 cout添加学生帐户成功!endl;ssign+; /继续下一个break; case 2: /老师建卡if(100=tsign)cout教师帐户已满,不能添加!endl;couttemp;ttsign.setname(temp);
20、couttemp;ttsign.setchuci(temp);couttt;if(tt)!=f&(tt)!=m) cout指令错误!请重新输入!endl;couttt; ttsign.setsex(tt);/设置性别couttemp;ttsign.setidnum(temp);couttemp;ttsign.setxueyuan(temp);couttt;if(tt)!=j&(tt)!=fp&(tt)!=p) cout指令错误!请重新输入!endl;couttt; ttsign.setzhicheng(tt); /设置职称cout添加教师帐户成功!endl;tsign+; /继续下一个brea
21、k;case 3: /临时建卡if(100=csign)cout临时帐户已满,不能添加!endl;couttemp;ccsign.setname(temp);couttemp;ccsign.setchuci(temp);couttt;if(tt)!=f&(tt)!=m) cout指令错误!请重新输入!endl;couttt; ccsign.setsex(tt);/设置性别couttemp;ccsign.setidnum(temp); cout添加临时帐户成功!;csign+;break;break;break;case 3:coutna1;coutna2;for(i=0;i100;i+)num
22、4=si.getname(); num5=ti.getname(); num6=ci.getname();n0=si.getcardnum();n1=ti.getcardnum();n2=ci.getcardnum();if (na1=num4) /输入姓名和学生卡读取姓名一样 if(na2=n0) /输入卡号和学生卡读取卡号一样 si.setname(0); /赋0值 si.setchuci(0); si.setsex(0); si.setidnum(0);si.setclass(0); si.setlei(0);cout卡号:si.getcardnum() 姓名:si.getname()
23、办卡时间:si.getchuci() 余额:si.getbalance();cout 性别:si.getsex() 身份证号:si.getidnum() 所在班级:si.getclass() 类别:si.getlei()n; sflag = 1;break; if(na1=num5) /输入姓名和教师卡读取姓名一样 if(na2=n1) /输入卡号和教师卡读取卡号一样ti.setname(0); /赋0值 ti.setchuci(0); ti.setsex(0); ti.setidnum(0);ti.setxueyuan(0); ti.setzhicheng(0);cout卡号:ti.getc
24、ardnum() 姓名:ti.getname() 办卡时间:ti.getchuci() 余额:ti.getbalance();cout性别:ti.getsex() 身份证号:ti.getidnum()所属学院:ti.getxueyuan()职称:ti.getzhicheng()n;sflag = 1;break; if(na1=num6) /输入卡号和临时卡读取卡号一样 if(na2=n2) /输入卡号和临时卡读取卡号一样ci.setname(0); /赋0值 ci.setchuci(0); ci.setsex(0); ci.setidnum(0);cout卡号:ci.getcardnum()
25、 姓名:ci.getname() 初次办卡:ci.getchuci() 余额:ci.getbalance();cout性别:ci.getsex() 身份证号:ci.getidnum()n;sflag = 1;break; if(1=sflag)cout该账户已成功删除!endl;if(0=sflag) /姓名不匹配coutnn查无此人!nnendl;elsesflag = 0;break;case 4: /饭卡充值double m1;couttemp1;for(i=0;i100;i+)num1=si.getcardnum(); /学生卡号num2=ti.getcardnum(); /教师卡号n
26、um3=ci.getcardnum(); /临时卡卡号if(temp1=num1)if(si.getname()!=str)coutm1;si.chongzhi(m1); /调用卡基类充值函数flagx = 1;break;if(temp1=num2)if(ti.getname()!=str)coutm1;ti.chongzhi(m1);flagx = 1;break;if (temp1=num3)if(ci.getname()!=str)coutm1;ci.chongzhi(m1);flagx = 1; break;if(0=flagx)/查无此人coutnn查无此人!nn;elseflag
27、x = 0;break;break;case 5:couttemp1;for(i=0;i100;i+)if(temp1=si.getcardnum() /学生消费coutm1;si.consume(m1);flag = 1;break;else if(temp1=ti.getcardnum() /老师消费coutm1;ti.consume(m1);flag = 1;break;else if(temp1=ci.getcardnum() /临时卡消费coutm1;ci.consume(m1);flag = 1;break;if(0=flag)/姓名卡号不匹配coutnn查无此人!nn;elsef
28、lag = 0;break;case 6:coutm; switch (m) case 1:cout现有用户按卡号从大到小排列为:=0;i-)if(ci.getname()!=0) /临时卡信息 cout卡号:ci.getcardnum() 姓名:ci.getname() 办卡时间:ci.getchuci() 余额:ci.getbalance(); cout 性别(女f; 男m):ci.getsex() 身份证号:ci.getidnum() =0;i-)if(ti.getname()!=0) /教师信息 cout卡号:ti.getcardnum() 姓名:ti.getname() 办卡时间:t
29、i.getchuci() 余额:ti.getbalance(); cout 性别(女f; 男m):ti.getsex() 身份证号:ti.getidnum() 所属学院:ti.getxueyuan() 职称(讲师j; 副教授fp; 教授p):ti.getzhicheng()=0;i-) /学生信息if(si.getname()!=0) cout卡号:si.getcardnum() 姓名:si.getname() 办卡时间:si.getchuci() 余额:si.getbalance(); cout 性别(女f; 男m):si.getsex() 身份证号:si.getidnum() 所在班级:s
30、i.getclass() 所属类别(本科生b; 研究生y):si.getlei()n;break; case 2:coutm;switch (m)case 1:coutna1;for(i=0;i100;i+)num4=si.getname(); /学生num5=ti.getname(); /教师num6=ci.getname(); /临时卡if (na1=num4)cout卡号:si.getcardnum() 姓名:si.getname() 办卡时间:si.getchuci() 余额:si.getbalance();cout 性别(女f; 男m):si.getsex() 身份证号:si.getidnum() 所在班级:si.getclass() 所属类别(本科生b; 研究生y):si.getlei()n; sflag = 1;break;else if(na1=num5)cout卡号:ti.getcardnum() 姓名:ti.getname() 办卡时间:ti.getchuci() 余额:ti.getbalance();cout 性别(女f; 男m):ti.getsex() 身份证号:ti.getidnum() 所属学院:ti.getxueyuan() 职称(讲师j; 副教授fp; 教授p):ti.getzhicheng()n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论