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

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

教学目标

  • 通过完成一个有实用价值的应用程序,体会利用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-正常

改密


  用新密码替代旧密码。

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

计算利息

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


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

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

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

时间: 2024-07-30 10:13:21

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

C++语言基础 例程 应用系统开发:银行储蓄系统

贺老师的教学链接  本课讲解 说明:(1)下面的代码,只演示了利用链表作为存储结构的可选处理方法,本讲提到的其他方面的拓展,请感兴趣做下去的同学自行使用相关技术组合起来,形成一个完整的系统.(2)运行程序,登录用户名和密码,请阅读程序,从程序中找出.建议建立多文件项目,将代码拷贝到IDE中看.(3)本程序由我的2011级学生刘镇参加企业组织的实训中完成,原文在:点击打开链接 Record.h #ifndef HEADER_RECORD //条件编译 #define HEADER_RECORD #

C语言及程序设计进阶例程-21 银行储蓄系统(第五版)开发

贺老师教学链接  C语言及程序设计进阶 本课讲解 可以直接下载完整的项目文件bank.zip运行(点击打开链接,解压后打开项目,或者自建项目后加入源文件和头文件) 下面的代码,分别展示各个头文件.源文件:Bank.h #ifndef BANK_H_INCLUDED #define BANK_H_INCLUDED #define upNum 2000 //系统最多容纳的用户数 struct record { int account; //账号 int password; //密码 char nam

C语言及程序设计进阶例程-39 银行储蓄系统(第六版)开发

[贺老师教学链接]   [C语言及程序设计进阶]   [本课讲解]  bank.h /*注意:运行前要建立空文件account.bin*/ #ifndef BANK_H_INCLUDED #define BANK_H_INCLUDED #include <malloc.h> typedef struct { int account; //账号 int password; //密码 char name[10]; //用户名 double balance; //账户余额 int status; /

《C++语言基础》网络课程主页

返回 贺利坚教学链接 本课程是在大学的实体课程基础上建设的一门网络课程,将我在教学中建设的资源,让更多的人能够用到. 课程链接是:点击打开链接 同步实体课在 点击打开链接,那里有92名同时学习的"同学",以及他们的博客链接. 坚持这门课程学习的学员,请在评论处留言,我将建立专门的链接,一起建设学习的氛围. 学员链接:(待加) 课程内容 一.从C到C++ 课时 视频 示例程序 自测 学习指导与实践 实践项目参考解答 1.1 由C语言到C++(暨本课介绍) 链接   1.2 C语言的基本成

C语言及程序设计提高例程-15 小小型应用系统开发指导(三)

贺老师教学链接  C语言及程序设计提高 本课讲解 说明:     本程序在学习者仅掌握了基本数据类型和控制结构.函数的前提下设计,模拟银行储蓄系统的基本功能.     程序运行前,请在程序所在文件夹中,自建文件password.txt,保存123456作为初始密码,自建文件balance.dat,保存1000,作为初始的余额.    运行结束后,对数据所做的所有修改均可以利用文件保存下来.     与上一个版本相比,我们学习了模块化程序设计及用函数的实现方法,所以有能力重构了整个软件的结构.本程

C语言及程序设计初步例程-47 小小型应用系统开发指导(二)

贺老师教学链接  C语言及程序设计初步 本课讲解 简单银行系统的初步框架 #include <stdio.h> #include <stdlib.h> int main() { int iPass; int iChoice; printf("欢迎您光临CSDN银行\n"); printf("请输入密码:"); scanf("%d", &iPass); if(iPass!=123456) { printf("

《大数据系统基础》课程实践项目中期答辩顺利举行,清华持续探索大数据人才教育创新之路

2017年11月15日,清华大学大数据能力提升项目之<大数据系统基础>课程实践项目中期答辩在清华大学六号教学楼顺利举行.160余名同学分为21组,向任课老师和企业导师汇报了各组实践项目的进展情况,任课老师和企业导师根据同学们的汇报表现逐一进行了点评和指导.据悉,本次答辩项目来自于国家发改委.百度.国美等政府机构和知名大数据企业等.项目需求和数据涉及多个行业领域,如"建设工程造价指数"."餐饮行业白皮书周报"."基于语义分析的泛娱乐改编研究&qu

神州信息新一代分布式银行核心系统打破银行互联网转型瓶颈

从集中式到分布式银行的基础架构正在发生着翻天覆地的变化,原来分布式并非是银行的必要条件,但随着互联网.物联网的发展,将为银行带来业务的爆发,这时集中式架构是否能够更好的支撑? 21日,神州信息旗下神州数码融信软件有限公司发布了新一代分布式银行核心系统.互联网金融平台.互联网开放平台三款新产品.三款产品都是基于神州数码融信2015年推出"互联网+全能银行"新一代银行应用架构ModelB@nk4.0,采用自有分布式技术平台Sm@rtGalaxy自主研发. 据悉,神州数码融信基于ModelB

Java语言基础细节归纳

俗话说的好,"万丈高楼平地起".由此观之,只有打好扎实地根基,才能筑造出稳健地高楼.对于我们学习和实践技术,也是同一个理. 本文有序地归纳了java语言基础细节,一是作为学习上的总结,二是避免触犯同样地错误,三是希望与同道之人交流.探讨和完善. 1.一个类定义前可以放置3类语句,分别为package.import和class语句,并且在一个Java源文件中有且只有一个被声明为public的类. 2.Java语言中规定,标识符不能使用规定的关键字和保留字,并且必须以一个字母.美元符号或下