




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
--本页仅作为文档封面,使用时请直接删除即可--
--内页可以根据需求调整合适字体及大小本页仅作为文档封面,使用时请直接删除即可--
--内页可以根据需求调整合适字体及大小--活期储蓄帐目管理数据结构(总17页)PAGE洛阳理工学院课程设计报告课程名称数据结构课程设计设计题目活期储蓄帐目管理专业计算机科学与技术
课程设计任务书设计题目:活期储蓄帐目管理设计内容与要求:【问题描述】活期储蓄处理中,储户开户、销户、存入、支出活动频繁。设计一个活期储蓄账目管理系统。【基本要求】1)能比较迅速地找到储户的帐户,以实现存款、取款记账;2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。课程设计评语成绩:指导教师:_______________年月日目录TOC\o"1-2"\h\z\u一、问题描述与基本要求 11.1问题描述 11.2基本要求 1二、数据结构的设计 22.1数据结构的选择 22.2单链表的定义 22.3模块划分 2三、模块结构图 4四、程序流程图 4五、调试分析 75.1程序错误修改及完善的过程 75.2最终程序所有功能运行结果 8六、心得体会 9七、源程序清单 10一、问题描述与基本要求1.1问题描述活期储蓄处理中,储户开户、销户、存入、支出活动频繁。设计一个活期储蓄账目管理系统。1.2基本要求系统设计要求:1、能比较迅速地实现插入,以实现储户开户的功能,储户开户时需输入的信息包括储户姓名,密码。2、能比较迅速地通过储户的账户序号和密码找到储户的账户,并删除该账户,以实现销户的功能。3、能比较迅速地通过储户的账户序号和密码找到储户的账户(密码不对时,可选择是否重新输入密码)实现账户登录的功能。登录成功后,再通过修改链表结点数据域中的对应元素,以实现存款、取款、显示余额等功能,若取款时账户余额不足,输出提示信息“取款失败!你账户上的金额不足!”,并显示账户当前余额,并且提示重新输入合适的取款金额。4、查找活期储蓄帐目管理系统当前存在的储户,当输出活期储蓄帐目管理系统没有账户时,输出提示信息“活期储蓄帐目管理系统没有账户”,当有账户时,输出所有账户的相关信息,包括储户姓名,帐号,密码,账户余额。二、数据结构的设计2.1数据结构的选择课程设计题目的要求是,要较简单迅速地实现开户、销户、存款、取款、输出用户信息的功能,于是我很自然地想到了可以用单链表的结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能,即可满足课程设计题目的要求。2.2单链表的定义先定义单链表结点的数据域,数据域包括储户姓名、账户序号、账户密码、账户金额等储户信息,然后再定义链表结点,链表结点包括结点数据域和结点链域,最后再定义指向链表结点的指针。数据结构类型定义:typedefstructListData//定义结点数据域{charname[3];//储户姓名intaccount;//账户账号charpassword[5];//账户密码intmoney;//账户金额}ListData;typedefstructnode//定义链表结点{ListDatadata;//结点数据域structnode*next;//结点链域}ListNode;2.3模块划分(1)建立空链表函数:voidInitList(LinkList*L)(2)插入链表结点,实现开户功能函数:voidInsertList(LinkList*L)(3)删除链表结点,实现销户功能函数:voidDeleteList(LinkList*L)(4)储户存款、取款、显示余额函数:voidDeposit(LinkList*L,LinkList*p)(5)链表查找,实现用户登录功能函数:voidSearch(LinkList*L)(6)输出链表函数:voidPrintList(LinkList*L)(7)主菜单函数:voidmenu()(8)选择函数:voidchoice()(9)主函数:voidmain()三、模块结构图四、程序流程图1.InitList()函数2.InsertList()函数3.DeleteList()函数4.PrintList()函数5.Deposit()函数6.Search()函数7.menu()函数8.choice()函数9.main()函数五、调试分析5.1程序错误修改及完善的过程1、当看到这个课程设计题目时,我觉得还算比较简单,因为我之前数据结构实验就做过单链表的插入、删除、查找、输出,而这次活期储蓄帐目管理系统要求的开户、销户、存款、取款、输出储户信息等功能,即可用单链表的相关功能函数来实现,于是我修改了之前写过的单链表的一些函数,以满足这次题目的要求,但在实验过程中仍出现了一些错误。最终经过我的仔细检查和修改,最终编写出了符合要求的程序,还增加了一些功能。2、我编写完程序后,觉得程序太过简单,又想到题目是活期储蓄帐目管理系统,那账户应该是有密码保证安全性的,于是我又在单链表结点的数据域中加入了一个新的元素password[5],并且还修改了后面相关函数的定义,确保在销户时,必须账户序号和密码相对应时才能销户成功,在存款、取款时也只有当账户序号和密码相对应时才能登录成功,选择存款、取款或显示余额等功能。因此,函数定义中除了密码正确时的相关操作,还应有密码错误时的提示信息和相关操作。于是,我在DeleteList函数和Search函数中加入了判断p->data.password与mima是否相等的语句。3、修改了相关函数定义后,调试程序,又出现了如下错误:errorC2065:'strcmp':undeclaredidentifier,我才意识到我在DeleteList函数和Search函数的定义中调用了strcmp函数,头文件中应包括#include<string.h>,加上后运行结果就对了。修改后,相关调试结果如下:4、再次修改完程序后,我希望程序还能更加完善,于是我开始思考出了密码与账户不对应,导致销户失败和登录失败外,还可能出现哪些其他的特殊情况。于是我又想到了两个特殊情况,一是取款时,账户余额可能不够,则应该输出提示信息,告知用户当前账户余额,并要求用户输入合适的取款金额。二是,可能系统没有建立账户,或者是建立了账户但是已经销户,就会导致当前系统没有账户,输出账户信息为空,这时就需要输出提示信息“活期储蓄帐目管理系统没有账户”,于是我根据自己的想法又对程序做了一些修改,最终程序完成所有功能运行。5.2最终程序所有功能运行结果(1)主菜单(2)开户(3)销户(4)账号登录,存、取款及查询余额(5)显示出户信息六、心得体会这次课程设计,我选的题目是活期储蓄账目管理,对于这个实验开始感觉不知从哪儿开始,后来经过认真分析后,结合所学知识并查阅了许多相关的课外知识,我们开始了一步步解题编程。在编程过程中,遇到问题的时候就与同学一起讨论解决,从其他人身上学到了很多,慢慢把不会不理解的地方给弄明白了。在经过很多次调试以后,最终没有出现错误了,实验能够执行,将功能实现,最后完成程序编写。虽然不是很完美,但发现不足之处并在以后的设计中注意这些细节,对于将来的实践还是很有帮助,我们可以不断发现我们的不完美,并想办法去改进这些不完美。这次的综合性实验使我了解到,平时对知识的积累相当重要,同时也要注重课上老师的讲解,老师在课上的延伸是课本上所没有的,这些知识对于我们对程序的编写有很大的作用。同时,编程也要求我们有足够的耐心,细细推敲,越着急可能就越无法得到我们想要的结果,遇到不会的问题要多多请教,知识是在实践与向别人请教的过程中积累的,所以问是至关重要的,只要肯下功夫很多东西都是可以完成的。总之,编程使我学到更多,更全面的知识。通过这次课程设计学到了很多东西包括以前在课本上没有学到的知识,还使我懂得了理论和时间结合是很重要的。让我进一步了解了程序设计方法,并且对这门课产生了浓厚的兴趣。更重要的是培养了自己耐心、细心、用心的良好品质。同时也非常感谢同学的帮助及老师的建议与指导。七、源程序清单#include<stdio.h>#include<string.h>#include<stdlib.h>inttotal=1;//定义的全局变量,用于开户所需typedefstructListData//定义结点数据域{ charname[8];//储户姓名 intaccount;//账户账号 charpassword[6];//账户密码 floatmoney;//账户金额}ListData;typedefstructnode//定义链表结点{ ListDatadata;//结点数据域 structnode*next;//结点链域}Link;voidInitList(Link*L)//建立空链表{ L=(Link*)malloc(sizeof(Link));//建立头结点 L->next=NULL;//建立空的单链表L}voidInsertList(Link*L)//链表插入结点,实现开户功能,需输入储户姓名和密码{ Link*s; s=(Link*)malloc(sizeof(Link));//建立新结点s printf("请输入你要开户的姓名:");scanf("%s",s->); s->data.account=1000+total++; printf("你开户的账号为:%d\n",s->data.account); printf("请输入你账号的密码:"); 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;//将s结点插入表头 L->next=s; } printf("开户成功!\n");}voidDeleteList(Link*L)//删除链表结点,实现销户功能(需要输入账号和密码){ Link*p=L,*q; charpass[6]; ints; 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;//修改指针,删除结点q free(q); printf("账号销户成功!\n"); } elseprintf("你所要销户的的账号不存在(或已经销户)。\n");}voidPrintList(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; }}voidDeposit(Link*L,Link*p)//储户存款、取款、查询余额{ intcq; floatmn; while(1) if(p!=NULL) { printf("\n1、存款2、取款3、查询余额4、退出账号\n请输入数字(1-4)选择功能:\n"); scanf("%d",&cq); if(cq==1) { printf("请输入你的存款金额:"); scanf("%f",&mn); p->data.money=p->data.money+mn; printf("存款成功!\n"); } elseif(cq==3) { printf("你账户的余额为:%.2f\n",p->data.money); } elseif(cq==4) { printf("账号退出成功!\n"); return; } else { printf("请输入你的取款金额:"); scanf("%f",&mn); if((p->data.money-mn)>=0) { p->data.money=p->data.money-mn; printf("取款成功!\n"); } else { printf("取款失败!\n"); printf("你账户上的金额不足!你的账户余额为:%.2fRMB\n",p->data.money); printf("请输入合适的取款金额:"); } } }}voidSearch(Link*L)//链表查找,实现用户登录功能(需要输入账号和密码){ Link*p=L->next;//从表中第一个结点开始 intacc; charpass[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) { charpa; printf("密码错误!\n"); printf("是否重新输入(是,就输入任意键)、(否,从键盘上输入Norn):"); scanf("\n%c",&pa); if(pa=='n'||pa=='N') { system("cls"); return; } printf("\n请重新输入你的密码:"); scanf("%s",pass); } } Deposit(L,p); }}voidmenu()//主菜单{ printf("*********欢迎进入活期储蓄账目管理系统*********\n"); printf("※1.储户开户※\n"); printf("※2.储户销户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 展览场地设备租赁合同(14篇)
- 广东科学技术职业学院《微机原理与应用A》2023-2024学年第二学期期末试卷
- 河南工业职业技术学院《种子质量检验理论与技术》2023-2024学年第二学期期末试卷
- 青海民族大学《用户研究与体验》2023-2024学年第二学期期末试卷
- 扬州中瑞酒店职业学院《竞技武术套路5》2023-2024学年第二学期期末试卷
- 2025年辽宁省建筑安全员B证考试题库
- 苏州大学应用技术学院《色谱学》2023-2024学年第二学期期末试卷
- 2025年江西省安全员C证(专职安全员)考试题库
- 山西财贸职业技术学院《工程信息学》2023-2024学年第二学期期末试卷
- 哈尔滨幼儿师范高等专科学校《英语课程标准解析与教材研究》2023-2024学年第二学期期末试卷
- Q∕GDW 11612.2-2018 低压电力线高速载波通信互联互通技术规范 第2部分:技术要求
- 公司办公室5S管理规定(实用含图片)
- (完整版)餐饮员工入职登记表
- 智能化工程施工工艺图片讲解
- 人教版小学五年级数学下册教材解读
- 2022年最新苏教版五年级下册科学全册教案
- 咳嗽与咳痰课件
- 小学四年级数学奥数应用题100题
- 综合布线验收报告材料
- 《初三心理健康教育》ppt课件
- 重庆铁塔公司配套设备安装施工服务技术规范书
评论
0/150
提交评论