《C++语言基础》实践项目——银行储蓄系统开发

简介: 返回:贺老师课程教学链接教学目标通过完成一个有实用价值的应用程序,体会利用C++语言解决问题的过程;多次迭代,逐步完善,用可以运行的程序,鼓舞自己的学习实训安排  看视频“18 应用系统开发:银行储蓄系统”,并阅读博客中提供的参考解答,了解基本系统的开发。  基本要求:定义了用户类(User)和银行类(Bank),用成员函数实现各种功能,多文件组织程序,能用文本文

返回:贺老师课程教学链接


教学目标

  • 通过完成一个有实用价值的应用程序,体会利用C++语言解决问题的过程;
  • 多次迭代,逐步完善,用可以运行的程序,鼓舞自己的学习

实训安排

  看视频“18 应用系统开发:银行储蓄系统”,并阅读博客中提供的参考解答,了解基本系统的开发。

  基本要求:定义了用户类(User)和银行类(Bank),用成员函数实现各种功能,多文件组织程序,能用文本文件存取数据(如示例中给出的技术);

  拓展方向:

序号

加分项目

细       则

1

改变Bank类中用户信息的存储方式

用对象的指针数组存储(User *user[upNum])

或者用动态数组(User *users,空间用new分配)

2

功能扩充

按银行实际业务的要求,增加User类中的数据成员,能够记录身份证号、家庭住址等信息,并在相关业务中使用这些数据。

记录用户的每一笔业务,并用文件保存。业务查询时,可以查到这些信息。

根据业务发生情况,实现计息功能(百度活期存储计算办法)

3

用链表存储

用链表存储用户信息

使用了继承机制

链表定义成模板类,数据结点(即结点的实际类型)为User

4

用文件存储数据

用二进制文件

用随机存储的方式

5

图形用户界面实现

MFCwxWidgetsQt

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)评委打分范围可以设置,如010分、百分制等,请改造程序。

4)得出的分数并不是只显示就行了,还能够随时动态显示排名。

5)将本次大奖赛的成绩,保存到一个文件中。

6)上面的程序中,在输入选手成绩之前,要“设置”的参数不少,包括mns,以及分数范围等。将这些参数也保存到一个文件中,运行程序时,直接从文件中读取即完成设置。当然,也应该设计修改设置的功能,将修改后的值保存到文件。

7)在计分中,可能会出现输入错误,请提供改分功能。

  你还想到了其他什么功能?请继续加入。

【项目n-其他】

  你还想到了哪些题目(包括游戏)?只要用得上相关的技术,鼓励自拟。为防止最后验收时才发现设计不合理,请提前与老师讨论。

银行储蓄系统指导

  该银行储蓄系统的目标,将是设计一个可以支持多名储户开户、存款、取款、转帐、改密、挂失、解挂、销户等功能的系统,以此初步体会完整系统开发,综合运用已经学过的知识。

  以下提示中,给出了多个层次的需要,可以先保证最基本、最简单功能的实现,迭代式地完善,实现“改进意见”中的要求。

  按照模块化程序设计要求,充分利用函数实现功能。不赞成写很长的函数,提倡用多文件组织。

功能

图       示

说明和提示

登录


  输入业务员用户名和密码。3次输入不正确,强制退出程序。

基本要求

  可以只设一名业务员,用全局变量表示其用户名和密码,明文保存在文件中(即不加密存储)。

改进意见

  可以用一个文本文件保存多名业务员的信息。定义类表示业务员,在程序开始执行时,将文件内容读入业务员对象数组,以支持多名业务员登录,开展工作。

系统菜单

  当业务员信息验证后,进入到系统主控菜单,由业务员为储户办理各种业务,直到按0后退出。

基本要求

  每次启动系统,都是从0用户开始办理业务

改进意见

  储户的信息都保存在文件中,在处理业务前需要将信息读入。

开户

  增加一个银行账户(银行卡)

  系统是暂设最多支持2000账户。设现在已经有100名客户,新增客户的账号为10001+100=10101,这样,自动生成连续的账号。

开户后,账号状态为0-正常

销户

  输入账号,确认后,将余额全部取完,并将状态state置为2-销户。

  办理销户的账号,其状态必须为“0-正常”(下同)。

存款

  输入账号、金额,记录存款后的余额。

取款

  输入账号、金额,记录取款后的余额。

  取款额不能超过余额。

查询

  输入账号,显示账户信息。

转账

  输入转出账号、金额、转入账户,记录转账后的余额。

  账户必须存在,扣除转出账户的金额,要与转入账户增加的金额相同。

挂失

  输入账号,将状态改变为 1-挂失

解挂

  输入账号,将状态为 1-挂失 的账户状态改为 0-正常

改密

  用新密码替代旧密码。

  新密码必须与确认密码相同。

计算利息

(这属于银行后台管理的功能,不体现在界面上,以上的设计尚不能支持真实系统中的计息功能,故将此作为选做功能。)

  现行银行计息的规则是,每半年计算一次利息,并将利息加到账号余额中。

  如果要计算利息,需要将每一笔存、取、转的信息记录下来,以获得各个时间段内的金额,完成利息计算。

  请自行设计有关的数据结构完成设计



目录
相关文章
|
24天前
|
开发框架 Linux C语言
C、C++、boost、Qt在嵌入式系统开发中的使用
C、C++、boost、Qt在嵌入式系统开发中的使用
31 1
|
1月前
|
存储 C++ 容器
学会在 C++ 中使用变量:从定义到实践
C++中的变量是数据容器,包括`int`、`double`、`char`、`string`和`bool`等类型。声明变量时指定类型和名称,如`int myNum = 15;`。`cout`与`<<`用于显示变量值。常量用`const`声明,值不可变。变量名应唯一,遵循特定命名规则,常量声明时需立即赋值。
113 1
|
1月前
|
存储 算法 编译器
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
47 1
|
1月前
|
算法 程序员 C语言
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践
56 0
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
|
14天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
38 6
|
1月前
|
存储 安全 编译器
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
70 0
|
1天前
|
机器学习/深度学习 开发框架 人工智能
探索C++的深邃世界:编程语言的魅力与实践
探索C++的深邃世界:编程语言的魅力与实践
|
9天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。
|
24天前
C/C++test两步完成CMake项目静态分析
通过将C/C++test集成到CMake项目中,并根据项目的需要进行配置,可以在两步内完成CMake项目的静态分析。这样可以帮助开发人员及时发现并修复潜在的代码问题,提高代码质量和可靠性。
8 0
|
30天前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
70 2