饭卡管理系统00002.docx

上传人:b****4 文档编号:5120903 上传时间:2022-12-13 格式:DOCX 页数:27 大小:39.05KB
下载 相关 举报
饭卡管理系统00002.docx_第1页
第1页 / 共27页
饭卡管理系统00002.docx_第2页
第2页 / 共27页
饭卡管理系统00002.docx_第3页
第3页 / 共27页
饭卡管理系统00002.docx_第4页
第4页 / 共27页
饭卡管理系统00002.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

饭卡管理系统00002.docx

《饭卡管理系统00002.docx》由会员分享,可在线阅读,更多相关《饭卡管理系统00002.docx(27页珍藏版)》请在冰豆网上搜索。

饭卡管理系统00002.docx

饭卡管理系统00002

饭卡管理系统

 

指导教师

班级

姓名

学号

完成日期

系统需求:

随着宁波大学的发展,学生,教师及外来人员的不断增加,对于食堂来讲,普通意义上的现金交易严重影响了工作效率,使消费者等待时间加长,食堂交易方式数字化已经刻不容缓,宁波大学饭卡管理系统就是基于以上问题开发,基本上能实现普通交易的功能,同时又能提高工作效率。

功能分析:

宁大高校饭卡信息包括:

饭卡号码、饭卡所有者信息、初次办卡时间、余额。

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

实现功能:

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

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

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

(4)查询和排序功能

A:

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

B:

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

C:

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

程序设计:

Ccard类:

基类,设置初始信息,设置充值,消费,余额,信息查询对象函数,初始信息中包括人的公有特征,如姓名,性别,身份证号码。

声明代码:

Cstudent类:

从Ccard类公有继承初始信息函数、查询函数,自己再设置独立的关于学生的对象,譬如班级号和类别,并要求对卡号保存。

声明代码:

Cteacher类:

从Ccard类公有继承初始信息函数、查询函数,自己再设置独立的关于教师的对象,譬如所属学院、职称,并要求对卡号保存。

声明代码:

Ctemp类:

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

声明代码:

遇到问题:

(1)当查询充值余额和消费余额时,程序正常是调用doubleresult();//充值函数、doubleconsume();//消费函数、doublebalance();//余额函数,但是当运行余额函数时,总会2次调用充值和消费函数,这样就直接导致充值的金额和消费的余额扩大一倍,最后发现原来是返回函数写错了,因为money是余额,money1是充值金额,money2是消费金额,我在而我都返回了money值给充值函数、消费函数和余额函数。

(2)按照卡号查询饭卡所有者信息时,除了初始信息,姓名,性别,身份证号码外,最主要的还是查询出这个号码的所剩余额,刚开始时我使用的是调用充值,消费函数,这样一来,当输出余额是会弹出对话框,问你充了多少钱,消费了多少钱,一般情况下查询时肯定不会充值和消费,所以应该输入充值0消费0,但是这样对于操作会很繁琐,虽然结果一样会输出,最后我直接调用money对象,直接输出,这样就不用再手动输入了,结果直接会显示在显示屏上。

(3)删除信息函数,最后由于查的可以用指针的方法用new和delet函数彻底释放内存中的信息,但是由于对C++的认识不够深,不会用指针的方法处理这个删除任务,所以简而求其次,把各个初值都赋0值,这样的话信息就会以0初值的方式显示,也可以说基本完成删除信息的任务

(4)用姓名查找,首先想到怎么去掉用姓名函数,然后通过再把和姓名相关的信息输出,但是写好程序后,不管输入怎么的姓名,程序就是无动于衷,什么都输不出,最后和老师一讨论,决定用匹配的方式,就是输入的姓名和原始建卡时所存在的姓名匹配,成功的话sflag设1,输出建卡时的内容,简单易懂

改进:

这个程序只能说够用,挺基本的,很多功能还需要修改完善,譬如可以实现个人历史充值记录和消费记录,然后可以知道他的日平均消费或者月平均消费,对于数字的输入也没有比较好的识别,譬如金额可以输入负数可以输入字母,虽然程序中写明用数字,但是实用中难免会出现误输入,系统就不会报错。

感想:

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

 

功能框图:

主界面

公有继承

基类Ccard,初始信息,初始设置对象,消费,充值,余额,构造函数

调用学生类里的对象函数

新建调用信息对象

充值消费调用充值消费函数

查询调用查询函数

调用临时类里的对象函数

新建调用信息对象

充值消费调用充值消费函数

查询调用查询函数

调用教师类里的对象函数

新建调用信息对象

充值消费调用充值消费函数

查询调用查询函数

有效代码

无效代码

退出系统

饭卡查询

饭卡消费

饭卡充值

撤销饭卡

新建饭卡

帮助程序

 

 

系统总程序:

#include

#include

#include

usingnamespacestd;

 

classCCard//卡类

{

protected:

charsex;//拥卡者性别

stringidnum;//拥卡者ID

intcardnum1;//拥卡者卡号

stringname;//拥卡者姓名

stringchucitime;//初次办卡的时间

doublebalance;//卡内余额

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

public:

CCard();

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

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

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

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

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

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

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

stringgetchuci();//获取办卡时间

voidchongzhi(double);//充值

voidconsume(double);//消费

doublegetbalance();//获取卡内余额

intgetcardnum();//获取饭卡编号

voiddel();//消除饭卡

voidadd();//新建饭卡

};

classCStudent:

publicCCard//学生类,派生自卡类

{

protected:

stringclass1;//班级

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

public:

voidcheck();//核查身份

voiddisplay();//现实信息

voidsetclass(string);//设置班级

stringgetclass();//获得班级

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

chargetlei();//获得学生属性

addcstudent();//添加学生

};

classCTeacher:

publicCCard//教师类,派生自卡类

{

protected:

stringxueyuan;//教师所属学院

charzhicheng;//教师职称

public:

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

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

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

chargetzhicheng();//获得教师职称

voidcheck();//查询信息

voiddisplay();//显示信息

};

classCTemp:

publicCCard//临时人员类,派生自卡类

{

public:

voidcheck();//核查信息

voiddisplay();//显示信息

};

intCCard:

:

cardnum=1;//初始化卡号为1

CCard:

:

CCard()//卡类构造函数

{

cardnum1=cardnum++;//拥卡者卡号为初始卡号加1,当创建对象时,会自动加1

name="0";

balance=0;//余额

sex='0';

idnum="0";//拥卡者ID

chucitime="0";//初次办卡的时间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;

cout<<"你的充值数额:

"<

"<

}

voidCCard:

:

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

{

if(balance>=e)

{

balance-=e;

cout<<"您已消费"<

"<

}

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

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

}

doubleCCard:

:

getbalance()//获得饭卡余额

{

returnbalance;

}

intCCard:

:

getcardnum()//获得卡号。

1加上去

{

returncardnum1;

}

voidCCard:

:

setsex(charsex1)//设置拥卡者性别

{

sex=sex1;

}

charCCard:

:

getsex()//获得拥卡者性别

{

returnsex;

}

voidCCard:

:

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

{

idnum=id;

}

stringCCard:

:

getidnum()//获得拥卡者身份证号

{

returnidnum;

}

voidCStudent:

:

setclass(stringclass2)//设置拥卡者班级

{

class1=class2;

}

stringCStudent:

:

getclass()//获得拥卡者班级

{

returnclass1;

}

voidCStudent:

:

setlei(charlei1)//设置拥卡者属性(本科、研究生)

{

lei=lei1;

}

charCStudent:

:

getlei()//获得拥卡者属性(本科、研究生)

{

returnlei;

}

voidCTeacher:

:

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

{

xueyuan=xueyuan1;

}

stringCTeacher:

:

getxueyuan()//Teacher类中,获得教师所属学院

{

returnxueyuan;

}

voidCTeacher:

:

setzhicheng(charzhicheng1)//Teacher类中,设置教师职称

{

zhicheng=zhicheng1;

}

charCTeacher:

:

getzhicheng()//Teacher类中,获得教师职称

{

returnzhicheng;

}

 

voidmain()

{

intchoice;//选项变量

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

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

chartt;//定义性别时用

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

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

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

intssign=0,tsign=0,csign=0,temp1;

stringtemp,na1;

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

intn0,n1,n2,na2;

intflagx=0;

intflag=0;

intsflag=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<<"请选择操作选择(0—6):

"<

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<<"学生帐户已满,不能添加!

!

"<

}

cout<<"输入学生姓名:

";

cin>>temp;

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

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

2010-1-1):

";

cin>>temp;

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

cout<<"输入性别:

(女—f;男—m)";

cin>>tt;

if((tt)!

='f'&&(tt)!

='m')//如果不输入f和m

{

cout<<"指令错误!

请重新输入!

"<

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

";

cin>>tt;

}

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

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

";

cin>>temp;

s[ssign].setidnum(temp);

cout<<"所在班级号:

";

cin>>temp;

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

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

";

cin>>tt;

if((tt)!

='y'&&(tt)!

='b')

{

cout<<"指令错误!

请重新输入!

"<

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

";

cin>>tt;

}

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

cout<<"添加学生帐户成功!

!

"<

ssign++;//继续下一个

break;

case2:

//老师建卡

if(100==tsign)

{

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

!

"<

}

cout<<"输入老师姓名:

";

cin>>temp;

t[tsign].setname(temp);

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

2010-1-1):

";

cin>>temp;

t[tsign].setchuci(temp);

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

";

cin>>tt;

if((tt)!

='f'&&(tt)!

='m')

{

cout<<"指令错误!

请重新输入!

"<

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)!

='j'&&(tt)!

='fp'&&(tt)!

='p')

{

cout<<"指令错误!

请重新输入!

"<

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

";

cin>>tt;

}

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

cout<<"添加教师帐户成功!

!

"<

tsign++;//继续下一个

break;

case3:

//临时建卡

if(100==csign)

{

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

!

"<

}

cout<<"输入临时人员姓名:

";

cin>>temp;

c[csign].setname(temp);

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

2010-6-1):

";

cin>>temp;

c[csign].setchuci(temp);

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

";

cin>>tt;

if((tt)!

='f'&&(tt)!

='m')

{

cout<<"指令错误!

请重新输入!

"<

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>>na1;

cout<<"请输入待撤销饭卡用户卡号\n";

cin>>na2;

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

{

num4=s[i].getname();

num5=t[i].getname();

num6=c[i].getname();

n0=s[i].getcardnum();

n1=t[i].getcardnum();

n2=c[i].getcardnum();

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

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

{

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

s[i].setchuci("0");

s[i].setsex('0');

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

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

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

cout

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1