资源描述
目录A:设计目的31.1了解分析方法3B:需求分析31.程序需求及思想32.程序执行命令操作3C:概要设计3-51.程序设计流程图42.程序结构设计说明5D:详细设计5-12E:程序运行结果.13-16F:设计心得.16-17G:参考文献.17 15A、设计目的: 1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2.充分了解和学习数据结构的系统设计和程序编码,对问题的探究与分析,进行更多的应用与测试。3.学习设计实现活期储蓄账目管理,并令其方便、简单、快捷的实现其各个部分的功能。4通过这次实验使自己的设计水平有所提高,对数据结构的整体认知程度有所加强,锻炼自己思考和设计能力。B、需求分析:1.需要先建立结本程序点类模板,然后使用链表的基本操作应用实现各个程序的实现,头插法先建立链表使之成当前操作数据基础,然后可以使用节点的删除进行储户的销户,结点的插入的应用成为程序的开户(注意:建立新的用户要先确认新建的用户号不可以与之前的用户号码相同, 引起系统错误!本程序应用链表节点的比较改进程序。)。储户的存取也是应用节点的比较查找之后进行的账户钱数加减。2.程序的执行命令操作 (1).建立节电类模板,构建链表.(2).输入储户信息.(3).执行各项操作(数据测试)1.查询储户信息. 2开户.3储户支取信息查询.4.储户的程序销户. 5.程序完成. (4).程序退出. C、概要设计:C.1:程序流程图程序开始输入客户信息程序菜单:1,3(查询)2-(开户)4-(销户)5-(退出)Case2:系统开户(插入新的节点)作为新的户头(不可重复)Case1,3:系统查找(账户对比)存取消费操作Case4:(用户销户)删除当前节点出去信息1查找成功0出1开户成功0出1删除成功0出程序员结束程序(系统退出)程序结束(退出) *程序设计流程图*C.2:结构设计说明1.本程序主要应用数据结构节点类模板,首先构建节点类模板,在建立已有储户数据中对头结点(*head)分配动态存储空间,对头结点的邻接点(head-next)赋初值,循环插入新结点建立储户数据(头插法)。在账号循环插入中进行账号重复判断。2.在查找账户的过程中,应用结点下移继续查找,实现账户正确查找应用。3.在销户过程中,进行结点删除,从而实现储户的销户。4.在开户过程中,定义新结点,分配新的存储空间,进行结点插入,在账号循环插入中进行账号重复判断,完成开户过程。5.在存取记录过程中,应用结点下移进行循环查找账户信息,显示账户信息。6.主函数测试。D、详细设计:/活期储蓄帐目管理 #include#includeusing namespace std;template/构建节点类模板class Nodepublic: Node *next;/ T 可省指针string name; T data;long int number; ;template class SavingListpublic: SavingList();Node * CreatSavingList();void SearchAccount(long int x);Node * DeleteAccount(long int x);Node * InsertAccount(long int x); void Record(long int x,int y); private:Node *head; ; template /建立已有储户数据 Node * SavingList:CreatSavingList() head=new Node;/初值 int k=1;/分配动态空间Node *p,*q;head-next=NULL;/ 赋初值long int number,Number;int data; string name; coutnumber;Number=number;coutname; coutdata;while(number/1e7=1 & number/1e7=10) p=new Node;q=new Node;p-number=number;/节点初值p-name=name;p-data=data;p-next=head-next;/将p插入连中head-next=p;cout是否继续输入信息 按1继续输入 按0退出k;if(k=0)break;coutnumber;q=head-next;while(q)/账号的重复判断if(q-number=number)cout账号已存在 !next;if(!q)coutname;coutdata;return head;template /查找账户 void SavingList:SearchAccount(long int x) if(x/1e710) cout您输入的账户不存在endl; return ; Node *p; p=head; while(p!=NULL & p-number!=x) p=p-next;/向下移位 继续查找 if(p=NULL) cout您输入的账户未找到endl; else cout账户名: nameendl;cout账户号码: numberendl;cout账户余额: data元endl; template /销户Node * SavingList:DeleteAccount(long int x) Node *p,*q;/节点类型 p=head; while(p!=NULL&p-number!=x) q=p;p=p-next;if(p=NULL) cout您输入的账户已不存在next=p-next;/将q删掉 return head; template /开户 Node * SavingList:InsertAccount(long int x) Node *p,*q;q=new Node; char w10;/名字 int i; p=head;q-number=x; q-next=p-next; p-next=q;/插入 q(新的账号)coutw;couti;q-name=w; q-data=i; cout您的新账户的信息是:endl; cout账户名: nameendl;cout账户号码: numberendl; cout账户余额: data元endl;return head; template /存取款记录 void SavingList:Record(long int x,int y) Node *p;p=head;while(p!=NULL & p-number!=x) /循环查找P的相同正确值 节点下移p=p-next; if(p=NULL) cout您输入的账户不存在data=p-data+y;if(p-data0)cout余额不足 请充值!endl;elsecout目前您的账户信息:endl;cout账户名(八位): nameendl; cout账户号码: numberendl; cout账户余额: data元endl; int Menu()int n; cout-Menu-endl; coutt1.查询账户 2.开户nnendl; coutt3.支出存储记录 4.销户nnendl;coutt5.退出endl;cout-;coutendl;do cout请输入你的选择(1-5):nn; while(n5);return n; int main()SavingList T; Node *head;head=T.CreatSavingList(); long int x; int y,n;for(;) switch (Menu() case 1:coutx; T.SearchAccount(x); couty;if(y=1) cout-nnn;coutt1.支出存入 2.销户nn;cout-nnn; do coutn;while(n!=1 & n!=2); if(n=1) cout请输入你存取的钱数: ; cout存入钱数在前加“ + ”, 取出钱数在前加“ - ”a; T.Record(x,a); if(n=2) coutb; if(b=1)T.DeleteAccount(x); break;case 2:long int c; Node *q;q=head-next;coutc;while(q)if(q-number=c)cout账号已存在 !next;if(!q)while(c/1e7 10) coutc; T.InsertAccount(c);break; case 3:long int r;int t,l; coutr;cout请输入你存取的钱数: ; /cout存入钱数在前加“ + ”, 取出钱数在前加“ - ”t;T.Record(r,t); cout继续操作请输入1 ,退出输入0:l; while(l=1) coutr;cout请输入你存取的钱数: ;cout存入钱数在前加“ + ”, 取出钱数在前加“ - ”t; T.Record(r,t); cout继续操作请输入1,退出输入0l; break;case 4:long int k;int m;coutk; while(k/1e79) coutk; T.DeleteAccount(k); cout继续操作请输入1,退出输入0m; while(m=1) coutk;while(k/1e710) cout输入的位数不正确,请你确认后再进行操作!: ; T.DeleteAccount(k);cout继续操作请输入1,退出输入0m; break; case 5:exit(0);return 0; E、系统运行结果:F、设计心得:通过此次的课程试验的练习,我有了很大的收获,同时也加深了对数据结构这门课程的理解和学会了如何在实际中应用数据结构。 我选择的储蓄储管理设计使我了解到链表节点类的正确使用方法,熟悉结点类的作用,更加得知道了数据结构的知识的灵活应用的方便,思路更加清晰。而且更加珍惜的是我了解到了分析问题的整体性非常重要,账户的重复问题,程序的可行性,还有程序设计报告的整体过程我都有了更深刻的认识!更加重要的是这次是我和另外的一个同学一起设计的程序,第一次充分了解到团队合作的重要性!不同的同学的思想在很多的地方是不相同的,同样的问题可以有不同的算法分析与求解。可以更加有效的让我们的相互学习能力快速提高相互的学习进步。对数据结构的进一步认识,我感觉到数据结构的奥妙,对知识的掌握要透彻,分析问题要有步骤,有条理。我们都以认真的态度对待这次设计,在争论与磨合后完成了这次设计,希望我们对真理探究到底的态度保持在各项学习中,让我们变得越来越充实,只是越来越丰富!G、参考文献:1.数据结构(C+版) 2.C+语言程序设计(第四版) 清华大学出版社3.互联网有关资料
展开阅读全文