数据结构课程设计-活期储蓄账目管理系统(含有排序和文章编译功能)

合集下载

活期账目储蓄管理

活期账目储蓄管理

摘要银行作为一个金融机构,在现代人们的生活中扮演着极其重要的角色。

为生活节凑飞快的现代人提供快速、便捷、高效的理财服务。

伴随着电脑技术的发展,各大银行的储蓄管理系统也随之出现在这一舞台上。

本次研究开发的目的是设计并实现一个活期储蓄账目管理系统的基本业务。

本文介绍了活期储蓄账目管理系统,并深入分析活期储蓄账目管理系统的设计和各个功能模块的实现。

系统主要分为五个大的模块:储户开户模块、储户销户模块、储户登录模块、储户的账号存款、取款模块,能够实现对储户的自然信息进行管理,对储户账户信息进行管理,对当天交易进行统计,以及查询指定用户的交易信息。

系统充分采用了模块化的设计思想,将各种功能进行封装,提高了系统的整体扩展性,经使用证明该系统运行良好。

关键词:算法数据结构管理Title Current savings account management systemAbstractBank, as a financial institution, in modern plays an extremely important role in people's lives. For modern living section of Minato quickly with fast, convenient, and efficient financial services. Along with the development of computer technology, the major bank savings management system also arise at this stage.This research aims to design and implement a basic business checking savings account management system. This article describes the current savings account management system, and in-depth analysis of current savings account management system design and realization of each functional module.System is divided into five modules: customer account login module, customer sales module, savers account deposit, withdrawal of modules, savers can be achieved naturally information management, to manage customer account information, trading statistics on that day, and the query transaction information for the specified user.Full systems with modular design concept, package various functions, improve the overall scalability of the system, the used result shows that the system is running well.Keywords:Algorithm Data structure Management目录1 绪论 (1)1.1 研究开发目的和意义 (1)2 活期储蓄账目管理系统开发技术 (2)2.1 C++语言简介 (2)2.2 Visual Studio 2005开发平台 (2)2.3 活期储蓄账目管理介绍 (4)3 系统分析 (5)4 系统设计 (5)4.1 系统模块设计 (5)4.1.1登录功能模块的分析 (6)4.1.2用户自然信息管理功能模块的分析 (6)4.1.3账户信息管理功能模块分析 (7)4.1.4当天交易统计功能模块的分析 (7)4.1.5用户交易查询模块的分析 (7)4.2 系统设计所采用技术 (7)4.3 数据库结构设计 (8)4.4 函数设计 (10)4.5 关键流程 (11)4.5.1系统函数调用流程 (11)4.5.2系统执行流程 (12)4.5.3功能详细执行流程 (13)5 调试分析 (15)6 测试及运行结果 (16)6.1登陆功能 (16)6.2主操作界面 (17)结论 (27)致谢 (28)参考文献 (29)1 绪论随着科技的提高和社会的日益发展,21世纪已经进入到了信息、网络的高科技时代,互联网逐渐普及,社会现代化的脚步不断加快,人们的生活也随之向着多元化的方面发展。

活期储蓄帐目管理数据结构-无删减范文

活期储蓄帐目管理数据结构-无删减范文

活期储蓄帐目管理数据结构活期储蓄帐目管理数据结构1. 简介活期储蓄帐目管理是指对个人或机构的活期储蓄账户进行有效管理和记录的过程。

为了方便对储蓄账户进行账目管理,需要采用合适的数据结构来存储和操作账目数据。

本文将介绍一种适用于活期储蓄帐目管理的数据结构。

2. 数据需求在活期储蓄帐目管理中,我们需要记录每一笔储蓄交易的相关信息,包括交易日期、交易类型、交易金额等。

同时,还需要能够对账目数据进行高效的增删改查操作以及排序功能。

3. 数据结构设计为了满足上述需求,我们可以采用链表的数据结构来存储账目数据。

链表由多个节点构成,每个节点包含一个保存账目信息的结构体。

结构体中的字段可以包括交易日期、交易类型、交易金额等。

```markdownstruct Node {Date date; // 交易日期string type; // 交易类型float amount; // 交易金额Node next; // 下一个节点的指针};```上述结构体 Node 表示链表中的一个节点。

其中,包括交易日期(date)、交易类型(type)、交易金额(amount)等字段。

4. 操作实现4.1 插入数据在链表的尾部插入新的账目数据是一种常见的操作。

我们可以先找到链表的尾节点,然后在其后面插入一个新的节点。

```markdownvoid insert(Node head, Date date, string type, float amount) {Node newNode = new Node;newNode->date = date;newNode->type = type;newNode->amount = amount;newNode->next = nullptr;Node curr = head;while (curr->next != nullptr) {curr = curr->next;}curr->next = newNode;}```4.2 删除数据在链表中删除指定节点的账目数据是另一个常见的操作。

7C MFC课程设计之活期储蓄管理系统

7C  MFC课程设计之活期储蓄管理系统

此报告的源代码(工程)下载地址:/source/3551927大学C++面向对象课程设计报告院(系):计算机工程学院专业:软件工程学生姓名:__班级:__学号: 2题目:银行储蓄管理系统起讫日期: 2010.07.04-2010.07.14 设计地点:指导教师:完成日期: 2010 年07月14日一、课程设计目的1、进行c++面向对象程序设计的复习巩固;2、在完成c++面向对象语言学习的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践,加深对面向对象语言的理解。

3、提高运用c++编程的能力和解决实际问题的能力,创新能力及团队合、协调能力4、提高调查研究、查询技术文献、资料和编程及设计文档的能力;5、首次尝试编写软件,学习实际操作开发能力,体验学习基础知识重要性。

6、提高自学能力,体验合作以及独立编程、分析文献等各方面的重要性,加强这些方面素质的训练。

二、课程设计内容与实现的功能课程设计内容是活期储蓄管理系统,次系统主要实现开户、存款、取款、查询以及销户的功能。

还有一些细节的地方,比如各个输入位置输入不合法的情况,及BackSpace的功能,等等。

三、系统分析与设计1、系统分析(1)信息。

完整描述系统中所处理的全部信息;(2)行为。

完全描述系统状态变化所需处理或功能;(3)表示。

详细描述系统的对外接口与界面。

我的这个系统主要是实现活期储蓄中的开户、存款、取款、查询和销户等的操作。

是假定的某银行账户的账号从50000开始的,没增加一个账户,账号就加1,数组对象的每个对象的位置与账号是一一对应的,故,用线性的查找方法可以迅速的找到所查找的账户。

我的这个MFC程序主要是一个界面,上面有两个编辑框,和一个接近键盘的按钮组合,需要用户开户,依次输入姓名、设置密码(密码必须是六位字母或者数字)、输入开户金额(必须大于10元),开户成功,然后就可以进行查询和存取钱了,查询的时候需要输入的就是账号和密码,就能查询到该账户的基本情况。

银行活期储蓄账户管理课程设计

银行活期储蓄账户管理课程设计

青岛大学软件技术学院游戏算法实践报告姓名王晓阳专业数字媒体艺术班级 4班指导教师刘春秋2013年 1 月 16日目录1 问题定义与描述 (3)1.1 问题定义 (3)1.2 问题描述 (3)2 关键技术 (3)3 程序的执行命令操作 (3)4 总体设计 (4)4.1 系统模块图 (4)4.2结构设计说明 (5)5 详细设计 (5)5.1构建节点类模板 (5)5.2主函数构建 (5)5.3其他各功能函数 (6)6 测试结果及分析 (8)7 心得体会 (11)附录:程序代码 (13)1 问题定义与描述1.1 问题定义活期储蓄账目管理1.2 问题描述本程序需要先建立结点类模板,然后使用链表的基本操作应用实现各个程序的实现,头插法先建立链表使之成当前操作数据基础,然后可以使用节点的删除进行储户的销户,结点的插入的应用成为程序的开户(注意:建立新的用户要先确认新建的用户号不可以语之前的用户号码相同, 引起系统错误!本程序应用链表节点的比较改进程序。

)。

储户的存取也是应用节点的比较查找之后进行的账户钱数加减。

2 关键技术链表的插入、删除与查找3 程序的执行命令操作(1).建立节电类模板,构建链表.(2).输入储户信息.(3).执行各项操作(数据测试)1.查询储户信息.2.开户.3.储户支取信息查询.4.储户的程序销户.5.程序完成.6.程序退出.4 总体设计4.1 系统模块图图4.1 系统模块图4.2结构设计说明1.本程序主要应用数据结构节点类模板,首先构建节点类模板,在建立已有储户数据中对头结点(*head)分配动态存储空间,对头结点的邻接点(head->next)赋初值,循环插入新结点建立储户数据(头插法)。

在账号循环插入中进行账号重复判断。

2.在查找账户的过程中,应用结点下移继续查找,实现账户正确查找应用。

3.在销户过程中,进行结点删除,从而实现储户的销户。

4.在开户过程中,定义新结点,分配新的存储空间,进行结点插入,在账号循环插入中进行账号重复判断,完成开户过程。

数据结构课程设计-活期储蓄账目管理

数据结构课程设计-活期储蓄账目管理

目录(一)需求分析(二)概要设计1)主要思想2)具体功能流程3)定义结构(三)详细设计基本函数(四)调试与操作结果一、进入操作界面二、储蓄开户三、储户登陆,存款,查询,取款,查询四、显示储户信息(五)课程设计总结与体会(六)致谢(七)参考文献(八)附源代码(一)需求分析设计简单的活期储蓄账目管理系统,实现最基本的功能。

1.设计题目:设计活期储蓄账目管理。

2.设计任务:活期储蓄处理中,储户开户、销户、存入、支出活动频繁。

系统设计要求:1)能比较迅速地找到储户的账目,以实现存款、取款记账。

2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

3.设计思想:建立链表,快速实现账户的增添,插入,删除功能。

4.运行环境:VC6.0++(二)概要设计1)主要思想:2)具体功能流程:a)开户b)查询,存款或取款c)定义结构:typedef struct ElemType //定义结构体{char name[11];int account;char password[7];float money;}ElemType;typedef struct lnode //定义链表{ElemType data;struct lnode *next;}LINK;(三)详细设计基本函数:01)void InsertList(LINK *&L) //链表插入实现开户功能02)void Search(LINK *L) //链表查找,实现用户登陆功能03)void Deposit(LINK *&L,LINK *p) //用户存款、取款04)void PrintList(LINK*L) //打印链表,实现用户信息输出05)oid DeleteList(LINK *&L) //链表删除,实现销户功能(需要账号和密码)06)void save(LINK *L) //保存链表,实现用户信息保存到文件07)void Print(LINK *&L) //打开文件,得到链表08)void menu() //主菜单函数09)void choice() //菜单选择函数(四)调试与操作结果(一)进入操作界面(二)储蓄开户(三)储户登陆,存款,查询,取款,查询(四)显示储户信息(五)课程设计总结与体会这次课程设计,我与小组成员选的题目是活期储蓄账目管理,对于这个实验开始感觉不知从哪儿开始,后来经过认真分析后,结合所学知识并与小组成员查阅了许多相关的课外知识,我们开始了一步步解题编程。

数据结构 课程设计 库存管理系统

数据结构 课程设计 库存管理系统

学号数据结构课程设计设计说明书库存管理系统起止日期:2011年1月10 日至2011 年1月15日学生姓名班级成绩指导教师(签字)电子与信息工程系2011年1 月15日天津城市建设学院课程设计任务书2010—2011学年第1学期电子与信息工程系软件工程专业班级课程设计名称:数据结构课程设计设计题目:库存管理系统完成期限:自2011 年12 月12 日至2011 年12 月16 日共 1 周设计依据:c++程序设计要求:熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

主要内容:1)问题描述试设计一库存管理系统,产品信息包括产品编号、名称、价格、数量等(产品编号不重复)。

2) 基本要求该系统应具有以下功能:1、产品信息录入功能(产品信息用文件保存)--输入?2、产品信息浏览功能--输出?3、产品入库4、产品出库5、查询和排序功能:1)按价格从大到小排序2)按名称查询6、产品信息删除、修改功能。

目录一、设计目的 (4)二、设计要求 (4)三、设计内容 (4)(1)需求分析 (4)(2)问题求解 (4)(3)总体设计 (5)(4)详细设计 (6)(5)关键源程序清单 (7)(6)执行结果: (12)四、参考文献 (15)一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。

凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。

三、设计内容(1)需求分析程序的功能、输入输出的要求1、从文件中加载数据;2、增加一个产品的信息;3、保存数据;4、显示所有产品的信息;5、删除某个产品的信息;6、用名称查找某个产品的信息;7、用编号查找某个产品的信息;8、退出。

数据结构课程设计--活期储蓄账目管理

数据结构课程设计--活期储蓄账目管理

数据结构课程设计--活期储蓄账目管理活期储蓄账目管理一目的满足活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求。

①能比较迅速地找到储户的帐户进而显示储户信息,以实现存款、取款记账;②能比较简单,迅速地实现插入和删除,以实现开户和销户的需要;③熟练使用 C 语言编写程序,解决实际问题;学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。

二需求分析1、数据需求1.需先进行储户开户才可进行之后的所有的操作。

2.开户时需要的数据有姓名、身份证号码、联系电话、密码、账号会自动生成。

3.销户时,需用输入账号与密码(两者都正确后)方可销户;存取款时,也需进行账号及密码验证后方可进行交易。

2、基本功能需求基本的功能有新建储户(开户)、删除储户(销户)、存取款、查询储户信息(此步也可看见交易后的信息)、显示所有储户信息。

3、非功能性需求系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行。

三概要设计1、数据结构设计用结构体来定义其数据类型,然后将数据按照该数据结构存储,之后运用文件的相关知识将更改的数据写入文件中,采用数组类型的存储结构。

2、储存结构体设计本系统主要用线性表表结构类型来存储在“活期储蓄账目管理系统”中的信息。

其中,结构体由5个分量构成:用户账号、用户姓名、用户身份证号码、用户密码、开户金额。

3、模块设计void add()函数实现新建储户功能void select_id()函数实现查询储户信息功能void display()函数实现显示所有储户信息功能void del()函数实现删除储户功能void save_money() 函数实现存款功能void get_money()函数实现取款功能void print()函数用于显示菜单void main()函数用于实现菜单中的功能四详细设计1、结构体的详细定义struct user //用户类型(账号,姓名,身份证号,存款) {int id;char name[20];char person_num[19];char password[6];double money;};2、系统函数详细介绍void add()函数实现新建储户功能void add() //添加用户{printf("%45s\n","***新建储户***");printf("--------------------------------------------------------------------------------\n\n");struct user getuser();struct user temp;int count(); //函数目的:计算文件中的记录数目以生成自动账号FILE *fp;int number;if((fp=fopen(file,"ab"))==NULL){printf("Can not open file!\n");exit(1);}temp=getuser(); //读取用户名number=count();temp.id=number+1; //生成自动账号fwrite(&temp,sizeof(struct user),1,fp);printf("添加用户成功!\n");fclose(fp);}void select_id()函数实现查询储户信息功能void select_id() //查询储户信息{int count();void getpassword(char *password);printf("%45s\n","***查询储户信息***");printf("--------------------------------------------------------------------------------\n");printf("%s %15s %15s %15s\n","编号","用户姓名","身份证号码","存款余额");printf("--------------------------------------------------------------------------------\n\n");FILE *fp;struct user temp;int i,maxnum;char password[8];bool flag=false;if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}maxnum=count();printf("输入要查询账号:");scanf("%d",&i);if(i<i||i>maxnum){printf("你要查询的账号不存在!");return;}printf("输入账号密码:");scanf("%s",&password);while(fread(&temp,sizeof(struct user),1,fp)) //循环读取每一条记录判断是否为要查看的记录{if(temp.id==i&&strcmp(temp.password,password)==0){printf("NO.%d %8s %25s %.2f\n",temp.id,,temp.person_num,te mp.money);flag=true;break;}}if(flag==false) //判断密码是否正确{printf("您输入的密码不正确!\n");return;}fclose(fp);}void display()函数实现显示所有储户信息功能void display() //显示所有储户信息{printf("%45s\n","***显示所有储户信息***");printf("--------------------------------------------------------------------------------\n");printf("%s %15s %15s %15s\n","账号","用户姓名","身份证号码","存款余额");printf("--------------------------------------------------------------------------------\n");FILE *fp;struct user temp;if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}while(fread(&temp,sizeof(struct user),1,fp)){printf("NO.%d %10s %23s %.2f\n",temp.id,,temp.person_num,t emp.money);}fclose(fp);}void del()函数实现删除储户功能void del() //删除储户{printf("%45s\n","***删除储户***");printf("--------------------------------------------------------------------------------\n");printf("%s %15s %15s %10s\n","账号","用户姓名","身份证号码","存款余额");printf("--------------------------------------------------------------------------------\n");int count();void getname(char *name);void getperson_num(char *person_num);void getpassword(char *password);FILE *fp;int i,num,mark;char password[6];bool flag=false;struct user *temp;num=count(); //根据记录数申请空间temp=(struct user *)malloc(num*sizeof(struct user));if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++) //读取文件内容fread(&temp[i],sizeof(struct user),1,fp); fclose(fp);printf("输入要需要注销的账号:");scanf("%d",&mark);if(i<mark||mark>num){printf("你要注销的账号不存在!");return;}printf("输入账号密码: ");scanf("%s",&password);if((fp=fopen(file,"wb"))==NULL) //写方式打开文件,覆盖原文件中的内容{printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++) //无效账户信息全部置为0{if(temp[i].id==mark&&strcmp(temp[i].password,password)==0&&temp[i].mo ney==0.00){strcpy(temp[i].person_num,"0");strcpy(temp[i].name,"0");strcpy(temp[i].password,"0");flag=true;}fwrite(&temp[i],sizeof(struct user),1,fp);}fclose(fp);free(temp);if(flag==false){printf("您输入的密码不正确或是余额不为零!\n");}elseprintf("储户注销成功!\n");void save_money() 函数实现存款功能void save_money() //函数功能:存款{printf("%45s\n","***用户存款业务***");printf("--------------------------------------------------------------------------------\n\n");int count();void getpassword(char *password);FILE *fp;int i,num,mark;bool flag=false;struct user *temp;char password[6];num=count();temp=(struct user *)malloc(num*sizeof(struct user)); //根据记录数申请空间if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++) //将文件内容存入数组fread(&temp[i],sizeof(struct user),1,fp);fclose(fp);printf("输入要存款账号:"); //读取存款账号scanf("%d",&mark);if(i<mark||mark>num){printf("你要查询的账号不存在!");return;}printf("输入账号密码: ");scanf("%s",&password);if((fp=fopen(file,"wb"))==NULL) //写方式打开文件,覆盖原文件中的内容{printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++){if(temp[i].id==mark&&strcmp(temp[i].password,password)==0){double money=0;printf("输入要存入的金额:");scanf("%lf",&money);while(1){if(money<=0){printf("只能为正数!\n");money=0;printf("输入要存入的金额:");scanf("%lf",&money);}elsebreak;}temp[i].money +=money;flag=true;}fwrite(&temp[i],sizeof(struct user),1,fp); //修改该用户的信息}fclose(fp);free(temp);if(flag==false){printf("您输入的密码不正确!\n");}elseprintf("你存款业务已办妥!\n");}void get_money()函数实现取款功能void get_money() //函数功能:用户取款{printf("%45s\n","***用户取款业务***");printf("--------------------------------------------------------------------------------\n\n");int count();FILE *fp;int i,num,mark;char password[6];bool flag=false;struct user *temp;num=count(); //根据记录数申请空间temp=(struct user *)malloc(num*sizeof(struct user));if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++) //读取文件内容fread(&temp[i],sizeof(struct user),1,fp);fclose(fp);printf("输入要取款账号:");scanf("%d",&mark);if(i<mark||mark>num){printf("你要查询的账号不存在!");return;}printf("输入账号密码: ");scanf("%s",&password);if((fp=fopen(file,"wb"))==NULL) //写方式打开文件,覆盖原文件中的内容{printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++){if(temp[i].id==mark&&strcmp(temp[i].password,password)==0){double money=0;printf("输入要取出的金额:");scanf("%lf",&money);if(money<=0) //判断用户余额是否足够{printf("只能为正数!\n");money=0;}else if(money>temp[i].money){printf("你的余额不足!\n");money=0;}temp[i].money -=money;flag=true;}fwrite(&temp[i],sizeof(struct user),1,fp);}fclose(fp);free(temp);if(flag==false){printf("您输入的密码不正确!\n");}elseprintf("你取款业务已办妥!\n");}void print()函数用于显示菜单void print() //函数功能:输出界面{printf("%48s\n","***活期储蓄帐目管理系统***");printf("--------------------------------------------------------------------------------\n\n");printf("%8s,%-20s\n","1","新建储户");printf("%8s,%-20s\n","2","查询储户信息");printf("%8s,%-20s\n","3","显示所有储户信息");printf("%8s,%-20s\n","4","删除储户");printf("%8s,%-20s\n","5","存款");printf("%8s,%-20s\n","6","取款");printf("%8s,%-20s\n","7","退出");printf("\n请选择功能(1~7):");}void main()函数用于实现菜单中的功能,主函数void main(){char choose;do{print();scanf(" %c",&choose); //读取功能标号,根据标号选择不同的函数fflush(stdin);system("cls");switch(choose){case '1':add();break;case '2':select_id();break;case '3':display();break;case '4':del();break;case '5':save_money();break;case '6':get_money();break;case '7':exit(1);default:printf("对不起,你所选择的功能不存在!\n");}getch(); //暂停功能(读取任意键继续)(conio.h)system("cls"); //清除屏幕显示(stdlib.h)}while(1);}五调试分析系统运行主界面如图所示,各子功能测试运行结果如下:每个方面实现一个功能。

数据结构课程设计活期储蓄帐目管理文章编辑报告

数据结构课程设计活期储蓄帐目管理文章编辑报告

数据结构课程设计报告学院:信息科学与工程学院【题目】1.活期储蓄帐目管理活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:1) 能比较迅速地找到储户的帐户,以实现存款、取款记账;2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要5. 文章编辑**功能:输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80 个字符,共N 行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。

存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

输出形式:(1)分行输出用户输入的各行字符;(2)分4 行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;(4)尽可能使用图形界面第一章活期储蓄帐目管理Ⅰ.问题描述1.活期储蓄帐目管理活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:1) 能比较迅速地找到储户的帐户,以实现存款、取款记账;2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要.Ⅱ.需求分析:本演示程序用c-free编写,完成银行管理系统的生成,储户开户、销户、存入、支出。

①输入的形式和输入值的范围:开户时自定义输入用户账号、用户姓名、密码、及开户金额;用户登陆时输入正确的账号及密码,完成登陆后即可进行存款、取款、转账、修改密码、及销户。

②输出的形式:在所有三种操作中都显示操作是否正确以及相应操作后的内容。

其中输入错误后回到主页面,可继续选择操作③程序所能达到的功能:用户开户账户登陆(存款、取款、转账、修改密码)账号注销④测试数据:Ⅲ.概要设计:1).本程序主要包含9个函数1.账户开户函数:set_account();2.账户登陆函数:enter_account();3.销户函数:del_account()4.转账函数:transfer(int);5.存款函数:savemoney();6.取款函数: fetchmoney();7.修改密码函数:change_passwd()8.文件存储函数:save();9.文件打开函数load();2).各函数关系如下:Ⅳ.详细设计1).定义操作类模板class YH{public:YH();void set_account();//银行开户void del_account();void transfer(int); //转账void enter_account();void addmoney(int,float);void exitYH();// 退出系统void functionshow();// 功能界面void save();void load();protected:consumer *account[20];static int acnum;//账户数};2).定义结点类模板class consumer:public YH{public:friend class YH;consumer(int id,string Name,string PassWord,float m){ID=id;name=Name;money=m;passwd=PassWord;}consumer(){ID=0;name='0';money=0;passwd='0';}int get_id(){return ID;}void savemoney();// 存钱string get_passwd(){return passwd;}// 取得密码void display();void fetchmoney(); //取钱void change_passwd(); //修改密码void add_money(float);void dec_money(float);float get_money();private:int ID; //开户帐号string passwd; // 用户密码string name; // 用户姓名float money;};3).定义基本操作1.账户开户void YH::set_account(){int id;string nam;string passw;float m;cout<<endl<<"请输入开户号:";cin>>id;cout<<endl<<"请输入开户人姓名:";cin>>nam;cout<<endl<<"请输入开户密码:";cin>>passw;cout<<endl<<"请输入存入金额:";cin>>m;while(m<=0){cout<<"请输入正确的数字!"<<endl;cin>>m;}consumer * acc = new consumer(id,nam,passw,m);account[acnum] = acc;cout<<"开户成功!!"<<endl<<endl;acnum++;save();cin.get();return;}// set_account2).账户登陆void YH::enter_account(){int id;cout<<"请输入帐号:";cin>>id;int flag = 1;int i = 0;while((i<acnum)&&(flag)){if(id==account[i]->get_id()) flag = 0; else i++;}if(flag){cout<<"帐号不存在!"<<endl<<endl;return;}cout<<"请输入密码:";string passw;cin>>passw;if(passw!=account[i]->get_passwd()) return;account[i]->display();cin.get();cin.get();int n;do{system("cls");cout<<"请选择你要进行的操作:"<<endl<<"1)查看信息"<<endl<<"2)取款"<<endl<<"3)存款"<<endl<<"4)修改密码"<<endl<<"5)转账"<<endl<<"6)返回"<<endl;cin>>n;switch(n){case 1: account[i]->display();break;case 2: account[i]->fetchmoney();save();break;case 3:account[i]->savemoney();save();break;case 4:account[i]->change_passwd();save();break;case 5:transfer(i);save();break;case 6:return;}cin.get();cin.get();}while(1);}// enter_account3).修改密码void consumer::change_passwd(){string pwd,repwd;cout<<"请输入新密码:";cin>>pwd;cout<<"请再输入一次新密码:";cin>>repwd;if(pwd!=repwd)cout<<"你输入的两次密码不一样,请重新输入!"<<endl;passwd=pwd;cout<<"密码修改成功,请牢记!"<<endl;cin.get();}// change_passwd4).取款void consumer::fetchmoney(){float m;char ch;do{cout<<endl<<"你要取多少钱:"<<"$>"<<endl ;// cin>>m;while(m<=0){cout<<"请输入正确的数字!"<<endl;cout<<"$>";cin>>m;}if(money<m){cout<<"对不起,你的余额不足!"<<endl;}else{money=money-m;cout<<endl<<"操作成功,请收好钱!"<<endl;}cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<"$ >";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y') {cout<<"$ >";cin>>ch;}}while(ch=='y'||ch=='Y');}// fetchmoney4).存款void consumer::savemoney(){float c;char ch;do{cout<<endl<<"你要存多少钱:"<<"$>"<<endl ; cin>>c;while(c<=0){cout<<"请输入正确的数字!"<<endl;cout<<"$>";cin>>c;}money=money+c;cout<<"操作已成功!"<<endl;cout<<"是否要继续该项操作:(Y/N) "<<endl; cout<<"$ >";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y') {cout<<"$ >";cin>>ch;}}while(ch=='y'||ch=='Y');}// savemoney5).转账void YH::transfer(int x)cout<<"请输入帐号:";cin>>id;int flag = 1;int i = 0;while((i<acnum)&&(flag)){if(id==account[i]->get_id()) flag = 0; else i++;}if(flag){cout<<"帐号不存在!"<<endl<<endl;return ;}float b;cout<<endl<<"请输入你要转帐的金额:";cin>>b;while(b<=0){cout<<"请输入正确的数字!"<<endl;cout<<"$>";}if(account[x]->get_money()<b) cout<<"对不起,金额不够!!"<<endl;else{account[x]->dec_money(b);account[i]->add_money(b);} return;}//transferⅤ.测试分析测试数据及测试结果1.用户开户:输入:开户账号:1234567开户人姓名:liyan开户密码:123456存入金额:555输出:开户成功!2.用户登陆*输入:账号:1234567输入密码:123456(在账号和密码都正确的情况下输出:用户姓名:liyan账号:1234567余额:555否则返回主菜单重新选择。

数据结构课程设计--活期储蓄账目管理.doc

数据结构课程设计--活期储蓄账目管理.doc

活期储蓄账目管理一目的满足活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求。

①能比较迅速地找到储户的帐户进而显示储户信息,以实现存款、取款记账;②能比较简单,迅速地实现插入和删除,以实现开户和销户的需要;③熟练使用 C 语言编写程序,解决实际问题;学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。

二需求分析1、数据需求1.需先进行储户开户才可进行之后的所有的操作。

2.开户时需要的数据有姓名、身份证号码、联系电话、密码、账号会自动生成。

3.销户时,需用输入账号与密码(两者都正确后)方可销户;存取款时,也需进行账号及密码验证后方可进行交易。

2、基本功能需求基本的功能有新建储户(开户)、删除储户(销户)、存取款、查询储户信息(此步也可看见交易后的信息)、显示所有储户信息。

3、非功能性需求系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行。

三概要设计1、数据结构设计用结构体来定义其数据类型,然后将数据按照该数据结构存储,之后运用文件的相关知识将更改的数据写入文件中,采用数组类型的存储结构。

2、储存结构体设计本系统主要用线性表表结构类型来存储在“活期储蓄账目管理系统”中的信息。

其中,结构体由5个分量构成:用户账号、用户姓名、用户身份证号码、用户密码、开户金额。

3、模块设计void add()函数实现新建储户功能void select_id()函数实现查询储户信息功能void display()函数实现显示所有储户信息功能void del()函数实现删除储户功能void save_money() 函数实现存款功能void get_money()函数实现取款功能void print()函数用于显示菜单void main()函数用于实现菜单中的功能四详细设计1、结构体的详细定义struct user //用户类型(账号,姓名,身份证号,存款) {int id;char name[20];char person_num[19];char password[6];double money;};2、系统函数详细介绍void add()函数实现新建储户功能void add() //添加用户{printf("%45s\n","***新建储户***");printf("--------------------------------------------------------------------------------\n\n");struct user getuser();struct user temp;int count(); //函数目的:计算文件中的记录数目以生成自动账号FILE *fp;int number;if((fp=fopen(file,"ab"))==NULL){printf("Can not open file!\n");exit(1);}temp=getuser(); //读取用户名number=count();temp.id=number+1; //生成自动账号fwrite(&temp,sizeof(struct user),1,fp);printf("添加用户成功!\n");fclose(fp);}void select_id()函数实现查询储户信息功能void select_id() //查询储户信息{int count();void getpassword(char *password);printf("%45s\n","***查询储户信息***");printf("--------------------------------------------------------------------------------\n");printf("%s %15s %15s %15s\n","编号","用户姓名","身份证号码","存款余额");printf("--------------------------------------------------------------------------------\n\n");FILE *fp;struct user temp;int i,maxnum;char password[8];bool flag=false;if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}maxnum=count();printf("输入要查询账号:");scanf("%d",&i);if(i<i||i>maxnum){printf("你要查询的账号不存在!");return;}printf("输入账号密码:");scanf("%s",&password);while(fread(&temp,sizeof(struct user),1,fp)) //循环读取每一条记录判断是否为要查看的记录{if(temp.id==i&&strcmp(temp.password,password)==0){printf("NO.%d %8s %25s %.2f\n",temp.id,,temp.person_num,te mp.money);flag=true;break;}}if(flag==false) //判断密码是否正确{printf("您输入的密码不正确!\n");return;}fclose(fp);}void display()函数实现显示所有储户信息功能void display() //显示所有储户信息{printf("%45s\n","***显示所有储户信息***");printf("--------------------------------------------------------------------------------\n");printf("%s %15s %15s %15s\n","账号","用户姓名","身份证号码","存款余额");printf("--------------------------------------------------------------------------------\n");FILE *fp;struct user temp;if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}while(fread(&temp,sizeof(struct user),1,fp)){printf("NO.%d %10s %23s %.2f\n",temp.id,,temp.person_num,t emp.money);}fclose(fp);}void del()函数实现删除储户功能void del() //删除储户{printf("%45s\n","***删除储户***");printf("--------------------------------------------------------------------------------\n");printf("%s %15s %15s %10s\n","账号","用户姓名","身份证号码","存款余额");printf("--------------------------------------------------------------------------------\n");int count();void getname(char *name);void getperson_num(char *person_num);void getpassword(char *password);FILE *fp;int i,num,mark;char password[6];bool flag=false;struct user *temp;num=count(); //根据记录数申请空间temp=(struct user *)malloc(num*sizeof(struct user));if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++) //读取文件内容fread(&temp[i],sizeof(struct user),1,fp); fclose(fp);printf("输入要需要注销的账号:");scanf("%d",&mark);if(i<mark||mark>num){printf("你要注销的账号不存在!");return;}printf("输入账号密码: ");scanf("%s",&password);if((fp=fopen(file,"wb"))==NULL) //写方式打开文件,覆盖原文件中的内容{printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++) //无效账户信息全部置为0{if(temp[i].id==mark&&strcmp(temp[i].password,password)==0&&temp[i].mo ney==0.00){strcpy(temp[i].person_num,"0");strcpy(temp[i].name,"0");strcpy(temp[i].password,"0");flag=true;}fwrite(&temp[i],sizeof(struct user),1,fp);}fclose(fp);free(temp);if(flag==false){printf("您输入的密码不正确或是余额不为零!\n");}elseprintf("储户注销成功!\n");}void save_money() 函数实现存款功能void save_money() //函数功能:存款{printf("%45s\n","***用户存款业务***");printf("--------------------------------------------------------------------------------\n\n");int count();void getpassword(char *password);FILE *fp;int i,num,mark;bool flag=false;struct user *temp;char password[6];num=count();temp=(struct user *)malloc(num*sizeof(struct user)); //根据记录数申请空间if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++) //将文件内容存入数组fread(&temp[i],sizeof(struct user),1,fp);fclose(fp);printf("输入要存款账号:"); //读取存款账号scanf("%d",&mark);if(i<mark||mark>num){printf("你要查询的账号不存在!");return;}printf("输入账号密码: ");scanf("%s",&password);if((fp=fopen(file,"wb"))==NULL) //写方式打开文件,覆盖原文件中的内容{printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++){if(temp[i].id==mark&&strcmp(temp[i].password,password)==0){double money=0;printf("输入要存入的金额:");scanf("%lf",&money);while(1){if(money<=0){printf("只能为正数!\n");money=0;printf("输入要存入的金额:");scanf("%lf",&money);}elsebreak;}temp[i].money +=money;flag=true;}fwrite(&temp[i],sizeof(struct user),1,fp); //修改该用户的信息}fclose(fp);free(temp);if(flag==false){printf("您输入的密码不正确!\n");}elseprintf("你存款业务已办妥!\n");}void get_money()函数实现取款功能void get_money() //函数功能:用户取款{printf("%45s\n","***用户取款业务***");printf("--------------------------------------------------------------------------------\n\n");int count();FILE *fp;int i,num,mark;char password[6];bool flag=false;struct user *temp;num=count(); //根据记录数申请空间temp=(struct user *)malloc(num*sizeof(struct user));if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++) //读取文件内容fread(&temp[i],sizeof(struct user),1,fp);fclose(fp);printf("输入要取款账号:");scanf("%d",&mark);if(i<mark||mark>num){printf("你要查询的账号不存在!");return;}printf("输入账号密码: ");scanf("%s",&password);if((fp=fopen(file,"wb"))==NULL) //写方式打开文件,覆盖原文件中的内容{printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++){if(temp[i].id==mark&&strcmp(temp[i].password,password)==0){double money=0;printf("输入要取出的金额:");scanf("%lf",&money);if(money<=0) //判断用户余额是否足够{printf("只能为正数!\n");money=0;}else if(money>temp[i].money){printf("你的余额不足!\n");money=0;}temp[i].money -=money;flag=true;}fwrite(&temp[i],sizeof(struct user),1,fp);}fclose(fp);free(temp);if(flag==false){printf("您输入的密码不正确!\n");}elseprintf("你取款业务已办妥!\n");}void print()函数用于显示菜单void print() //函数功能:输出界面{printf("%48s\n","***活期储蓄帐目管理系统***");printf("--------------------------------------------------------------------------------\n\n");printf("%8s,%-20s\n","1","新建储户");printf("%8s,%-20s\n","2","查询储户信息");printf("%8s,%-20s\n","3","显示所有储户信息");printf("%8s,%-20s\n","4","删除储户");printf("%8s,%-20s\n","5","存款");printf("%8s,%-20s\n","6","取款");printf("%8s,%-20s\n","7","退出");printf("\n请选择功能(1~7):");}void main()函数用于实现菜单中的功能,主函数void main(){char choose;do{print();scanf(" %c",&choose); //读取功能标号,根据标号选择不同的函数fflush(stdin);system("cls");switch(choose){case '1':add();break;case '2':select_id();break;case '3':display();break;case '4':del();break;case '5':save_money();break;case '6':get_money();break;case '7':exit(1);default:printf("对不起,你所选择的功能不存在!\n");}getch(); //暂停功能(读取任意键继续)(conio.h)system("cls"); //清除屏幕显示(stdlib.h)}while(1);}五调试分析系统运行主界面如图所示,各子功能测试运行结果如下:每个方面实现一个功能。

数据库系统原理课程设计--银行储蓄系统数据库设计

数据库系统原理课程设计--银行储蓄系统数据库设计

课程设计报告书课程名称:《数据库系统原理》课程设计题目:银行储蓄系统数据库设计系名:信息工程系专业班级:2012年 6 月 29日课程设计任务书设计题目:银行储蓄管理系统数据库设计初始条件:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。

结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。

要求完成的主要任务:要求学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的银行储蓄管理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设计、物理结构设计,数据录入及测试等,完成题目要求的功能。

主要任务:用户有以下需求:建立读者档案;建立图书档案,建立书目索引;完成日常图书检索、借还工作,对读者档案、图书档案、借还系统的访问,必需进行身份验证。

具体要求如下:1.存折信息数据包括:存折的基本信息包括:户名、帐号、开户银行名称、开户日期、取款密码等。

2.账户存取明细数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。

3.检索系统能根据户名、账号、交易日期、金额等进行查询。

4.取款输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。

5、存款输入账号和存款金额后,能更新该账号的余额。

6、转账输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。

设计报告撰写格式要求:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。

设计报告正文字数不少于0.2万字(不包括附录)第1级(章)题序和题名用黑体三号字,第2级(目)题序和题名用黑体小四号字,第3级(条)题序和题名用黑体小四号字,正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。

《数据结构课程设计》教学大纲

《数据结构课程设计》教学大纲

块的算法思路,相应流
程图的绘制。
要求学生在下周上课
前完成:
1、完成实验报告“算 投影
4 法说明”部分。下次上
计算机 课一开始就提交!
2、准备资料,开始编
写代码。
编写代码: 学生依自身情况,确定本周要完成哪
些模块的代码编写,以及测试。 四 注意:不要等到所有代码写完了,一
起测试,那样很难确定问题所在。应 局部调试通过,再逐渐加入,最终联 调。
5、凡照抄、照搬者,无论来自同学、图书、网上资源,一律视其严重程度扣分。 较严重者不及格,代码和设计报告雷同者记零分。
七、推荐教材和教学参考书
教材:
《数据结构教程(第 5 版)上机实验指导》李春葆,清华大学出版社,2017 年 8 月第 1 版.
《数据结构课程设计(第 2 版)》苏仕华.北京:机械工业出版社,2010.
完成了哪些部分,按贡献大小给出排名。 3、鼓励同学之间的讨论和相互启发,但也仅限于启发思路和解决局部疑难问题的
作用,绝不允许照抄、照搬同学的代码和设计报告。 4、参考资料包括各种图书,网上资源。课程设计离不开参考资料,但是对参考资
料的使用是在阅读理解的基础上加以借鉴,仅限于启发思路和解决局部疑难问题的作 用,绝不允许照抄、照搬的行为。
可得该部分满分的 80%
可得该部分满分的 10%
可得该部分满分的 10%
可得该部分满分的 60%
可得该部分满分的 25%
可得该部分满分的 15%
(三)参考资料的使用与抄袭行为的处罚
1、对于要求独立完成的题目必须独立完成。 2、对于难度或规模大的选题,可以在征得老师同意的情况下几个学生组成小组分 工合作完成,共同提交一份设计报告。设计报告中必须清楚的体现分工情况,注明各自

活期储蓄帐目管理数据结构(2023版)

活期储蓄帐目管理数据结构(2023版)

活期储蓄帐目管理数据结构活期储蓄帐目管理数据结构本文档描述了活期储蓄帐目管理系统的数据结构,旨在帮助开发人员了解系统的核心数据组织方式。

本文档详细描述了系统的各个数据模块及其属性,并提供了相应的示例。

⒈用户账户数据模块⑴属性:●用户ID:唯一标识用户的ID●用户姓名:用户的姓名●账户余额:账户中的储蓄金额⑵示例:●用户ID.1001用户姓名:张三账户余额.10000⒉交易记录数据模块⑴属性:●交易ID:唯一标识交易记录的ID●用户ID:发起交易的用户ID●交易时间:交易发生的时间●交易类型:交易的类型(存款、取款、转账等)●交易金额:交易的金额⑵示例:●交易ID.2001用户ID.1001交易时间.2022-01-01 10:00:00交易类型:存款交易金额.5000⒊费用记录数据模块⑴属性:●费用ID:唯一标识费用记录的ID●用户ID:产生费用的用户ID●费用时间:费用发生的时间●费用类型:费用的类型(手续费、利息等)●费用金额:费用的金额⑵示例:●费用ID.3001用户ID.1001费用时间.2022-02-01 10:00:00费用类型:利息费用金额.50附件:本文档不涉及附件。

法律名词及注释:●活期储蓄账户:一种无固定期限的存款账户,持有人可以随时存款、取款,并按照存款金额获得利息。

●数据结构:一种组织数据的方式,用于描述数据元素之间的关系和操作。

●属性:数据元素的特性或特征。

●用户ID:唯一标识用户的身份。

●交易ID:唯一标识一笔交易的身份。

●交易类型:描述交易的种类或性质,如存款、取款、转账等。

●费用ID:唯一标识一笔费用的身份。

●费用类型:描述费用的种类或性质,如手续费、利息等。

活期储蓄账目管理系统.doc

活期储蓄账目管理系统.doc

《数据结构》课程设计课程设计题目:活期存储账目管理系统姓名:院系: 计算机学院专业:计算机科学与技术年级: 11级学号:指导教师:2013 年 10月 12 日目录1 课程设计的目的 (1)2 需求分析 (1)3 课程设计报告内容 (1)3.1概要设计………………………………………………………1-23.2详细设计…………………………………………………… 2-103.3调试分析……………………………………………………10-123.4用户手册 (13)3.5测试结果 (13)3.6程序清单……………………………………………………13-244 小结 (24)5 参考文献……………………………………………………24-251 课程设计的目的设计活期储蓄帐目管理系统的要求:活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:①能比较迅速地找到储户的帐户,以实现存款、取款记账;②能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

设计这个活期账目管理系统可以方便银行人员进行管理和调试,从而也能提高我们的编程技能③熟练使用 C 语言编写程序,解决实际问题;了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2 需求分析(1)创建文件,用数组形式存储用户数据,开户时自定义用户账户、姓名、密码、开户金额。

(2)用户登录时,输入正确的用户姓名、用户密码,完成登录后即可进行存款、取款、查询、修改密码。

(也可以输入用户账号、用户密码)(3)实现输入用户的账户名和密码,将其全部信息删除,进行销户。

3 课程设计报告内容3.1概要设计在本课程设计的方案设计中,已经确定了用链表来作为数据的存储结构(也可以不用单链表),所以这里我没有采用单链表作为其存储结构,首先用结构体来定义其数据类型,然后将数据按照该数据结构存储,之后运用文件的相关知识将更改的数据写入文件中,这样就完成了本课程设计的方案设计。

银行储蓄账目管理系统课程设计报告课件

银行储蓄账目管理系统课程设计报告课件

面向对象课程设计报告活期储蓄帐目管理系统学生姓名:周林专业:信息工程班级:1132102学号:201130210214指导教师:阳红星2013年06月21日一.设计要求:活期储蓄处理中,储户开户、销户、存入、支出聚会频繁,系统设计条件:1)能较量迅速地找到储户的帐户,以呈现存款、取款记账;2)能较量简单,迅速地呈现插入和删除,以呈现开户和销户的需求。

二、需求与功能分析随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。

现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。

近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。

随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。

如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。

支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。

特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。

活期储蓄帐目管理数据结构

活期储蓄帐目管理数据结构

活期储蓄帐目管理数据结构(总17页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--洛阳理工学院课程设计报告课程名称数据结构课程设计设计题目活期储蓄帐目管理专业计算机科学与技术目录一、问题描述与基本要求 (1)1.1问题描述 (1)1.2基本要求 (1)二、数据结构的设计 (2)2.1数据结构的选择 (2)2.2单链表的定义 (2)2.3模块划分 (3)三、模块结构图 (4)四、程序流程图 (4)五、调试分析 (8)5.1程序错误修改及完善的过程 (8)5.2最终程序所有功能运行结果 (9)六、心得体会 (10)七、源程序清单 (11)一、问题描述与基本要求1.1问题描述活期储蓄处理中,储户开户、销户、存入、支出活动频繁。

设计一个活期储蓄账目管理系统。

1.2基本要求系统设计要求:1、能比较迅速地实现插入,以实现储户开户的功能,储户开户时需输入的信息包括储户姓名,密码。

2、能比较迅速地通过储户的账户序号和密码找到储户的账户,并删除该账户,以实现销户的功能。

3、能比较迅速地通过储户的账户序号和密码找到储户的账户(密码不对时,可选择是否重新输入密码)实现账户登录的功能。

登录成功后,再通过修改链表结点数据域中的对应元素,以实现存款、取款、显示余额等功能,若取款时账户余额不足,输出提示信息“取款失败!你账户上的金额不足!”,并显示账户当前余额,并且提示重新输入合适的取款金额。

4、查找活期储蓄帐目管理系统当前存在的储户,当输出活期储蓄帐目管理系统没有账户时,输出提示信息“活期储蓄帐目管理系统没有账户”,当有账户时,输出所有账户的相关信息,包括储户姓名,帐号,密码,账户余额。

二、数据结构的设计2.1数据结构的选择课程设计题目的要求是,要较简单迅速地实现开户、销户、存款、取款、输出用户信息的功能,于是我很自然地想到了可以用单链表的结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能,即可满足课程设计题目的要求。

(数据结构)活期储蓄账目管理 3

(数据结构)活期储蓄账目管理 3

课程设计课程名称:活期储蓄账目管理学院:计算机科学与技术专业:信息安全姓名:学号: 13080603年级:2013级1班任课教师:叶洁2015年 7 月日任务说明一. 课程设计题目活期储蓄账目管理。

(说明:能实现储蓄账户的开户、销户、存钱、取钱等功能)二. 课程设计需要达到的目的掌握线性表的存储方式、基本的排序算法、二分查找等查找算法。

三. 课程设计的主要内容以及要求1 、能比较迅速地找到储户的帐户,以实现存款、取款记账;2、能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

3、账户信息存入文件中(刚进入系统把文件中的信息导入内存,系统运行结束把内存中的信息存入文件)4、基本数据有:储蓄账户的姓名、账号、地址、联系电话以及存款的现有余额等等。

四. 参考文献《数据结构》五、任务分工陈谦:完成对函数void findLink()、bool searchLink()、int f_binarySearch()、void choice()的编写和相关流程图的完成。

任柏臻:完成对函数void insertLink()、void meauLink()的函数的编写以及其流程图的完成。

庞晓燕:完成对函数void deleteLink()、void tradeLink()的编写以及其流程图的完成。

彭海惠:完成对函数void modificationLink()、bool verifyPassword()的编写以及其流程图的完成。

饶荣发:完成总的设计,以及统计任务。

设计说明活期储蓄账户主要实现的功能有:开户、销户、查找、交易以及查询的功能,此外还有记账的功能。

用C语言实现以上功能,由顺序表来实现账户的增加、删除、查找。

(说明:选择顺序表是因为要实现二分法查找)注:下列只列出函数名以及其返回类型,实际使用中还有形参开户功能由函数:void insertLink()来实现;销户功能由函数:void deleteLink()来实现;查找功能由函数:bool searchLink()来实现;交易功能由函数:void tradeLink来实现;查询功能由函数:void findLink()来实现;验证密码功能由函数:bool verifyPassword()来实现;显示菜单功能由函数:int meauLink()来实现;修改用户信息功能由函数:void modificationLink()来实现;显示所有用户信息功能由函数:void displayLink()来实现;根据设计要求还提供以下功能:void choice()函数选择各个功能板块来实现其功能。

课程设计报告银行储蓄管理系统

课程设计报告银行储蓄管理系统

《数据结构》课程设计报告设计题目活期储蓄账目学院名称信息工程学院专业班级13计本1姓名学号0目录一、实验题目—活期储蓄账理-------------------------------二、问题描述-----------------------------------------------三、设计目标-----------------------------------------------四、需求分析-----------------------------------------------五、概要设计-----------------------------------------------1---系统流程图--------------------------------------2--各个模块功能的详细描-------------------------------六、详细设计-----------------------------------------------七、测试分析-----------------------------------------------八、使用说明-----------------------------------------------九、课程设计总结-------------------------------------------一活期储蓄账目管理二问题描述活期储蓄处理中,储蓄开户、销户、存款、取款活动频繁,系统设计要求:•能够比较迅速地找到储户的账户,以实现存款、取款记账;•能比较简单,迅速地插入和删除,以实现开户和销户的需要。

三设计目标编写一个程序,要求该程序可以实现储蓄开户,及储蓄销户。

同时,该程序具有在储蓄账户中实现存款、取款,查看该账户信息的功能。

四需求分析本演示程序用c语言编写,完成银行管理系统的生成,储户开户、销户、存入、支出。

数据结构课程设计之活期储蓄账目管理

数据结构课程设计之活期储蓄账目管理

##大学数据结构课程设计报告题目:活期储蓄账目管理院(系):计算机工程学院学生姓名:班级:学号:起迄日期: 2011.6.22--2011.6.29指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:本程序是对活期储蓄账目管理中开户、销户、存款、取款四个项目的编写。

系统设计要求:1)能比较迅速的找到储户的账户,以实现存款、取款记账;2)能比较简单,迅速的实现插入和删除,以实现开户和销户的需要。

2.基本功能本程序是为了实现四种功能:储户的开户、销户、存款和取款操作。

本程序功能模块实现的具体功能如下表:surface() 程序的界面显示CreatList_L()创建一个空链表Createacount()用户的开户操作search_user()用户的查找操作Savemoney()用户的存款操作draw_money()用户的取款操作sich_abmelden()用户的销户操作3.输入输出本程序在输入是需要用户输入的有用户的ID、用户密码、用户存款数目和用户取款数目,输出的是用户账户中的金额。

所有的输入输出数据都是整形。

其中用户ID和用户密码都为6位数,用户存取款数都为100的整数倍。

二、概要设计1.设计思路:本程序是实现用户开户、销户、存款和取款四种功能。

要求能够快速的找到用户账户,简单迅速的实现开户、销户操作。

主要采用线性链表的结构,运用链表的插入,删除,查找,读取等算法实现程序要求的功能。

2.数据结构设计:本程序采用的是线性链表结构,因为系统设计对程序的要求为能够迅速的找到用户账户,实现存取款操作,能简单迅速的实现开户和销户操作。

线性链表符合系统设计的要求。

通过头结点依次查找用户账户,从而实现存取款操作。

开户既创建新的结点记录用户信息并插入到链表中,而销户既将用户账户所在结点释放。

抽象数据类型线性表的定义如下:ADT List{数据对象:D={a i| a i∈ElemSet,i=1,2,3……,n,n≥0}数据关系:R1={<a i-1,a i>| a i-1,a i∈D,i=1,2,3,……,n}基本操作:CreatList_L(&L,&M)操作结果:创建以L为头结点,M为尾结点的空链表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:活期储蓄帐目管理活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:能比较迅速地找到储户的帐户,以实现存款、取款记账;并能实现排序能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

一、主函数main#include "文章编辑系统.h"#include "排序子系统.h"#include "活期帐目管理系统.h"#include <stdio.h>#include <string.h>#include <iostream>using namespace std;void main(){int choice;char ch;ch='y';while (ch=='y'||ch=='Y'){printf("\n\n\n\n\t\t 数据结构实验演示系统\n\n\n");printf("\t\t 主菜单");printf("\n\t\t**************************************");printf("\n\t\t* 1-------文章编辑系统*");printf("\n\t\t* 2-------排序子系统*");printf("\n\t\t* 3-------活期帐目管理系统*");printf("\n\t\t* 0-------退出*");printf("\n\t\t**************************************");printf("\n\n\t\t请选择菜单号(0--3):");scanf("%d",&choice);getchar();switch(choice){case 1: Article(); break;case 2: sort(); break;case 3: Banksystem();break;case 0: ch='n'; break;default:printf("菜单选择错误!请重新输入!");}}}二、文章编译系统#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<iostream>using namespace std;struct Node{char letter;Node *next;};void InitList(Node *L){ //输入以"*"结束的文章cout<<"\t\t\t输入一页文字(以*结束): "<<endl<<endl;while((L->letter = getchar()) != '*'){L->next = new Node;L = L->next;}L->next = NULL;cout<<"输入成功!";}void CountStr(Node *L){ //统计某一字符串在文章中出现次数int n = 0;char s[80], *q;Node *p;cout<<"\t\t\t输入一字符串: ";cin>>s;while(L->next){for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++)if (p->letter != *q) break;if (*q == '\0') n++;L = L->next;}cout<<"\t\t\t字符串"<<s<<" 出现"<<n<<" 次\n";}Node *DelStr(Node *L){//删除某一子串Node *H = L;char s[80], *q;Node *p;cout<<"\t输入该子串: ";cin>>s;if (H->letter == *s){for (p = H->next, q = s+1; *q != '\0' && p->next; p = p->next, q++)if (p->letter != *q) break;if (*q == '\0') H = p;}while(L->next){for (p = L->next, q = s; *q != '\0' && p->next; p = p->next, q++)if (p->letter != *q) break;if (*q == '\0') L->next = p;else L = L->next;}return H;}void print1(Node *L){ //分行输出用户输入的各行字符while(L->next){cout<<L->letter;L = L->next;}cout<<endl;}void print2(Node *L, int &p1, int &p2, int &p3, int &n){ //统计中英文字母和空格数以及整篇文章总字数n = p1 = p2 = p3 = 0;for( ; L->next; L = L->next, n++)if(isalpha(L->letter)) p1++;else if(isdigit(L->letter)) p2++;else if(L->letter == ' ') p3++;else if(L->letter == '\n') n--;cout<<"\n\t\t\t全部字母数: "<<p1;cout<<"\n\t\t\t数字个数: "<<p2;cout<<"\n\t\t\t空格个数: "<<p3;cout<<"\n\t\t\t文章总字数: "<<n<<endl;}void Article(){system("cls");Node *L = new Node;int p1, p2, p3, n;char choice,ch;;do{printf("\n\n\n\t\t\t======== 文章编辑系统==========\n" );printf("\t\t\t* 1:输入文章* \n" );printf("\t\t\t* 2:统计编辑* \n" );printf("\t\t\t* 3:显示文章* \n" );printf("\t\t\t* 0:返回* \n" );printf("\t\t\t******************************** \n" );printf("\t\t请输入文章编辑系统菜单号:");cin>>choice;switch(choice){case '1':InitList(L);break;case '2':{printf("\t\t\t 1:统计中英文字母和空格数以及整篇文章总字数\n" );printf("\t\t\t 2:统计某一字符串在文章中出现次数\n" );printf("\t\t\t 3:删除某一子串\n" );printf("\t\t\t 0:返回\n" );do{printf("\t\t选择文章编辑操作:");cin>>ch;switch(ch){case '1': print2(L, p1, p2, p3, n);break;case '2': CountStr(L) ;break;case '3': DelStr(L) ;break;case '0': ch='0' ;break;default :printf("\t\t输入错误!请重新输入!\n" );break;}}while(ch!='0');break;}case '3':print1(L); break;case '0':choice=0 ; break;default :printf("\t\t输入错误!请重新输入!\n" );break;}}while(choice);}三、排序子系统#include<stdio.h>#include<stdlib.h>#include<math.h>#define L 8#define FALSE 0#define TURE 1typedef struct{int key;char otherinfo;}RecType;typedef RecType Seqlist[L+1];int num;Seqlist R;void Insertsort();void Bubblesort();void QuickSort(int low, int high);void Shellsort();void Selectsort();void Mergesort();int Partition(int i,int j);void Heap();void sort(){system("cls");Seqlist S;int i,k;char ch1,ch2,q;printf("\n\t请输入%d个待排序数据(按回车分隔):\n\t",L);for(i=1;i<=L;i++){scanf("%d",&S[i].key);getchar();printf("\t");}printf("\n\t排序数据已经输入完毕!");ch1='y';while(ch1=='y'||ch1=='Y'){printf("\n");printf("\n\t\t 排序子系统");printf("\n\t\t*************************************");printf("\n\t\t* 1----更新排序数据*");printf("\n\t\t* 2----直接插入排序*");printf("\n\t\t* 3----希尔排序*");printf("\n\t\t* 4----冒泡排序*");printf("\n\t\t* 5----快速排序*");printf("\n\t\t* 6----选择排序*");printf("\n\t\t* 7----归并排序*");printf("\n\t\t* 8----堆排序*");printf("\n\t\t* 0----返回*");printf("\n\t\t*************************************");printf("\n\t\t 请选择菜单号(0--8):");scanf("%c",&ch2);getchar();for(i=1;i<=L;i++)R[i].key=S[i].key;switch(ch2){case '1':printf("\n\t\t请输入&d 个待排序的数据(按回车分隔):\n\t",L);for(i=1;i<=L;i++){scanf("%d",&S[i].key);getchar();printf("\t");}printf("\n\t排序数据已经输入完毕!");break;case'2':Insertsort();break;case'3':Shellsort();break;case'4':Bubblesort();break;case'5':printf("\n\t原始数据为(按回车开始排序):");for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");num=0;QuickSort(1,L);printf("\n\t排序的最终结果是: ");for (k=1;k<=L;k++)printf("%5d",R[k].key);printf("\n");break;case'6':Selectsort();break;case'7':Mergesort();break;case'8':Heap();break;case'0':ch1='n';break;default:printf("\n\t输入出错!");}if(ch2!='0'){if(ch2=='2'||ch2=='3'||ch2=='4'||ch2=='5'||ch2=='6'||ch2=='7'||ch2=='8')printf("\n\t排序输出完毕!");printf("\n\n\t按回车键返回.");q=getchar();if(q!='\xA'){getchar();ch1='n';}}}}void Insertsort(){int i,j,k,m=0;printf("\n\t原始数据为(按回车开始排序):");for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");for(i=2;i<=L;i++){if(R[i].key<R[i-1].key){R[0]=R[i];j=i-1;while(R[0].key<R[j].key){R[j+1]=R[j];j--;}R[j+1]=R[0];}m++;printf("\t第%d趟排序结构为(按回车继续):",m);for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");}printf("\n\t排序的最终结果是:");for(i=1;i<=L;i++)printf("%5d",R[i].key);printf("\n");}void Shellsort(){int i,j,gap,x,m=0,k;printf("\n\t原始数据为(按回车开始排序): ");for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");gap=L/2;while(gap>0){for(i=gap+1;i<=L;i++){j=i-gap;while(j>0){if(R[j].key>R[j+gap].key){x=R[j].key;R[j].key=R[j+gap].key;R[j+gap].key=x;j=j-gap;}elsej=0;}}gap=gap/2;m++;printf("\t第%d趟排序结果为(按回车继续):",m);for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");}printf("\n\t排序的最终结果是: ");for(k=1;k<=L;k++)printf("%5d",R[k].key);printf("\n");}void Bubblesort(){int i,j,k;int exchange;printf("\n\t原始数据为(按回车开始排序:");for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");for(i=1;i<L;i++){exchange=FALSE;for(j=L;j>=i+1;j--)if(R[j].key<R[j-1].key){R[0].key=R[j].key;R[j].key=R[j-1].key;R[j-1].key=R[0].key;exchange=TURE;}if(exchange){printf("\t第%d趟排序结果为(按回车继续:",i);for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");}}printf("\n\t排序的最终结果是:");for(i=1;i<=L;i++)printf("%5d",R[i].key);printf("\n");}int Partition(int i, int j){RecType pirot=R[i];while(i<j){while(i<j&&R[j].key>=pirot.key)j--;if(i<j)R[i++]=R[j];while(i<j&&R[i].key<=pirot.key)i++;if(i<j)R[j--]=R[i];}R[i]=pirot;return i;}void QuickSort(int low,int high){int pirotpos,k;if(low<high){pirotpos=Partition(low,high);num++;printf("\t第%d趟排序结果为(按回车继续): ",num);for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");QuickSort(low,pirotpos-1);QuickSort(pirotpos+1,high);}}void Selectsort(){int i,j,k,h;printf("\n\t原始数据为(按回车继续:");for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");for(i=1;i<L;i++){h=i;for(j=i+1;j<=L;j++)if(R[j].key<R[h].key)h=j;if(h!=j){R[0]=R[i];R[i]=R[h];R[h]=R[0];}printf("\t第%d趟排序结果为(安回车继续):",i);for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");}printf("\n\t排序的最终结果是:");for(i=1;i<=L;i++)printf("%5d",R[i].key);printf("\n");}void Merge(int low,int mm,int high){int i=low,j=mm+1,p=0;RecType *R1;R1=new RecType[high-low+1];if(!R1)printf("\n\t内存容量不够!");while(i<=mm&&j<=high)R1[p++]=(R[i].key<=R[j].key)?R[i++]:R[j++];while(i<=mm)R1[p++]=R[i++];while(j<=high)R1[p++]=R[j++];for(p=0,i=low;i<=high;p++,i++)R[i]=R1[p];}void MergePass(int length){int i;for(i=1;i+2*length-1<=L;i=i+2*length)Merge(i,i+length-1,i+2*length-1);if(i+length-1<L)Merge(i,i+length-1,L);}void Mergesort(){printf("\n\t原始数据为(按回车键开始排序):");for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");for(length=1;length<L;length*=2){MergePass(length);m++;printf("\t第%d趟排序结果为(按回车继续): ",m);for(k=1;k<=L;k++)printf("%5d",R[k].key);getchar();printf("\n");}printf("\n\t排序的最终结果是: ");for(k=1;k<=L;k++)printf("%5d",R[k].key);printf("\n");}void CreateHeap(int root,int index) //堆栈{int j,temp,finish;j=2*root;temp=R[root].key;finish=0; //初始化堆未建立完成while(j<=index && finish==0){if(j<index) //找最大的子节点if(R[j].key<R[j+1].key)j++;if(temp>=R[j].key)finish=1; //堆建立完成else{R[j/2].key=R[j].key;j=j*2;}}R[j/2].key=temp; //父节点=root值}void HeapSort() //堆排序{for(i=(L/2);i>=1;i--) //键二叉树转换成堆CreateHeap(i,L); //调用建堆函数for(i=L-1,k=1;i>=1;i--,k++){temp=R[i+1].key; //堆的root值和最后一个值交换R[i+1].key=R[1].key;R[1].key=temp;CreateHeap(1,i);printf("\t第%d趟排序结果为(按回车继续):",k);for(j=1;j<=L;j++)printf("%5d",R[j].key);getchar();printf("\n");}}void Heap(){int i;printf("\n\t原始数据为(按回车开始排序):");for(i=1;i<=L;i++)printf("%5d",R[i].key);printf("\n\t");getchar();HeapSort();printf("\n\t排序的最终结果是:");for(i=1;i<=L;i++)printf("%5d",R[i].key);printf("\n");}四、活期账目管理系统#include<iostream>#include <string>#include<stdlib.h>#include<fstream>using namespace std;class consumer;class YH{public:YH();void set_account();//银行开户void del_account();void transfer(int); //转账void enter_account();void addmoney(int,float);void exitYH();// 退出系统void functionshow();// 功能界面void save();void load();protected:consumer *account[20];//账户数static int acnum;};int YH::acnum=0;YH::YH(){for(int i=0;i<20;i++){account[i] = NULL;}}class consumer:public YH{public:friend class YH;consumer(int id,string Name,string PassWord,float m) {ID=id;name=Name;money=m;passwd=PassWord;}consumer(){ID=0;name='0';money=0;passwd='0';}int get_id(){return ID;}void savemoney();// 取钱string get_passwd() // 取得密码{return passwd;}void display();void fetchmoney(); //取钱void change_passwd();void add_money(float);void dec_money(float);float get_money();private:int ID; //开户帐号string passwd; // 用户密码string name; // 用户姓名float money;};void YH::save(){ofstream ofile("bankdat.dat",ios::out);ofstream outfile("bankdat.dat",ios::out);int n=0;outfile<<acnum<<" ";for(;n<acnum;n++){outfile<<account[n]->ID<<" ";outfile<<account[n]->money<<" ";outfile<<account[n]->name<<" ";outfile<<account[n]->passwd<<" ";}outfile.close();}void YH::load(){ifstream infile("bankdat.dat",ios::in);if(!infile){cerr<<"读取错误,无资料!"<<endl;return;}int n=0;int id,m;string nam,passw;infile>>acnum;for(;n<acnum;n++){infile>>id;infile>>m;infile>>nam;infile>>passw;account[n]->passwd;consumer * acc = new consumer(id,nam,passw,m);account[n] = acc;}infile.close();cout<<"读取资料正常!"<<endl;}void YH::transfer(int x){int id;cout<<"请输入帐号:";cin>>id;int flag = 1;int i = 0;while((i<acnum)&&(flag)){if(id==account[i]->get_id()) flag = 0; else i++;}if(flag){cout<<"帐号不存在!"<<endl<<endl;return ;}float b;cout<<endl<<"请输入你要转帐的金额:";cin>>b;while(b<=0){cout<<"请输入正确的数字!"<<endl;cout<<"$";cin>>b;}if(account[x]->get_money()<b)cout<<"对不起,金额不够!!"<<endl;else{account[x]->dec_money(b);account[i]->add_money(b);}return;}void consumer::add_money(float x){money=x+money;}void consumer::dec_money(float x){money=money-x;}void YH::addmoney(int x,float y){account[x]->money=account[x]->money-y;}float consumer::get_money(){return money;}void YH::functionshow(){int n;int z=1;do{system("cls");cout<<"\t\t**************银行管理系统*******"<<endl;//cout<<"\t\t 1.用户开户"<<endl;cout<<"\t\t 2.账户登陆"<<endl;cout<<"\t\t 3.帐户注销"<<endl;cout<<"\t\t 0.退出系统"<<endl;cout<<"\t\t*********************************"<<endl;load();cout<<endl<<"\t\t请你输入相应的操作序号进行操作:";cin>>n;if(n<0||n>3){cout<<"\t\t请输入正确的操作序号!"<<endl;cout<<"$ >";cin>>n;}switch(n){case 1: set_account() ;break;case 2:enter_account() ;break;case 3: del_account() ;break;case 0: exitYH();z=0 ;break;cin.get();}while(z);}void YH::enter_account(){int id;cout<<"\t\t请输入帐号:";cin>>id;int flag = 1;int i = 0; //while((i<acnum)&&(flag)){if(id==account[i]->get_id()) flag = 0; else i++;}if(flag){cout<<"\t\t帐号不存在!"<<endl<<endl;cin.get();return;}cout<<"\t\t请输入密码:";string passw;cin>>passw;if(passw!=account[i]->get_passwd()) return;account[i]->display();cin.get();cin.get();int n;do{system("cls");cout<<"\t\t请选择你要进行的操作:"<<endl<<"\t\t1)查看信息"<<endl<<"\t\t2)取款"<<endl<<"\t\t3)存款"<<endl<<"\t\t4)修改密码"<<endl<<"\t\t5)转账"<<endl<<"\t\t6)返回"<<endl;cin>>n;switch(n){case 1: account[i]->display();break;case 2: account[i]->fetchmoney();save();break;case 3:account[i]->savemoney();save();break;case 4:account[i]->change_passwd();save();break;case 5:transfer(i);save();break;case 6:return;cin.get();cin.get();}while(1);}void YH::set_account(){int id;string nam;string passw;float m;cout<<endl<<"\t\t请输入开户号:";cin>>id;cout<<endl<<"\t\t请输入开户人姓名:";cin>>nam;cout<<endl<<"\t\t请输入开户密码:";cin>>passw;cout<<endl<<"\t\t请输入存入金额:";cin>>m;while(m<=0){cout<<"\t\t请输入正确的数字!"<<endl;cin>>m;}consumer * acc = new consumer(id,nam,passw,m);account[acnum] = acc;cout<<"\t\t开户成功!!"<<endl<<endl;acnum++;save();cin.get();return;}void YH::del_account(){int id;cout<<endl<<"\t\t请输入你要注销的帐户号:";cin>>id;int flag = 1;int i = 0;while((i<acnum)&&(flag)){if(id == account[i]->get_id())flag = 0;elsei++;}if(flag){cout<<"\t\t帐号不存在!"<<endl<<endl;return;}cout<<"\t\t请输入密码:";string passw;cin>>passw;if(passw!=account[i]->get_passwd()) return;for(int j=i;j<acnum;j++){account[j] = account[j+1];}account[acnum-1]=NULL;acnum--;cout<<"\t\t注销成功!!"<<endl<<endl;save();cin.get();return;}void consumer::change_passwd(){string pwd,repwd;cout<<"\t\t请输入新密码:";cin>>pwd;cout<<"\t\t请再输入一次新密码:";cin>>repwd;if(pwd!=repwd)cout<<"\t\t你输入的两次密码不一样,请重新输入!"<<endl;passwd=pwd;cout<<"\t\t密码修改成功,请牢记!"<<endl;cin.get();}void consumer::fetchmoney(){float m;char ch;do{cout<<endl<<"\t\t你要取多少钱:"<<"$"<<endl ;cin>>m;while(m<=0){cout<<"\t\t请输入正确的数字!"<<endl;cout<<"$";cin>>m;}if(money<m){cout<<"\t\t对不起,你的余额不足!"<<endl;}else{money=money-m;cout<<endl<<"\t\t操作成功,请收好钱!"<<endl;}cout<<"\t\t是否要继续该项操作:(Y/N) "<<endl;cout<<"$ >";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){cout<<"$ >";cin>>ch;}}while(ch=='y'||ch=='Y');}void consumer::savemoney(){float c;char ch;do{cout<<endl<<"\t\t你要存多少钱:"<<"$"<<endl ;cin>>c;while(c<=0){cout<<"\t\t请输入正确的数字!"<<endl;cout<<"$";cin>>c;}money=money+c;cout<<"\t\t操作已成功!"<<endl;cout<<"\t\t是否要继续该项操作:(Y/N) "<<endl;cout<<"$ >";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){cout<<"$ >";cin>>ch;}}while(ch=='y'||ch=='Y');}void consumer::display(){system("cls");cout<<"\t\t**********************************"<<endl;cout<<"\t\t*"<<endl;cout<<"\t\t*用户姓名:"<<name<<endl;cout<<"\t\t*帐号:"<<ID<<endl;cout<<"\t\t*余额:"<<money<<endl;cout<<"\t\t**********************************"<<endl;cout<<"\t\t请按任意键继续.....";}void YH::exitYH(){cout<<endl<<"\t\t感谢你对本银行储蓄管理系统的支持,欢迎下次光临!"<<endl; }void Banksystem(){YH yh;yh.functionshow();}。

相关文档
最新文档