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

上传人:无*** 文档编号:86442367 上传时间:2022-05-07 格式:DOC 页数:15 大小:83.50KB
返回 下载 相关 举报
活期储蓄帐目管理数据结构_第1页
第1页 / 共15页
活期储蓄帐目管理数据结构_第2页
第2页 / 共15页
活期储蓄帐目管理数据结构_第3页
第3页 / 共15页
点击查看更多>>
资源描述
-洛 阳 理 工 学 院课 程 设 计 报 告 课程名称 数据构造课程设计 设计题目 活期储蓄帐目管理 专 业 计算机科学与技术 课 程 设 计 任 务 书设计题目:活期储蓄帐目管理 设计容与要求:【问题描述】活期储蓄处理中,储户开户、销户、存入、支出活动频繁。设计一个活期储蓄账目管理系统。【根本要求】1) 能比较迅速地找到储户的*,以实现存款、取款记账;2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。课 程 设 计 评 语 成绩: 指导教师:_ 年 月 日. z.-目 录一、问题描述与根本要求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单链表的定义先定义单链表结点的数据域,数据域包括储户*、账户序号、账户密码、账户金额等储户信息,然后再定义链表结点,链表结点包括结点数据域和结点链域,最后再定义指向链表结点的指针。数据构造类型定义:typedef struct ListData /定义结点数据域char name3; /储户*int account; /账户账号char password5; /账户密码int money; /账户金额ListData;typedef struct node /定义链表结点ListData data; /结点数据域struct node *ne*t; /结点链域ListNode;2.3模块划分1建立空链表函数:void InitList (LinkList *L)2插入链表结点,实现开户功能函数:void InsertList (LinkList *L)3删除链表结点,实现销户功能函数:void DeleteList (LinkList *L)4储户存款、取款、显示余额函数:void Deposit (LinkList *L,LinkList *p)5链表查找,实现用户登录功能函数:void Search (LinkList *L)6输出链表函数:void PrintList (LinkList *L)7主菜单函数:void menu()8选择函数:void choice()9主函数:void main()三、模块构造图四、程序流程图1 InitList ()函数 2. InsertList ()函数3. DeleteList()函数 4. PrintList()函数5. Deposit()函数6. Search()函数7. menu()函数 8. choice()函数9.main()函数五、调试分析5.1程序错误修改及完善的过程1、当看到这个课程设计题目时,我觉得还算比较简单,因为我之前数据构造实验就做过单链表的插入、删除、查找、输出,而这次活期储蓄帐目管理系统要求的开户、销户、存款、取款、输出储户信息等功能,即可用单链表的相关功能函数来实现,于是我修改了之前写过的单链表的一些函数,以满足这次题目的要求,但在实验过程中仍出现了一些错误。最终经过我的仔细检查和修改,最终编写出了符合要求的程序,还增加了一些功能。2、我编写完程序后,觉得程序太过简单,又想到题目是活期储蓄帐目管理系统,那账户应该是有密码保证平安性的,于是我又在单链表结点的数据域中参加了一个新的元素password5,并且还修改了后面相关函数的定义,确保在销户时,必须账户序号和密码相对应时才能销户成功,在存款、取款时也只有当账户序号和密码相对应时才能登录成功,选择存款、取款或显示余额等功能。因此,函数定义中除了密码正确时的相关操作,还应有密码错误时的提示信息和相关操作。于是,我在DeleteList函数和Search函数中参加了判断p-data.password与mima是否相等的语句。3、修改了相关函数定义后,调试程序,又出现了如下错误:error C2065: strcmp : undeclared identifier,我才意识到我在DeleteList函数和Search函数的定义中调用了strcmp函数,头文件中应包括*include,加上后运行结果就对了。修改后,相关调试结果如下:4、再次修改完程序后,我希望程序还能更加完善,于是我开场思考出了密码与账户不对应,导致销户失败和登录失败外,还可能出现哪些其他的特殊情况。于是我又想到了两个特殊情况,一是取款时,账户余额可能不够,则应该输出提示信息,告知用户当前账户余额,并要求用户输入适宜的取款金额。二是,可能系统没有建立账户,或者是建立了账户但是已经销户,就会导致当前系统没有账户,输出账户信息为空,这时就需要输出提示信息“活期储蓄帐目管理系统没有账户,于是我根据自己的想法又对程序做了一些修改,最终程序完成所有功能运行。5.2最终程序所有功能运行结果1主菜单2开户 3销户4账号登录,存、取款及查询余额5显示出户信息六、心得体会这次课程设计,我选的题目是活期储蓄账目管理,对于这个实验开场感觉不知从哪儿开场,后来经过认真分析后,结合所学知识并查阅了多相关的课外知识,我们开场了一步步解题编程。在编程过程中,遇到问题的时候就与同学一起讨论解决,从其他人身上学到了很多,慢慢把不会不理解的地给弄明白了。在经过很屡次调试以后,最终没有出现错误了,实验能够执行,将功能实现,最后完成程序编写。虽然不是很完美,但发现缺乏之处并在以后的设计中注意这些细节,对于将来的实践还是很有帮助,我们可以不断发现我们的不完美,并想方法去改进这些不完美。这次的综合性实验使我了解到,平时对知识的积累相当重要,同时也要注重课上教师的讲解,教师在课上的延伸是课本上所没有的,这些知识对于我们对程序的编写有很大的作用。同时,编程也要求我们有足够的耐心,细细推敲,越着急可能就越无法得到我们想要的结果,遇到不会的问题要多多请教,知识是在实践与向别人请教的过程中积累的,所以问是至关重要的,只要肯下功夫很多东西都是可以完成的。总之,编程使我学到更多,更全面的知识。通过这次课程设计学到了很多东西包括以前在课本上没有学到的知识,还使我懂得了理论和时间结合是很重要的。让我进一步了解了程序设计法,并且对这门课产生了浓厚的兴趣。更重要的是培养了自己耐心、细心、用心的良好品质。同时也非常感同学的帮助及教师的建议与指导。七、源程序清单*include*include*includeint total=1;/定义的全局变量,用于开户所需typedef struct ListData /定义结点数据域char name8; /储户*int account; /账户账号char password6; /账户密码float money; /账户金额ListData;typedef struct node /定义链表结点 ListData data; /结点数据域struct node *ne*t; /结点链域Link;void InitList(Link *L) /建立空链表 L=(Link *)malloc(sizeof(Link); /建立头结点L-ne*t=NULL; /建立空的单链表Lvoid InsertList(Link *L) /链表插入结点,实现开户功能,需输入储户*和密码Link *s;s=(Link*)malloc(sizeof(Link); /建立新结点sprintf(请输入你要开户的*:); scanf(%s,s-data.name);s-data.account=1000+total+;printf(你开户的账号为:%dn,s-data.account);printf(请输入你账号的密码:);scanf(%s,s-data.password);s-data.money=0.00;s-ne*t=NULL;if(L-ne*t=NULL) /头插法L-ne*t=s; elses-ne*t=L-ne*t; /将s结点插入表头L-ne*t=s;printf(开户成功!n);void DeleteList(Link *L) /删除链表结点,实现销户功能需要输入账号和密码Link *p=L,*q;char pass6;int s;printf(请输入你要销户的账号:);scanf(%d,&s);printf(请输入该账号的密码:);scanf(%s,pass);while(p-ne*t!=NULL)if(p-ne*t-data.account=s)break;p=p-ne*t;if(p-ne*t!=NULL)while(strcmp(p-ne*t-data.password,pass)!=0)printf(密码错误!请重新输入:);scanf(%s,pass);q=p-ne*t;p-ne*t=q-ne*t; /修改指针,删除结点qfree(q);printf(账号销户成功!n);else printf(你所要销户的的账号不存在(或已经销户)。n);void PrintList(Link *L) /输出链表,实现储户信息输出Link *p=L-ne*t;while (p!=NULL)printf(%st,p-data.name);printf(%dt%st%.2fn,p-data.account,p-data.password,p-data.money);p=p-ne*t;void Deposit(Link *L,Link *p) /储户存款、取款、查询余额int cq;float mn;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);else if(cq=3)printf(你账户的余额为:%.2fn,p-data.money);else if(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);elseprintf(取款失败!n);printf(你账户上的金额缺乏!你的账户余额为:%.2fRMBn,p-data.money);printf(请输入适宜的取款金额:);void Search(Link *L) /链表查找,实现用户登录功能需要输入账号和密码Link *p=L-ne*t; /从表中第一个结点开场int acc;char pass6;printf(请输入你要登录的账号:);scanf(%d,&acc);printf(请输入你的密码:);scanf(%s,pass);while(p!=NULL) /当前表未查完if(p-data.account=acc)break;p=p-ne*t;if(p=NULL)printf(不存在该账户!n);elseif(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 menu() /主菜单printf( *欢迎进入活期储蓄账目管理系统* n);printf( 1.储户开户 n);printf( 2.储户销户 n);printf( 3.储户的账号存款、取款 n);printf( 4.返回菜单 n);printf( 5.查看所有储蓄账户信息 n);printf( 6.退出账目管理 n);printf( * n);void choice()Link *L;InitList(L);while(1)int m;char ch;printf(请选择你需要的功能:);scanf(%d,&m);if(m=6) break;system (cls);switch(m)case 1:InsertList(L);ch=getchar();break;case 2:DeleteList(L);ch=getchar();break;case 3:Search(L);ch=getchar();break;case 4:menu();ch=getchar();break;case 5:PrintList(L);ch=getchar();break;default:printf(输入错误!请重新选择功能。n);break;void main()menu();choice();. z.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!