饭卡管理系统.docx
《饭卡管理系统.docx》由会员分享,可在线阅读,更多相关《饭卡管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
饭卡管理系统
指导教师
班级
姓名
学号
完成日期
系统需求:
随着宁波大学的发展,学生,教师及外来人员的不断增加,对于食堂来讲,普通意义上的现金交易严重影响了工作效率,使消费者等待时间加长,食堂交易方式数字化已经刻不容缓,宁波大学饭卡管理系统就是基于以上问题开发,基本上能实现普通交易的功能,同时又能提高工作效率。
功能分析:
宁大高校饭卡信息包括:
饭卡号码、饭卡所有者信息、初次办卡时间、余额。
其中,饭卡的所有者分为学生、教师、临时人员,学生有各自的班级号,教师有所属学院等信息。
实现功能:
(1)学生入学或老师新调入,需要新建一张饭卡。
(2)学生毕业或老师调离,撤销当前对象的饭卡。
(3)饭卡的充值和消费。
(4)查询和排序功能
A:
按饭卡所有人姓名查询,输出此饭卡的所有信息。
B:
按饭卡号码查询,输出此饭卡的所有信息。
C:
按饭卡号码大小排序,输出所有饭卡的信息。
程序设计:
类:
基类,设置初始信息,设置充值,消费,余额,信息查询对象函数,初始信息中包括人的公有特征,如姓名,性别,身份证号码。
声明代码:
类:
从类公有继承初始信息函数、查询函数,自己再设置独立的关于学生的对象,譬如班级号和类别,并要求对卡号保存。
声明代码:
类:
从类公有继承初始信息函数、查询函数,自己再设置独立的关于教师的对象,譬如所属学院、职称,并要求对卡号保存。
声明代码:
类:
从类公有继承初始信息函数、查询函数,由于是临时卡,不保存卡号。
声明代码:
遇到问题:
(1)当查询充值余额和消费余额时,程序正常是调用()充值函数、()消费函数、()余额函数,但是当运行余额函数时,总会2次调用充值和消费函数,这样就直接导致充值的金额和消费的余额扩大一倍,最后发现原来是返回函数写错了,因为是余额1是充值金额,2是消费金额,我在而我都返回了值给充值函数、消费函数和余额函数。
(2)按照卡号查询饭卡所有者信息时,除了初始信息,姓名,性别,身份证号码外,最主要的还是查询出这个号码的所剩余额,刚开始时我使用的是调用充值,消费函数,这样一来,当输出余额是会弹出对话框,问你充了多少钱,消费了多少钱,一般情况下查询时肯定不会充值和消费,所以应该输入充值0消费0,但是这样对于操作会很繁琐,虽然结果一样会输出,最后我直接调用对象,直接输出,这样就不用再手动输入了,结果直接会显示在显示屏上。
(3)删除信息函数,最后由于查的可以用指针的方法用和函数彻底释放内存中的信息,但是由于对的认识不够深,不会用指针的方法处理这个删除任务,所以简而求其次,把各个初值都赋0值,这样的话信息就会以0初值的方式显示,也可以说基本完成删除信息的任务
(4)用姓名查找,首先想到怎么去掉用姓名函数,然后通过再把和姓名相关的信息输出,但是写好程序后,不管输入怎么的姓名,程序就是无动于衷,什么都输不出,最后和老师一讨论,决定用匹配的方式,就是输入的姓名和原始建卡时所存在的姓名匹配,成功的话设1,输出建卡时的内容,简单易懂
改进:
这个程序只能说够用,挺基本的,很多功能还需要修改完善,譬如可以实现个人历史充值记录和消费记录,然后可以知道他的日平均消费或者月平均消费,对于数字的输入也没有比较好的识别,譬如金额可以输入负数可以输入字母,虽然程序中写明用数字,但是实用中难免会出现误输入,系统就不会报错。
感想:
最最有体会的地方就是我对程序员致以最高的尊敬,写程序真的是太痛苦了,对于初学语言的我来说,亲自写个程序对我是莫大的考验,整个程序涉及到了的各个方面,如书中的继承,结构,类,运算符操作,数值定义方法等等,一旦程序写完觉得自己整个人都轻松了很多,其中我要感谢帮助过我的人,我的指导老师,我的同窗,我想要真正写个能在实际生活中使用的程序,凭现在的我是万万不可能的,这得积累几年的经验,几年的锻炼才可以啊,虽然这是个基础程序,但也凝结了我几天的辛勤劳作,万事开头难,有了这次实践,我想我以后会做的更好。
功能框图:
系统总程序:
<>
<>
<>
;
卡类
{
:
;拥卡者性别
;拥卡者
1;拥卡者卡号
;拥卡者姓名
;初次办卡的时间
;卡内余额
;卡号设为静态,可以使卡号连续增加
:
();
();设置拥卡者性别
();获得拥卡者性别
();设置拥卡者
();获得拥卡者的
();设置拥卡者名字
();获取拥卡者名字
();设置办卡时间
();获取办卡时间
();充值
();消费
();获取卡内余额
();获取饭卡编号
();消除饭卡
();新建饭卡
};
学生类,派生自卡类
{
:
1;班级
;学生属性(本科、研究生)
:
();核查身份
();现实信息
();设置班级
();获得班级
();设置学生属性
();获得学生属性
();添加学生
};
教师类,派生自卡类
{
:
;教师所属学院
;教师职称
:
();设置教师所属学院
();获得教师所属学院
();设置教师职称
();获得教师职称
();查询信息
();显示信息
};
临时人员类,派生自卡类
{
:
();核查信息
();显示信息
};
1;初始化卡号为1
()卡类构造函数
{
1;拥卡者卡号为初始卡号加1,当创建对象时,会自动加1
"0";
0;余额
'0';
"0";拥卡者
"0";初次办卡的时间0
}
();卡类析构函数
()卡类对象函数,设置拥卡者姓名,为写的名字
{
;
}
()获得拥卡者姓名
{
;
}
()设置办卡时间
{
;
}
()获得办卡时间
{
;
}
(m)卡类对象函数,给卡充值,m充值金额
{
;
<<"你的充值数额:
"<"<<<<;
}
(e)卡类对象函数,消费金额,e消费金额
{
(>)
{
;
<<"您已消费"<"<<<<;
}
余额少于消费金额,余额不足
<<"你的余额不足,请充值"<<;
}
()获得饭卡余额
{
;
}
()获得卡号。
1加上去
{
1;
}
(1)设置拥卡者性别
{
1;
}
()获得拥卡者性别
{
;
}
()设置拥卡者身份证号,为输入账号
{
;
}
()获得拥卡者身份证号
{
;
}
(2)设置拥卡者班级
{
12;
}
()获得拥卡者班级
{
1;
}
(1)设置拥卡者属性(本科、研究生)
{
1;
}
()获得拥卡者属性(本科、研究生)
{
;
}
(1)类中,设置教师所属学院
{
1;
}
()类中,获得教师所属学院
{
;
}
(1)类中,设置教师职称
{
1;
}
()类中,获得教师职称
{
;
}
()
{
;选项变量
;语句中的选择数据
123;消费充值,匹配姓名卡号时用
;定义性别时用
s[100];类对象10个
t[100];类对象10个
c[100];类对象10个
0001;
1;
456;撤销卡,匹配姓名卡号的时候用
n0122;
=0;
=0;
=0;
(0)
{
<<"**************************\n";
<<"宁波大学饭卡管理系统\n";
<<"**************************\n";
<<"************************************\n";
<<"**1帮助信息**\n";
<<"**2新建饭卡**\n";
<<"**3撤销饭卡**\n";
<<"**4饭卡充值**\n";
<<"**5饭卡消费**\n";
<<"**6饭卡查询和排序**\n";
<<"**0退出系统**\n";
<<"*************************************\n";
<<"请选择操作选择(0—6):
"<<;
>>;
()
{
1:
<<"\n\n宁大饭卡分为三类,教师卡、学生卡、临时卡。
\n"
<<"您可以根据您的需要按照服务代码建立饭卡,用于就餐、借阅、医疗等方面消费。
\n\n\n";
;
2:
<<"\n";
<<"***请选择您所需的操作***\n";
<<"学生—1;老师—2;临时人员—3.(选择后按回车键确认)\n";
>>m;
(0)
{
(m)
{
1:
学生建卡
(100)最多100个
{
<<"学生帐户已满,不能添加!
!
"<<;
}
<<"输入学生姓名:
";
>>;
s[]();调用卡基类的设置姓名
<<"输入初次办卡时间(如:
2010-1-1):
";
>>;
s[]();调用卡基类的设置初次建卡时间
<<"输入性别:
(女—f;男—m)";
>>;
(()'f'()'m')如果不输入f和m
{
<<"指令错误!
请重新输入!
"<<;
<<"请输入您的性别(女—f;男—m):
";
>>;
}
s[]();调用卡基类的设置性别
<<"输入身份证号码:
";
>>;
s[]();
<<"所在班级号:
";
>>;
s[]();调用派生类学生类的设置班级函数
<<"所属类别(本科生—b;研究生—y):
";
>>;
(()'y'()'b')
{
<<"指令错误!
请重新输入!
"<<;
<<"所属类别(本科生—b;研究生—y):
";
>>;
}
s[]();调用派生类学生类的设置类型函数
<<"添加学生帐户成功!
!
"<<;
;继续下一个
;
2:
老师建卡
(100)
{
<<"教师帐户已满,不能添加!
!
"<<;
}
<<"输入老师姓名:
";
>>;
t[]();
<<"输入初次办卡时间(如:
2010-1-1):
";
>>;
t[]();
<<"输入性别(女—f;男—m):
";
>>;
(()'f'()'m')
{
<<"指令错误!
请重新输入!
"<<;
<<"请输入您的性别(女—f;男—m):
";
>>;
}
t[]();设置性别
<<"输入身份证号码:
";
>>;
t[]();
<<"所属学院:
";
>>;
t[]();
<<"职称(讲师—j;副教授—;教授—p):
";
>>;
(()'j'()''()'p')
{
<<"指令错误!
请重新输入!
"<<;
<<"所属类别(讲师—j;副教授—;教授—p):
";
>>;
}
t[]();设置职称
<<"添加教师帐户成功!
!
"<<;
;继续下一个
;
3:
临时建卡
(100)
{
<<"临时帐户已满,不能添加!
!
"<<;
}
<<"输入临时人员姓名:
";
>>;
c[]();
<<"输入初次办卡时间(如:
2010-6-1):
";
>>;
c[]();
<<"输入性别(女—f;男—m):
";
>>;
(()'f'()'m')
{
<<"指令错误!
请重新输入!
"<<;
<<"请输入您的性别(女—f;男—m):
";
>>;
}
c[]();设置性别
<<"输入身份证号码:
";
>>;
c[]();
<<"添加临时帐户成功!
!
";
;
;
}
;
}
;
3:
<<"请输入待撤销饭卡用户姓名\n";
>>1;
<<"请输入待撤销饭卡用户卡号\n";
>>2;
(0<100)
{
4[i]();
5[i]();
6[i]();
n0[i]();
n1[i]();
n2[i]();
(14)输入姓名和学生卡读取姓名一样
(20)输入卡号和学生卡读取卡号一样
{
s[i]("0");赋0值
s[i]("0");
s[i]('0');
s[i]("0");
s[i]("0");
s[i]('0');
<<"卡号:
"<
"<
"
<
"<
<<"性别:
"<
"<
"
<
"<
=1;
;
}
(15)输入姓名和教师卡读取姓名一样
(21)输入卡号和教师卡读取卡号一样
{
t[i]("0");赋0值
t[i]("0");
t[i]('0');
t[i]("0");
t[i]("0");
t[i]('0');
<<"卡号:
"<"<<<"办卡时间:
"<"<<<"性别:
"<"<<<所属学院:
"<"<=1;
;
}
(16)输入卡号和临时卡读取卡号一样
(22)输入卡号和临时卡读取卡号一样
{
c[i]("0");赋0值
c[i]("0");
c[i]('0');
c[i]("0");
<<"卡号:
"<"<"
<"<<<"性别:
"<"<=1;
;
}
}
(1)
{
<<"该账户已成功删除!
!
!
"<<;
}
(0)姓名不匹配
{
<<"\n\n查无此人!
!
!
\n\n"<<;
}
{
=0;
}
;
4:
饭卡充值
m1;
<<"请输入待充值的卡号\n";
>>1;
(0<100)
{
1[i]();学生卡号
2[i]();教师卡号
3[i]();临时卡卡号
(11)
(s[i]()"")
{
<<"请输入充值数额\n";
>>m1;
s[i](m1);调用卡基类充值函数
=1;
;
}
(12)
(t[i]()"")
{
<<"请输入充值数额\n";
>>m1;
t[i](m1);
=1;
;
}
(13)
(c[i]()"")
{
<<"请输入充值数额\n";
>>m1;
c[i](m1);
=1;
;
}
}
(0)查无此人
{
<<"\n\n查无此人!
!
!
\n\n";
}
{
=0;
}
;
;
5:
<<"请输入待消费的卡号\n";
>>1;
(0<100)
{(1[i]())学生消费
{
<<"请输入消费金额\n";
>>m1;
s[i](m1);
=1;
;
}
(1[i]())老师消费
{
<<"请输入消费金额\n";
>>m1;
t[i](m1);
=1;
;
}
(1[i]())临时卡消费
{
<<"请输入消费金额\n";
>>m1;
c[i](m1);
=1;
;
}
}
(0)姓名卡号不匹配
{
<<"\n\n查无此人!
!
!
\n\n";
}
{
=0;
}
;
6:
<<"请选择排序—1;查询—2\n";
>>m;
(m)
{
1:
<<"现有用户按卡号从大到小排列为:
"<<;
(99>=0)
(c[i]()"0")临时卡信息
{
<<"卡号:
"<"<"<"<<<"性别(女—f;男—m):
"<"<}
(99>=0)
(t[i]()"0")教师信息
{
<<"卡号:
"<"<"<"<<<"性别(女—f;男—m):
"<"<"<"<}
(99>=0)学生信息
(s[i]()"0")
{
<<"卡号:
"<
"<
"<
"<
<<"性别(女—f;男—m):
"<
"<
"<
"<
}
;
2:
<<"请输入饭卡拥有者名字—1;饭卡号码—2\n";
>>m;
(m)
{
1:
<<"请输入饭卡查询的名字\n";
>>1;
(0<100)
{
4[i]();学生
5[i]();教师
6[i]();临时卡
(14)
{<<"卡号:
"<
"<
"<
"<
<<"性别(女—f;男—m):
"<
"<
"<
"<
=1;
;
}
(15)
{
<<"卡号:
"<"<"<"<<<"性别(女—f;男—m):
"<"<"<"<=1;
;
}
(16)
{
<<"卡号:
"<"<"<"<<<"性别(女—f;男—m):
"<"<=1;
;
}
}
(0)
{
<<"\n\n查无此人!
!
!
\n\n"<<;