活期储蓄帐目管理

合集下载

活期储蓄账目管理

活期储蓄账目管理

数据结构课程设计题目: 活期储蓄账目管理学院:班级:学生姓名:学生学号:指导教师:2013年 11 月 27 日课程设计任务书目录摘要.................................... 错误!未定义书签。

1 题目分析............................. 错误!未定义书签。

2 概要设计 (2)3 详细设计 (2)4 调试设计 (5)5 用户使用说明 (6)6 测试结果 (6)7 结论体会 (8)8 参考文献 (8)9 源程序 (9)摘要随着计算机的普及,现代人越来越多的想到用计算机来代替许多人做的事情。

从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。

随着信息技术的飞速发展,大量信息需要传输,传输信息就要先经过编码,然后再译码,可见编码技术的提高对整个信息产业有着举足轻重的作用。

而计算机主要是通过程序来实现各种事情的,再者程序也必须通过各种算法才能达到存储各种数据,所以数据结构这门课程就应运而生。

本课程设计主要是用数据结构编写关于活期储蓄账目管理的算法,来达到活期储蓄账目管理的目的。

关键词:编码存储活期储存账目管理错误!未定义书签。

1 题目分析活期储蓄管理系统用户通过该系统可以进行存款、取款、销户等业务。

该系统在金融业给人民带来了很大的方便,系统开发成功后,一旦应用于银行领域,会给管理员与用户带来很大的方便,其主要作用具体如下:1)、可以代替营业员进行许多繁杂的手动操作。

2)、给用户带来了很大的方便。

3)、可以节省许多人力资源。

4)、可以提高人们的工作效率。

活期储蓄账目管理系统主要是由于在活期储蓄处理中,储户开户、销户、存入、支出活动频繁,为实现储户的各种操作而设计的,本课程设计的主要功能包括实现储户开户、销户、存入、支出等活动,为了能比较迅速找到账户,实现这样的几个功能,就要通过链表来存储数据结构,其结构则按照C语言的相关知识定义结构体,其中储户开户、销户就是实现链表的插入与删除,而存入、支出等活动则是实现链表中结点的查找,然后进行更改。

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

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

活期储蓄帐目管理数据结构在当今的金融领域,活期储蓄是一种常见且重要的储蓄方式。

对于金融机构而言,有效地管理活期储蓄帐目至关重要,而这其中,数据结构的选择和运用起着关键作用。

首先,我们来了解一下活期储蓄帐目管理所涉及的基本元素。

客户的个人信息,如姓名、身份证号码等,是识别和区分不同账户的重要依据。

账户信息则包括账号、开户日期、账户状态(如正常、冻结等)。

交易记录则涵盖了存款、取款、转账、利息计算等各种操作的详细信息,包括交易时间、交易类型、交易金额等。

为了有效地管理这些数据,一种常见的数据结构是链表。

链表的优点在于它能够灵活地进行插入和删除操作。

在活期储蓄帐目管理中,当有新的交易发生时,可以方便地将新的交易记录添加到链表中。

而且,如果某个账户被注销或出现异常需要删除相关数据,也能相对容易地从链表中移除。

然而,链表也存在一些不足之处。

比如,在查找特定元素时,其效率相对较低。

为了提高查找效率,我们可以结合使用哈希表。

通过对关键信息(如账号)进行哈希运算,可以快速定位到相应的账户数据。

另一种常用的数据结构是二叉搜索树。

它具有有序性的特点,使得在查找、插入和删除操作上都能保持相对较高的效率。

在活期储蓄帐目管理中,可以根据账户的某些关键属性(如账户余额)构建二叉搜索树,以便快速获取特定范围内的账户信息。

除了上述数据结构,数组也有其应用场景。

例如,在存储固定长度的客户信息时,数组可以提供快速的随机访问。

但数组的缺点是插入和删除操作的效率较低,因为可能需要移动大量元素。

在实际的活期储蓄帐目管理系统中,往往不会仅仅依赖于一种数据结构,而是根据不同的需求和场景,综合运用多种数据结构。

比如,使用链表来存储交易记录,用哈希表快速查找账户信息,用二叉搜索树来管理按照特定规则排序的账户数据。

为了保证数据的准确性和完整性,还需要考虑数据的备份和恢复机制。

定期对数据进行备份,可以防止因意外情况(如系统故障、数据损坏等)导致的数据丢失。

活期账目储蓄管理

活期账目储蓄管理

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

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

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

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

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

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

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

关键词:算法数据结构管理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 删除数据在链表中删除指定节点的账目数据是另一个常见的操作。

活储管理制度

活储管理制度

活储管理制度一、活期储蓄管理制度的作用活期储蓄管理制度的建立可以有效地解决人们在使用活期储蓄账户时遇到的一些问题。

同时,活期储蓄管理制度还可以规范人们在活期储蓄账户上的操作,提高账户的管理效率,增强账户的安全性,保护账户资金的安全,提高人们使用活期储蓄账户的信心。

二、活期储蓄管理制度的内容活期储蓄管理制度的内容主要包括账户开立、存款、取款、利息计算与发放等方面的规定。

1.账户开立在开立活期储蓄账户时,银行应对客户提供的身份证、户口簿等证件进行认真审查,并加强对客户的了解,确保客户的身份真实性。

同时,银行应向开户客户宣传活期储蓄账户的特点和利息政策,告知客户关于账户的存取款方式。

2.存款客户可以通过柜台、自动柜员机、网上银行等渠道进行存款。

为了防止恶意存款和资金洗钱等行为,银行应限制现金存款的金额,并加强现金存款的审核程序。

对于存款的取款账户,银行应对账户信息进行核实,确保取款是合法、合规的。

3.取款客户可以通过柜台、自动柜员机、网上银行等渠道进行取款。

在取款时,银行应对客户的身份信息进行核实,确保取款是客户本人的行为。

对于大额取款,银行应加强审核程序,确保取款的合法性。

4.利息计算与发放银行应根据客户的存款金额、存款期限等因素进行利息计算,并按时发放利息。

对于利息的计算和发放,银行应保证计算准确、发放及时。

三、活期储蓄管理制度的实施活期储蓄管理制度的实施需要各相关部门的密切合作,包括银行、监管部门等。

银行应加强对活期储蓄账户的监管和管理,加强风险防范措施,提高账户的安全性。

监管部门应加强对银行的监管,确保银行遵守相关法规,提高监管水平,保护客户的权益。

四、活期储蓄管理制度的优势建立一个完善的活期储蓄管理制度可以有效地解决人们在使用活期储蓄账户时遇到的问题,提高账户的管理效率,增强账户的安全性,保护账户资金的安全,提高人们使用活期储蓄账户的信心。

同时,完善的活期储蓄管理制度可以提高银行业对客户的服务水平,提高客户的满意度,促进经济的发展。

银行活期储蓄帐目管理系统

银行活期储蓄帐目管理系统

一、需求分析:设计一个银行活期储蓄帐目管理系统(每个记录有下列数据项:账户号码、用户名、身份证号、地址等)。

(1) 能比较迅速地找到储户的帐户,以实现存款、取款记账。

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

(3) 符合课题要求,实现相应功能;(4) 要求界面友好美观,操作方便易行;(5) 注意程序的实用性、安全性。

所使用的函数:函数: 功能如下:void mainmenu(); 输出主菜单void add(); 添加用户资料void select_name(); 按姓名查询余额void select_id(); 按账号查询余额void display(); 显示用户资料void save_money(); 用户存款void get_money(); 用户取款void delete(); 销户二、概要设计:1、所使用的存储结构是:struct user{int id;char name[20];char person_num[19];double money;}2、其流程图如下:三、详细设计:1. void add() //添加用户资料{printf("%30s\n","***添加用户***");printf("---------------------------------------------\n\n");struct user getuser();int count(); //函数目的:计算文件中的记录数目以生成自动账号FILE *fp;int number;struct user temp;if((fp=fopen(file,"ab"))==NULL){printf("不能打开文件!\n");exit(1);}temp=getuser(); //读取用户名number=count();temp.id=number+1; //生成自动账号fwrite(&temp,sizeof(struct user),1,fp);printf("添加用户成功!\n");fclose(fp);}2. int count() //函数目的:计算文件中的记录总数{FILE *fp;int num;struct user temp;num=0;if((fp=fopen(file,"rb"))==NULL){printf("不能打开文件!\n");exit(1);}while(fread(&temp,sizeof(struct user),1,fp)){num++;}fclose(fp);return num;}3. void getname(char *name) //读取用户姓名(字符数<20){do{scanf("%s",name);fflush(stdin);if(strlen(name)==0)printf("姓名不能为空!\n");elseif(strlen(name)>=20)printf("姓名不能超过20个字符!\n");elsebreak;printf("请重新输入姓名: ");}while(1); //循环以保证读入数据有效}void getperson_num(char *person_num) //函数功能:读取用户身份证号码(15位或者 18位 ){do{int i,mark;char ch;for(i=0,mark=0;;i++) //输入有效性判断(只能是数字)if((ch=getchar())!='\n'){if(ch<='9'&&ch>='0')person_num[i]=ch;else{printf("身份证号码只能是数字!\n");mark=1;break;}}elsebreak;person_num[i]='\0';if(mark==1)continue;if(strlen(person_num)!=15&&strlen(person_num)!=18) printf("身份证号码只能是15位,或者18位!\n");elsebreak;printf("重新输入身份证号码: ");}while(1); //循环以保证读入数据有效}4. void select_name() //按照姓名查询账户余额{void getname(char *name);printf("%30s\n","***按照姓名查询账户余额***");printf("%8s %15s %15s %10s\n","账号","用户姓名","身份证号码","存款余额");printf("---------------------------------------------\n\n");FILE * fp;struct user temp;char name[20];if((fp=fopen(file,"rb"))==NULL){printf("不能打开文件!\n");exit(1);}printf("请输入要查询的姓名:"); //调用读取用户名函数getname(name);while(fread(&temp,sizeof(struct user),1,fp)) //循环读取每一条记录判断是否为要查看的记录if(strcmp(,name)==0){printf("NO.%d %15s %15s %.2f\n",temp.id,,temp.person_num,temp.mone y);}fclose(fp);}5. void select_id() //按照账号查询账户余额{int count();printf("%30s\n","***按照编号查询账户余额***");printf("%8s %15s %15s %10s\n","编号","用户姓名","身份证号码","存款余额");printf("---------------------------------------------\n\n");FILE * fp;struct user temp;int i,maxnum;if((fp=fopen(file,"rb"))==NULL){printf("cannot open file!\n");exit(1);}maxnum=count();printf("输入要查询账号:"); //判断账号是否在记录中scanf("%d",&i);if(i<1||i>maxnum){printf("你要查询的账号不存在!");return;}while(fread(&temp,sizeof(struct user),1,fp))//循环读取每一条记录判断是否为要查看的记录if(temp.id==i){printf("NO.%d %15s %15s %.2f\n",temp.id,,temp.person_num,temp.mone y);}fclose(fp);}6. void display() //显示用户资料{printf("%30s\n","***用户资料显示***");printf("%8s %15s %15s %10s\n","账号","用户姓名","身份证号码","存款余额");printf("---------------------------------------------\n\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 %15s %15s %.2f\n",temp.id,,temp.person_num,temp.mone y);}fclose(fp);}7.void save_money() //函数功能:按账号存款{printf("%30s\n","***用户存款业务***");printf("---------------------------------------------\n\n");int count();FILE *fp;int i,num,mark;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(mark<1||mark>num){printf("你要存款账号不存在!");return;}if((fp=fopen(file,"wb"))==NULL) //写方式打开文件,覆盖原文件中的内容{printf("cannot open file!\n");exit(1);}for(i=0;i<num;i++){if(temp[i].id==mark){double money=0;printf("输入要存入的金额:");scanf("%lf",&money);if(money<=0){printf("金额只能为正数!\n");money=0;}temp[i].money +=money; //修改该用户的信息}fwrite(&temp[i],sizeof(struct user),1,fp);}fclose(fp);free(temp);printf("你存款业务已办妥!\n");}8.void get_money() //函数功能:用户取款{printf("%30s\n","***用户取款业务***");printf("---------------------------------------------\n\n");int count();FILE *fp;int i,num,mark;struct user *temp;num=count(); //根据记录数申请空间temp=(struct user *)malloc(num*sizeof(struct user));if((fp=fopen(file,"rb"))==NULL){printf("不能打开文件!\n");exit(1);}for(i=0;i<num;i++) //读取文件内容fread(&temp[i],sizeof(struct user),1,fp);fclose(fp);printf("输入要取款账号:");scanf("%d",&mark);if(mark<1||mark>num){printf("你要取款账号不存在!");return;}if((fp=fopen(file,"wb"))==NULL){printf("不能打开文件!\n");exit(1);}for(i=0;i<num;i++) //写方式打开文件,覆盖原文件中的内容{if(temp[i].id==mark){double money=0;printf("输入要取出的金额:");scanf("%lf",&money);if(money<=0) //判断用户余额是否足够{printf("只能为正数!\n");money=0;}elseif(money>temp[i].money){printf("你的余额不足!\n");money=0;}temp[i].money -=money;}fwrite(&temp[i],sizeof(struct user),1,fp);}fclose(fp);free(temp);printf("你取款业务已办妥!\n");}9.void del() //销户{int count();printf("%30s\n","***注销账户***");printf("%8s %15s %15s %10s\n","账号","用户姓名","身份证号码","存款余额");printf("---------------------------------------------\n\n");FILE * fp;struct user temp;int i,maxnum;if((fp=fopen(file,"rb"))==NULL){printf("不能打开文件!\n");exit(1);}maxnum=count();printf("输入要销户账号:"); //判断编号是否在记录中scanf("%d",&i);if(i<1||i>maxnum){printf("你要查询的账号不存在!");return;}while(fread(&temp,sizeof(struct user),1,fp))//循环读取每一条记录判断是否为要查看的记录if(temp.id==i&&temp.money==0.00)//余额为0{temp.id=-1;//算无效帐户printf("NO.%d %15s %15s %.2f\n",temp.id,,temp.person_num,temp.mone y);//printf("%d\n",temp.id);fwrite(&temp,sizeof(struct user),1,fp);//保存修改}fclose(fp);}10void mainmenu() //函数功能:输出界面{printf("%30s\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("%8s,%-20s\n","** 8","退出**");printf("\n请选择功能(1~8):");}四、调试分析:将软件进行初始化,即在VC++6.0中运行该程序,进入程序主菜单。

活期储蓄帐目管理数据结构[1]简版

活期储蓄帐目管理数据结构[1]简版

活期储蓄帐目管理数据结构活期储蓄帐目管理数据结构简介活期储蓄帐目管理是一项常见的任务,尤其是对于个人或家庭来说。

储蓄帐目管理可以帮助人们追踪他们的存款、支出和余额,以便更好地控制财务状况。

为了有效地管理这些帐目,使用数据结构来组织和存储数据是非常重要的。

在本文档中,我们将介绍一种适用于活期储蓄帐目管理的数据结构,该数据结构使用简单且高效的方式存储和操作帐目数据。

我们将首先讨论活期储蓄帐目的结构,然后介绍数据结构的设计以及相应的操作。

活期储蓄帐目结构活期储蓄帐目通常包含以下字段:- 日期:存储帐目发生的日期和时间信息。

- 类别:存储帐目的类型,如存款或支出。

- 金额:存储帐目的金额。

- :可选字段,用于存储关于帐目的额外信息。

这些字段共同组成了一个完整的帐目条目,在数据结构中,我们可以使用一个对象或者一个记录来表示一个帐目条目。

数据结构设计为了有效地管理帐目数据,我们可以选择使用线性表作为底层数据结构。

线性表可以是数组或链表,具体取决于实际的需求。

对于活期储蓄帐目管理,我们可以使用一个动态数组来存储所有的帐目条目。

动态数组可以根据需要自动扩展或收缩,以适应不同数量的帐目。

```markdownstruct AccountEntry {Date date;string category;double amount;string note;}class AccountManager {vector<AccountEntry> entries;// 实现其他的操作方法```上述代码展示了一个包含帐目条目的动态数组的数据结构设计。

每个帐目条目使用一个结构体(`AccountEntry`)来表示,而整个帐目管理系统使用一个类(`AccountManager`)来封装帐目条目的操作方法。

数据结构操作下面是一些常见的数据结构操作,让我们逐一介绍。

添加帐目为了向帐目管理系统中添加新的帐目,我们可以实现一个`addEntry()`方法。

活期账目储蓄管理

活期账目储蓄管理

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

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

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

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

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

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

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

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

洛阳理工学院课程设计报告课程名称数据结构课程设计设计题目活期储蓄帐目管理课程设计任务书设计题目:活期储蓄帐目管理_________________________________________________________ 设计内容与要求:【问题描述】活期储蓄处理中,储户开户、销户、存入、支出活动频繁。

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

【基本要求】1) 能比较迅速地找到储户的帐户,以实现存款、取款记账;2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

课程设计评语成绩:指导教师:_______________年月日(1)问题描述:活期储蓄处理中,储户开户、销户、存入、支出活动频繁。

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

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

(3)测试数据:(4)算法思想:1主要思想12开户3查询(5)模块划分:01)void InsertList(LINK *&L) //链表插入实现开户功能02)void Search(LINK *L) //链表查找,实现用户登陆功能03)void Deposit(LINK *&L,LINK *p) //用户存款、取款04)void PrintList(LINK*L) //打印链表,实现用户信息输出05)void DeleteList(LINK *&L) //链表删除,实现销户功能(需要账号和密码)06)void save(LINK *L) //保存链表,实现用户信息保存到文件07)void Print(LINK *&L) //打开文件,得到链表08)void menu() //主菜单函数09)void choice() //菜单选择函数(6)数据结构:typedef struct ElemType //定义结构体{char name[11];int account;char password[7];float money;}ElemType;typedef struct lnode //定义链表{ElemType data;struct lnode *next;}LINK;(7)心得:这次实验我学到了很多在课本上没有注意的知识,在设计实验的过程中,我通过对链表的应用,让我对链表的应用更加的牢固,也通过设计,我也发现了我在学习中的不足,在不断改进程序的同时,我也发现了很多能够改进的地方,在改进程序的同时,巩固对链表的知识掌握。

这次我设计的程序,主要是以链表为中心,通过对链表的建立,插入,删除打印等来实现开户、销户、存钱、取钱等功能。

其中链表打印的环节的功能我不是很明白,通过上网查询。

查找资料。

逐渐改善。

最终实现完全的程序(8)源程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#define file "lnode.txt"int total=0; //定义的全局变量,用于开户所需typedef struct ElemType //定义结构体{char name[11];int account;char password[7];float money;}ElemType;typedef struct lnode //定义链表{ElemType data;struct lnode *next;}LINK;void InitList(LINK *&L) //建立空链表{L=(LINK *)malloc (sizeof(LINK));L->next=NULL;}void InsertList(LINK *L) //链表插入实现开户功能{int x; LINK *s; s=(LINK*)malloc(sizeof(LINK));printf("请输入你要开户的姓名(10字符以内):");scanf("%s",s->);x=rand()%10; //随机数total+=x; //total随机增大一个数值(10以内)xs->data.account=10000000+total;printf("\n你开户的账号为:%d\n",s->data.account);printf("请输入你账号的密码(6位数以内):");scanf("%s",s->data.password);s->data.money=0.00;s->next=NULL;if(L->next==NULL)L->next=s;else{s->next=L->next;L->next=s;}printf("开户成功。

\n");}void DeleteList(LINK *L) //链表删除实现销户功能(需要账号和密码){LINK *p=L,*q;char pass[6];int s;printf("请输入你要销户的账号:");scanf("%d",&s);printf("请输入该账号的密码:");scanf("%s",pass);while(p->next!=NULL){if(p->next->data.account==s)break;p=p->next;}if(p->next!=NULL){while(strcmp(p->next->data.password,pass)!=0){printf("密码错误!请重新输入:");scanf("%s",pass);}q=p->next;p->next=q->next;free(q);printf("账号销户成功。

\n");}else printf("你所要销户的的账号不存在(或者已经销户)。

\n");}void PrintList(LINK*L) //打印链表,实现用户信息输出{LINK *p=L->next;while (p!=NULL){printf("%s\t",p->);printf("%d\t%s\t%.2f\n",p->data.account,p->data.password,p->data.money);p=p->next;}}void Deposit(LINK *L,LINK *p) //用户存款、取款{int cq;float mn;while(1){if(p!=NULL){printf("请选择存款(1)、取款(2)、查询余额(3)、退出账号(4)。

\n(请输入括号内的数字,输入其它字符默认为取款):");scanf("%d",&cq);if(cq==1){printf("请输入你的存款金额:");scanf("%f",&mn);p->data.money=p->data.money+mn;printf("存款成功!\n");}else if(cq==3){ printf("你账户的余额为:%.2f\n",p->data.money);}else if(cq==4){printf("账号退出成功。

\n");return;}else{printf("请输入你的取款金额:");FH:scanf("%f",&mn);if((p->data.money-mn)>=0){p->data.money=p->data.money-mn;printf("取款成功!\n");}else{printf("取款失败!\n");printf("你账户上的金额不足!\n你的账户余额为:%.f\n",p->data.money);printf("请输入合适的取款金额:");goto FH;}}}}}void Search(LINK *L) //链表查找,实现用户登陆功能{LINK *p=L->next;int acc;char pass[6];printf("请输入你要登录的账号:");scanf("%d",&acc);printf("请输入你的密码:");scanf("%s",pass);while(p!=NULL){if(p->data.account==acc)break;p=p->next;}if(p==NULL)printf("不存在该账户\n");else{if(strcmp(p->data.password,pass)==0)printf("账号登录成功。

\n");else{while(strcmp(p->data.password,pass)!=0){char pa;printf("密码错误\n");printf("是否重新输入(是,就输入任意键)、(否,从键盘上输入N or n):");scanf("\n%c",&pa);if(pa=='n'||pa=='N'){system ("cls");return;}printf("\n请重新输入你的密码:");scanf("%s",pass);}}Deposit(L,p);}}void save(LINK *L) //保存链表,实现用户信息保存到文件{FILE *fp;if((fp=fopen(file,"rb"))==NULL){printf("cannot open file.\n");exit(1);}LINK *p=L->next;if (p!=NULL){if(fwrite(p,sizeof(struct lnode),1,fp)!=1)printf("file write error\n");p=p->next;}fclose(fp);}void Print(LINK *&L) //打开文件,得到链表{FILE *fp;LINK *p,*s;if((fp=fopen(file,"rb"))==NULL){printf("cannot open file.\n");exit(1);}s=(LINK*)malloc(sizeof(LINK));s->next=NULL;while(fread(s,sizeof(struct lnode),1,fp) ){total++; //用于记录账号的,以致账号不重复if(L->next==NULL){L->next=s; p=s;p->next=s->next;}else{p->next=s; p=s;p->next=s->next;}s=(LINK*)malloc(sizeof(LINK));s->next=NULL;}fclose(fp);}void menu() //主菜单函数{printf("************欢迎进入活期储蓄账目管理***********\n");printf("1.储户开户。

相关文档
最新文档