返回:贺老师课程教学链接
教学目标
- 通过完成一个有实用价值的应用程序,体会利用C++语言解决问题的过程;
- 多次迭代,逐步完善,用可以运行的程序,鼓舞自己的学习
实训安排
看视频“18 应用系统开发:银行储蓄系统”,并阅读博客中提供的参考解答,了解基本系统的开发。
基本要求:定义了用户类(User)和银行类(Bank),用成员函数实现各种功能,多文件组织程序,能用文本文件存取数据(如示例中给出的技术);
拓展方向:
序号 | 加分项目 | 细 则 |
1 | 改变Bank类中用户信息的存储方式 |
用对象的指针数组存储(User *user[upNum]) 或者用动态数组(User *users,空间用new分配) |
2 | 功能扩充 | 按银行实际业务的要求,增加User类中的数据成员,能够记录身份证号、家庭住址等信息,并在相关业务中使用这些数据。 |
记录用户的每一笔业务,并用文件保存。业务查询时,可以查到这些信息。 | ||
根据业务发生情况,实现计息功能(百度活期存储计算办法) | ||
3 | 用链表存储 | 用链表存储用户信息 |
使用了继承机制 | ||
链表定义成模板类,数据结点(即结点的实际类型)为User | ||
4 | 用文件存储数据 | 用二进制文件 |
用随机存储的方式 | ||
5 | 图形用户界面实现 | MFC、wxWidgets或Qt |
6 | “银行储蓄系统”之外的题目 | 使用后面建议的其他项目,或者自拟的题目,业务内容基本与银行储蓄系统相当时。鼓励同学们自拟题目,实现个性化的实践体验。 |
实践题目(选其一即可)
【项目1-银行储蓄系统】
见本文下一节项目指导。项目1为基本系统,完成后可达到及格标准。
【项目2-银行储蓄系统(自助式)】
项目1中模拟了银行的柜台业务,需要有业务人员为储户办理业务。项目2中,将存款、取款、转帐、查询、挂失、改密功能由客户自助完成,其他功能仍由柜台完成。
与项目1相比,存款、取款、转帐、查询、挂失、改密功能的实现,将由使用Bank类的成员函数,改为由User类的成员函数完成,从文件中读取数据的任务,也将不能在进入系统时,整体读入,而只能在办理业务时,从文件中找到用户数据并操作(实际行系统,使用这些数据,有严格的权限要求)。
【项目3-职工信息管理系统】
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计一个职工信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)职工信息录入功能(职工信息用文件保存)--输入
(3)职工信息浏览功能--输出,包括在退出系统时,将数据保存到文件
(4)查询和排序功能:
- 按工资查询
- 按学历查询等
(5)职工信息删除、修改功能(任选项)
【项目4-图书信息管理系统设计】
图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一个图书信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)图书信息录入功能(图书信息用文件保存)--输入
(3)图书信息浏览功能--输出
(4)查询和排序功能:(至少一种查询方式)--算法
- 按书名查询
- 按作者名查询
(5)图书信息的删除与修改(可选项)
【项目5-学生信息管理系统设计】
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)学生信息录入功能(学生信息用文件保存
(3)学生信息浏览功能---输出
(4)查询、排序功能
- 按学号查询
- 按姓名查询
(5)学生信息的删除与修改
【项目6-销售管理系统】
某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:
1)销售员的代号
2)产品的代号
3)这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
4)输出统计报表
【项目7-通讯录管理】
联系人信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
(1)能建立、修改和增删学生通讯录
(2)能够按多种方式进行查询
【项目8-大奖赛计分系统】
逐渐拓展为一个接近实用的系统:
(1)输入选手人数m和评委人数n,由键盘输入数据,显示选手的得分。输入中需要保证得分在0-10之间,选手的得分是去掉一个最高分和最低分后的平均成绩。
(2)在一些评委数很多的比赛中,可能不止去掉一位最高或最低,由键盘输入要去掉的最值数目s,请改造程序,实现计分。
(3)评委打分范围可以设置,如0~10分、百分制等,请改造程序。
(4)得出的分数并不是只显示就行了,还能够随时动态显示排名。
(5)将本次大奖赛的成绩,保存到一个文件中。
(6)上面的程序中,在输入选手成绩之前,要“设置”的参数不少,包括m、n、s,以及分数范围等。将这些参数也保存到一个文件中,运行程序时,直接从文件中读取即完成设置。当然,也应该设计修改设置的功能,将修改后的值保存到文件。
(7)在计分中,可能会出现输入错误,请提供改分功能。
你还想到了其他什么功能?请继续加入。
【项目n-其他】
你还想到了哪些题目(包括游戏)?只要用得上相关的技术,鼓励自拟。为防止最后验收时才发现设计不合理,请提前与老师讨论。
银行储蓄系统指导
该银行储蓄系统的目标,将是设计一个可以支持多名储户开户、存款、取款、转帐、改密、挂失、解挂、销户等功能的系统,以此初步体会完整系统开发,综合运用已经学过的知识。
以下提示中,给出了多个层次的需要,可以先保证最基本、最简单功能的实现,迭代式地完善,实现“改进意见”中的要求。
按照模块化程序设计要求,充分利用函数实现功能。不赞成写很长的函数,提倡用多文件组织。
功能 | 图 示 | 说明和提示 |
登录 |
输入业务员用户名和密码。3次输入不正确,强制退出程序。 基本要求 可以只设一名业务员,用全局变量表示其用户名和密码,明文保存在文件中(即不加密存储)。 改进意见 可以用一个文本文件保存多名业务员的信息。定义类表示业务员,在程序开始执行时,将文件内容读入业务员对象数组,以支持多名业务员登录,开展工作。 |
|
系统菜单 |
当业务员信息验证后,进入到系统主控菜单,由业务员为储户办理各种业务,直到按0后退出。 基本要求 每次启动系统,都是从0用户开始办理业务 改进意见 储户的信息都保存在文件中,在处理业务前需要将信息读入。 |
|
开户 |
增加一个银行账户(银行卡) 系统是暂设最多支持2000账户。设现在已经有100名客户,新增客户的账号为10001+100=10101,这样,自动生成连续的账号。 开户后,账号状态为0-正常 |
|
销户 |
输入账号,确认后,将余额全部取完,并将状态state置为2-销户。 办理销户的账号,其状态必须为“0-正常”(下同)。 |
|
存款 | 输入账号、金额,记录存款后的余额。 | |
取款 |
输入账号、金额,记录取款后的余额。 取款额不能超过余额。 |
|
查询 | 输入账号,显示账户信息。 | |
转账 |
输入转出账号、金额、转入账户,记录转账后的余额。 账户必须存在,扣除转出账户的金额,要与转入账户增加的金额相同。 |
|
挂失 | 输入账号,将状态改变为 1-挂失 | |
解挂 | 输入账号,将状态为 1-挂失 的账户状态改为 0-正常 | |
改密 |
用新密码替代旧密码。 新密码必须与确认密码相同。 |
|
计算利息 | (这属于银行后台管理的功能,不体现在界面上,以上的设计尚不能支持真实系统中的计息功能,故将此作为选做功能。) |
现行银行计息的规则是,每半年计算一次利息,并将利息加到账号余额中。 如果要计算利息,需要将每一笔存、取、转的信息记录下来,以获得各个时间段内的金额,完成利息计算。 请自行设计有关的数据结构完成设计 |