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

下载本文档

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

文档简介

宁波大学饭卡管理系统

指导教师____________________

班级______________________

姓名______________________

学号_______________________

完成日期____________________

系统需求:

随着宁波大学的发展,学生,教师及外来人员的不断增加,对于食堂来讲,普通意义上

的现金交易严重影响了工作效率,使消费者等待时间加长,食堂交易方式数字化已经刻不容

缓,宁波大学饭卡管理系统就是基于以上问题开发,基本上能实现普通交易的功能,同时又

能提高工作效率。

功能分析:

宁大高校饭卡信息包括:饭卡号码、饭卡所有者信息、初次办卡时间、余额。其中,饭

卡的所有者分为学生、教师、临时人员,学生有各自的班级号,教师有所属学院等信息。

实现功能:

(1)学生入学或老师新调入,需要新建一张饭卡。

(2)学生毕业或老师调离,撤销当前对象的饭卡。

(3)饭卡的充值和消费。

(4)查询和排序功能

A:按饭卡所有人姓名查询,输出此饭卡的所有信息。

B:按饭卜号码查询,输出此饭卜的所有信息。

C:按饭卡号码大小排序,输出所有饭卡的信息。

程序设计:

Ccard类:基类,设置初始信息,设置充值,消费,余额,信息查询对象函数,初始信息中

包括人的公有特征,如姓名,性别,身份证号码。

声明代码:

Cstudent类:从Ccard类公有继承初始信息函数、查询函数,自己再设置独立的关于学生

的对象,譬如班级号和类别,并要求对卡号保存。

声明代码:

Ctoachcr类:从Ccard类公有继承初始信息函数、查询函数,自己再设置独立的关于教师

的对象,譬如所属学院、职称,并要求对卡号保存。

声明代码:

Ctemp类:从Ccard类公有继承初始信息函数、查询函数,由于是临时卡,不保存卡号。

声明代码:

遇到问题:

(1)当查询充值余额和消费余额时,程序正常是调用doubleresult。"/充值函数、

doubleconsume。;〃消费函数、doublebalance。;〃余额函数,但是当运行余额

函数时,总会2次调用充值和消费函数,这样就直接导致充值的金额和消费的余额

扩大一倍,最后发现原来是返回函数写错了,区为money是余额,nioncyl是充值金

额,money2是消费金额,我在而我都返I用了money值给充值函数、消费函数和余额

函数。

(2)按照卡号查询饭卡所有者信息时,除了初始信息,姓名,性别,身份证号码外,最

主要的还是杳询出这个号码的所剩余额,刚开始时我使用的是调用充值,消费函数,

这样一来,当输出余额是会弹出对话框,问你充了多少钱,消费了多少钱,一般情

况下查询时肯定不会充值和消蓄,所以应该输入充俏.0消费0,但是这样对于操作

会很繁琐,虽然结果一样会输出,最后我直接调用money对象,直接输出,这样就

不用再手动输入了,结果直接会显示在显示屏上。

(3)删除信息函数,最后由于杳的可以用指针的方法用new和delet函数彻底释放内存

中的信息,但是由于对C++的认识不够深,不会用指针的方法处理这个删除任务,

所以简而求其次,把各个初值都赋0值,这样的话信息就会以。初值的方式显示,

也可以说基本完成删除信息的任务

(4)用姓名查找,首先想到怎么去掉用姓名函数,然后通过再把和姓名相关的信息输出,

但是写好程序后,不管输入怎么的姓名,程序就是无动于衷,什么都输不出,最后

和老师一讨论,决定用匹配的方式,就是输入的姓名和原始建卡时所存在的姓名匹

配,成功的话sflag设1,输出建卡时的内容,简单易懂

改进:

这个程序只能说够用,挺基本的,很多功能还需要修改完善,譬如川以实现个人优史充

值记录和消费记录,然后可以知道他的口平均消费或者月平均消费,对于数字的输入也没有

比较好的识别,譬如金额可以输入负数可以输入字母,虽然程序中写明用数字,但是实用中

难免会出现误输入,系统就不会报错工

感想:

最最有体会的地方就是我对C++程序员致以最高的尊敬,写程序真的是太痛苦了,对于

初学C++语言的我来说,亲自写个程序对我是莫大的考验,整个程序涉及到了C++的各个方

面,如书中的继承,结构,类,运算符操作,数值定义方法等等,一旦程序写完觉得自己整

个人都轻松了很多,其中我要感谢帮助过我的人,我的指导老师,我的同窗,我想要真正写

个能在实际生活中使用的程序,凭现在的我是万万不可能的,这得积累几年的经验,几年的

锻炼才可以啊,虽然这是个基础程序,但也凝结了我几天的辛勤劳作,万事开头难,有了这

次实践,我想我以后会做的更好。

功能框图:

#include<cstdlib>

usingnamespacestd;

classCCard〃长类

(

protected:

charsex;〃拥卡者性别

stringidnum;〃拥卡者ID

intcardnuml;〃拥卡者卡号

stringname;〃拥卡者姓名

stringchucitime;〃初次办卡的时间

doublebalance;〃卡内余额

staticintcardnum;〃卡号设为静态,可以使卡号连续增加

public:

CCardf);

voidsetsex(char);〃设置拥卡者性别

chargetsex();〃获得拥卡者性别

voidsetidnum(string);〃设置拥卡者ID

stringgetidnum();〃获得拥卡者的ID

voidsetname(string);〃设置拥卡者名字

stringgetname();〃获取拥卡者名字

voidsetchuci(string);〃设置办卡时间

stringgetchuci();〃获取办卡时间

voidchongzhi(double);〃充值

voidconsume(double);〃消费

doublegetbalance();〃获取卡内余额

intgetcardnumf);〃获取饭k编号

voiddel();〃消除饭卡

voidadd();〃新建饭卡

);

classCStudent:publicCCard〃学生类,派生自卡类

(

protected:

stringclassl;〃班级

charlei;〃学生属性(本科、研究生)

public:

voidcheck();〃核查身份

voiddisplay();〃现实信息

voidsetclass(string);〃设置班级

stringgetclass();〃获得班级

voidsetlei(char);〃设置学生属性

chargetleif);〃获得学生属性

addcstudent();〃添加学生

);

classCTeacher:publicCCard〃教师类,派生自卡类

protected:

stringxueyuan;〃教师所属学院

charzhicheng;〃教师职称

public:

voidsetxueyuan(string);〃设置教师所属学院

stringgetxueyuan();〃获得教师所属学院

voidsetzhicheng(char);〃设置教师职称

chargetzhicheng();〃获得教师职称

voidcheck();〃查询信息

voiddisplay();〃显示信息

);

classCTemp:publicCCard〃临时人员类,派生自卡类

(

public:

voidcheck();〃核查信息

voiddisplayf);〃显示信息

intCCard::cardnum=l;〃初始化卡号为1

CCard::CCard()〃卡类构造函数

(

cardnuml=cardnum++;〃拥卡者卡号为初妗卡号加1,当创建对象时,会自动

加1

name="O";

balance=O;〃余额

sex='O';

idnum="U";〃拥卡者ID

chucitime="O";〃初次办卡的时间0

)

CCard::~CCard();〃卡类析构函数

voidCCard::setname(stringna)〃卡类对象函数,设置拥卡者姓名,na为写的名字

name=na;

)

stringCCard::getname()〃获得拥卡者姓名

returnname;

}

voidCCard::setchuci(stringtime)〃设置办卡时间

(

chucitime=time;

)

stringCCard::getchuci()〃获得办卡时间

returnchucitime;

voidCCard::chongzhi(doublem)〃卡类对象函数,给卜充值,m充值金额

(

balance+=m;

coutcc"你的充值数额:当前余额:"<<balance«endl;

)

voidCCard::consume(doublee)〃卡类对象函数,消费金额,e消费金额

(

if(balance>=e)

(

balance-=e;

cout<<"您已消费,元,余额:"<<balance«endl;

)

else〃余额少于消费金额,余额不足

cout<<"你的余额不足,请充值"<<endl;

}

doubleCCard;;getbalance()〃获得饭卡余额

(

returnbalance;

)

intCCard::getcardnum()〃获得卡号。1加上去

(

returncardnuml;

}

voidCCard::setsex(charsexi)〃设置拥k者性别

{

sex=sexl;

)

charCCard::getsex()〃获得拥卡者性另!

(

returnsex;

)

voidCCard::setidnum(stringid)〃设置拥卡者身份证号,id为输入账号

(

idnum=id;

stringCCard::getidnum()〃获得拥卡者身份证号

(

returnidnum;

)

voidCStudent::setclass(stringclass2)〃设置拥k者班级

classl=class2;

stringCStudent::getclass()〃获得拥卡者班级

(

returnclassl;

)

voidCStudent二setlei(charleil)〃设置拥卡者属性(本科、研究生)

(

lei=leil;

)

charCStudent::getlei()〃获得拥k者属性(本科、研究生)

returnlei;

)

voidCTeacher::setxueyuan(stringxueyuanl)//Teacher类中,设置教师所属学院

(

xueyuan=xueyuanl;

}

stringCTeacher;;getxueyuan()〃Teache「类中,获得教师所属学院

(

returnxueyuan;

)

voidCTeacher::setzhichengjcharzhichengl)//Teacher类中,设置教师职称

(

zhicheng=zhichengl;

}

charCTeacher::getzhicheng()“Teacher类中,获得教师职称

{

returnzhicheng;

)

voidmain()

(

intchoice;〃选项变昼

intm,i;//switch语句中的选择数据

intnuml,num2,num3;〃消费充值,匹配姓名卡号时用

chartt;〃定义性别时用

CStudents[100];//CStudent类对象10个

CTeachert[100];“CTeacher类对象10个

CTempc[100];//CTemp类对象10个

intssign=O,tsign=O,csign=O/templ;

stringtempznal;

stringnum4,num5,num6;〃撤销G匹配姓名卡号的时候用

intn0,nl,n2,na2;

intflagx=0;

intflag=0;

intsflag=0;

while(choice!=0)

cout«'***************************\n";

cout«"宁波大学饭卡管理系统\n";

C0Ut«"*************************

cout«H************************************\n11-

cout«"**1-帮助信息**\n";

cout«"**2-新建饭卜

cout«"**3-撤销饭卡**\n";

cout«"**4-饭卡充值

cout«"**5-饭卡消费**\n";

cout«"**6-饭卡查询和排序

cout«"**0--退出系统**\n";

cout«H♦*♦*♦♦*♦*♦*♦*♦*♦*♦*♦*♦***♦**♦*♦♦♦♦*♦

cout«"请选择操作选择(0—6)丁<<endl;

cin»choice;

switch(choice)

case1:

cout«”\n\n宁大饭卡分为三类,教师卡、学生卡、临时卡。\n”

<<"您可以根据您的需要按照服务代业建立饭卡,用于就餐、借阅、医疗

等方面消费。\n\n\n";

break;

case2:

cout«"\n";

cout«"请选择您所需的操作***\n";

cout«"学生一1;老师一2;临时人员一3.(选择后按回车犍确认)\n”;

cin»m;

while(m!=0)

(

switch(m)

(

case1:〃学生建卡

if(100==ssign)〃最多100个

(

cout«”学生帐户已满,不能添加!!”<<endl;

}

cout<<"输入学生姓名:";

cin»temp;

s[ssign].setname(temp);〃调用卡基类的设置姓名

cout<<”输入初次办卡时间(如

cin»temp;

s[ssign].setchuci(temp);〃调用k基类的设置初次建k时间

cout«"输入性别:(女一f;男一m)";

cin»tt;

if((tt)!='f,&&(tt)!='m')〃如果不输入f和m

(

cout<<"指令错误!请重新输入!"«endl;

cout<<"请输入您的性别(女一f;男一mH';

cin»tt;

)

s[ssign].setsex(tt);〃调用k基类的设置性别

cout<<"输入身份证号码:";

cin»temp;

s[ssign].setidnum(temp);

cout<<”所在班级号:";

cin»temp;

s[ssign].setclass(temp);〃调用派生类学生类的设置班级函数

cout<〈"所属类别(本科生一b;研究生一y):";

cin»tt;

if((tt)!=V&&(tt)!='b')

(

cout<<"指令错误!请重新输入!"<<endl;

cout<<”所属类别(本科生一b;研究生一y):";

cin»tt;

)

s[ssign].setlei(tt);〃调用派生类学生类的设置类型函数

cout«”添加学生帐户成功成<<endl;

ssign++;〃继续下一个

break;

case2:〃老师建卡

if(100==tsign)

(

cout<<"教师帐户已满,不能添加!!"«endl;

)

cout<<”输入老师姓名严;

cin»temp;

t[tsign].setname(temp);

cout<<”输入初次办卡时间(如

cin»temp;

t[tsign].setchuci(temp);

cout<<"输入性别(女一f;男一m):";

cin»tt;

if((tt)!='f&&(tt)!='m')

cout<<"指令错误!请重新输入!"«endl;

cout<<''请输入您的性别(女一f;男一m):";

cin»tt;

)

t[tsign].setsex(tt);〃设置性别

cout<〈"输入身份证号码:";

cin»temp;

t[tsign].setidnum(temp);

COUt«”所属学院:";

cin»temp;

t(tsign].setxueyuan(temp);

cout«”职称(讲师一j;副教授一fp;教授一p):";

cin»tt;

if((tt)!='fp'&&(tt)!='p')

(

cout<<"指令错误!请重新输入!"«endl;

cout<<"所属类别(讲师一j;副教授一fp;教授一p):";

cin»tt;

)

t[tsign].setzhicheng(tt);〃设置职称

cout<<”添加教师帐户成功!!”<<endl;

tsign++;〃继续下一个

break;

case3:〃临时建卡

if(100==csign)

(

cout<<"临时帐户已满,不能添加!!"<<endl;

}

cout«”输入临时人员姓名:,

cin»temp;

c[csign].setname(temp);

cout<<"输入初次办卡时间(如:201061):“;

cin»temp;

c[csign].setchuci(temp);

cout<<"输入性别(女一f;男一m):";

cin»tt;

if((tt)!='f'&&(tt)!='m,)

(

cout<<"指令错误!请重新输入!"«endl;

cout<<"请输入您的性别(女一f;男一m):";

cin»tt;

)

c[csign].setsex(tt);〃设置性别

cout<<”输入身份证号码:“;

cin»temp;

c[csign].setidnum(temp);

cout<<”添加临时帐户成功!当

csign++;

break;

)

break;

)

break;

case3:

cout«”请输入待撤销饭卡用户姓名\n“;

cin»nal;

cout«”请输入待撤销饭卡用户卡号\n“;

cin»na2;

for(i=0;i<10C;i++)

{

num4=s[i].getname();

num5=t[i].getname();

numG=c[i].getname();

nO=s[i].getcardnum();

nl=t[i].getcardnum();

n2=c[i].getcardnum();

if(nal==num4)〃输入姓名和学生卡读取姓名一样

if(na2==nO)〃输入卡号和学生卡读取卡号一样

(

s[i].setname("O");〃赋0值

s(i].setchuci("O");

s[i].setsex('O");

s[i].setidnum("O");

s[i].setclass("O");

s[i].setlei('O');

cout«'咔号:"<<s[i].getcardnum()<<":"«s[i].getname()«"办

卡时间严

«s[i].getchuci()«"余额:"<<s[i].getbalance();

cout«"性别:"<<s[i].getsex()«”身份证号:“<<s[i].getidnum()<<"

所在班级:"

«s[i].getclass()«"类别:"<<s[i].getlei()«"\n";

sflag=1;

break;

)

if(nal==num5)〃输入姓名和教师卡读取姓名一样

if(na2==nl)〃输入卡号和教师卡读取卡号一样

t[i].setname("O");〃赋0值

t[i].setchuci("O");

t[i].setsex('O');

t[i].setidnum("O");

t[i].setxueyuan("O");

t[i].setzhicheng('O');

cout<〈咔号:"〈WtcardnumOvc"姓名:"<<t[i].getname()

«"办卡时间:"<<t[i].getchuci()<<"余额:"<<t[i].getbalance();

cout<<“性另El'cctm.getsexOcc”身份证号:"<<t[i].getidnum()

<<所属学院:"<<t[i].getxueyuan()<“只称;:"《t[i].getzhicheng()«"\n";

sflag=1;

break;

)

if(nal==num6)〃输入卡号和临时卡读取卡号一样

if(na2==n2)〃输入卡号和临时卡读取卡号一样

(

c[ii.setname("O");〃赋0值

c[i\setchuci("O");

c[i\setsex('O');

c[i\setidnum("O");

cout<<咔号:"<<c[i].getcardnum()<<"姓名:初

次办卡:”

«c[i].getchuci()«"余额:getbalance。;

cout«"ttS,J:"«c[i].getsex()«,'身份证号丁'<<c[i].getidnum()«"\n";

sflag=1;

break;

)

)

if(l==sflag)

(

cout<<”该账户已成功删除!!!""endl;

)

if(O==sflag)〃姓名不匹配

{

cout«"\n\n查无此人!!!\n\n"«endl;

)

else

{

sflag=0;

)

break;

case4:〃饭卡充值

doubleml;

cout<<"请输入待充值的卡号\n";

cin»templ;

for(i=0;i<100;i++)

numl=s[i].getcardnum();〃学生卡号

num2=t[i].getcardnum();〃教师R号

num3=c[i].getcardnum();〃临时卡卡号

if(templ==numl)

if(s[i].getname()!="str")

(

cout<〈"请输入充值数额\n";

cin»ml;

s[i].chongzhi(ml);〃调用k基类充值函数

flagx=1;

break;

)

if(templ==num2)

if(t[i].getname()!="str")

(

cout<〈"请输入充值数额\rT';

cin»ml;

t[i].chongzhi(ml);

flagx=1;

break;

)

if(templ==num3)

if(c[i].getname()!="str")

(

cout<<"请输入充值数额\n";

cin»ml;

c[i].chongzhi(ml);

flagx=1;

break;

)

)

if(O==flagx)〃查无此人

{

cout«"\n\n查无此人!!!\n\n";

)

else

{

flagx=0;

)

break;

break;

case5:

cout«”请输入待消费的卡号\n";

cin»templ;

for(i=0;i<10C;i++)

{if(templ==s[i].getcardnum())〃学生消费

(

cout<<"请输入消费金额\n";

cin»ml;

s[i].consume(ml);

flag=1;

break;

)

elseif(templ==t[i].getcardnum())〃老师消费

(

cout<<”请输入消费金额\n”;

cin»ml;

t[i].consume(ml);

flag=1;

break;

}

elseif(templ==c[i].getcardnum())〃临时卡消费

(

cout<<"请输入消费金额\n";

cin»ml;

c[ij.consume(ml);

flag=1;

break;

)

)

if(O==flag)〃姓名卡号不匹配

(

cout«"\n\n查无此人!!!\n\n";

)

else

{

flag=0;

)

break;

case6:

cout«"请选择排序一1;查询一2\rT';

cin»m;

switch(m)

{

case1:

cout<<"现有用户按卡号从大到小排列为:"<<endl;

for(i=99;i>=0;i-)

if(c[i].getname()!="O")〃临时卡信息

(

cout«"f-^:"«c[i].getcardnum()«"姓

:"«c[i].getname()«"办卡时间:"<«「].getchuci()<<"余额:"<«[].getbalance();

cout«"性别(女一f;男一m):"«c[i].getsex()<<“身份证

^•:"«c[i].getidnum()«"\r";

)

for(i=99;i>=0;i-)

if(t[i].getname()l="O")〃教师信息

(

cout«"-k^-:"«t[i].getcardnum()«"姓

:"«t[i].getname()«"办卡时间:"《t[i].getchuci()<<"余额:"<<t[i].getbalance();

cout«"性别(女-f;m):"«t[i].getsex()«"身份证

号/<<t[i].getidnum()<<"所属学院:"<<t[i].getxueyuan()<<"职称(讲师一j;副教授一fp;

p):"«t[i].getzhicheng()«"\n";

)

for(i=99;i>=0;i-)〃学生信息

if(s[i].getname()!="O")

(

cout<<"卡号:"<<s[i].getcarcnum()<<"姓

^:"«s[i].getname()«"办卡时间:"<<s[i].getchuci()<<"余额:"《s[i].getbalance();

cout«"性别(女一f;^-m):"«s[i].getsex()«-身份证

^•:"«s[i].getidnum()«"所在班级:"<<s[i].getdass()<<"所属类别(本科生一b;研究生一

y):"«s[i].getlei()«"\n";

)

break;

case2:

cout<<”请输入饭卡拥有者名字一1;饭卡号码一2\n";

cin»m;

switch(m)

{

case1:

cout<<”请输入饭卡查询的名字";

cin»nal;

for(i=0;i<100;i++)

(

num4=s[i].getname();〃学生

num5=t[i].getname();〃教师

num6=c[i].getname();〃临时卡

if(nal==num4)

{cout«咔号:"《s[i].getcardnum()<<"姓名:"<<s[i].getname(k<"

办卡时间:"《s[i].getchuci(K<"余额:"<<s[i].getbalance();

cout«"性别(女一f;—m):"«s[i].getsex()«"身份证

■^-:"«s[i].getidnum()«"所在班级:,'《s[i].getdass()<<"所属类别(本科生一b;研究生一

y):"«s[i].getlei()«"\n";

sflag=1;

break;

)

elseif(nal==num5)

(

coutvv"卡号:"vvt[i].8etcardnum()vv"^1-:"«t[i].getname()«"

办卜时间:"<<t[i].getchuci()<<"余额:"<<t[i].getbalance();

cout«"性别(女一f;男一m):"«t[i].getsex()«"身份证

-?,:"«t[i].getidnumO«"所属学院:"《t[i].getxueyuan()«"职称(讲师一j;副教授一fp;

p):"«t[i].getzhicheng()«"\n";

sflag=1;

break;

)

elseif(nal==num6)

(

cout<<"卡号:"<<c[i].getcardnum()<<"f?4^:"«c[i].getname()«"

办卡时间:"<<c[i].getchuci()<<"余额:"<<c[i].getbalance();

cout«"性别(女一f;I5—m):"«c[i].getsex()«"身份证

^•:"«c[i].getidnum()«"\n

sflag=1;

break;

)

)

if(O==sfag)

(

cout«"\n\n查无此人!!!\n\n"«endl;

)

else

温馨提示

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

最新文档

评论

0/150

提交评论