版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录a:设计目的31.1了解分析方法3b:需求分析31.程序需求及思想32.程序执行命令操作3c:概要设计3-51.程序设计流程图42.程序结构设计说明5d:详细设计5-12e:程序运行结果.13-16f:设计心得.16-17g:参考文献.17 15a、设计目的: 1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2.充分了解和学习数据结构的系统设计和程序编码,对问题的探究与分析,进行更多的应用与测试。3.学习设计实现活期储蓄账目管理,并令其方便、简单、快捷的实现其各个部分的功能。4通过这次实验使自己的设计水平有所提高,对数据结构的整体认知程度有所加强,锻炼自己思考和设计
2、能力。b、需求分析:1.需要先建立结本程序点类模板,然后使用链表的基本操作应用实现各个程序的实现,头插法先建立链表使之成当前操作数据基础,然后可以使用节点的删除进行储户的销户,结点的插入的应用成为程序的开户(注意:建立新的用户要先确认新建的用户号不可以与之前的用户号码相同, 引起系统错误!本程序应用链表节点的比较改进程序。)。储户的存取也是应用节点的比较查找之后进行的账户钱数加减。2.程序的执行命令操作 (1).建立节电类模板,构建链表.(2).输入储户信息.(3).执行各项操作(数据测试)1.查询储户信息. 2开户.3储户支取信息查询.4.储户的程序销户. 5.程序完成. (4).程序退出.
3、 c、概要设计:c.1:程序流程图程序开始输入客户信息程序菜单:1,3(查询)2-(开户)4-(销户)5-(退出)case2:系统开户(插入新的节点)作为新的户头(不可重复)case1,3:系统查找(账户对比)存取消费操作case4:(用户销户)删除当前节点出去信息1查找成功0出1开户成功0出1删除成功0出程序员结束程序(系统退出)程序结束(退出) *程序设计流程图*c.2:结构设计说明1.本程序主要应用数据结构节点类模板,首先构建节点类模板,在建立已有储户数据中对头结点(*head)分配动态存储空间,对头结点的邻接点(head->next)赋初值,循环插入新结点建立储户数据(头插法)。
4、在账号循环插入中进行账号重复判断。2.在查找账户的过程中,应用结点下移继续查找,实现账户正确查找应用。3.在销户过程中,进行结点删除,从而实现储户的销户。4.在开户过程中,定义新结点,分配新的存储空间,进行结点插入,在账号循环插入中进行账号重复判断,完成开户过程。5.在存取记录过程中,应用结点下移进行循环查找账户信息,显示账户信息。6.主函数测试。d、详细设计:/活期储蓄帐目管理 #include<iostream>#include<string>using namespace std;template<class t>/构建节点类模板class nodep
5、ublic: node<t> *next;/ t 可省指针string name; t data;long int number; ;template<class t> class savinglistpublic: savinglist();node<t> * creatsavinglist();void searchaccount(long int x);node<t> * deleteaccount(long int x);node<t> * insertaccount(long int x); void record(long
6、 int x,int y); private:node<t> *head; ; template<class t> /建立已有储户数据 node<t> * savinglist<t>:creatsavinglist() head=new node<t>/初值 int k=1;/分配动态空间node<t> *p,*q;head->next=null;/ 赋初值long int number,number;int data; string name; cout<<"请输入账户号(八位整数): &qu
7、ot; cin>>number;number=number;cout<<"请输入姓名: " cin>>name; cout<<"请输入账户余额: "cin>>data;while(number/1e7>=1 && number/1e7<=10) p=new node<t>q=new node<t>p->number=number;/节点初值p->name=name;p->data=data;p->next=head-&g
8、t;next;/将p插入连中head->next=p;cout<<"是否继续输入信息 按1继续输入 按0退出"<<endl;cin>>k;if(k=0)break;cout<<"请输入账户号(八位整数): " cin>>number;q=head->next;while(q)/账号的重复判断if(q->number=number)cout<<"账号已存在 !"<<endl;break;elseq=q->next;if(!q)co
9、ut<<"请输入姓名: "cin>>name;cout<<"请输入账户余额: " cin>>data;return head;template<class t> /查找账户 void savinglist<t>:searchaccount(long int x) if(x/1e7<1|x/1e7>10) cout<<"您输入的账户不存在"<<endl; return ; node<long> *p; p=head;
10、while(p!=null && p->number!=x) p=p->next;/向下移位 继续查找 if(p=null) cout<<"您输入的账户未找到"<<endl; else cout<<"账户名: "<<p->name<<endl;cout<<"账户号码: "<<p->number<<endl;cout<<"账户余额: "<<p->data
11、<<"元"<<endl; template<class t> /销户node<t> * savinglist<t>:deleteaccount(long int x) node<t> *p,*q;/节点类型 p=head; while(p!=null&&p->number!=x) q=p;p=p->next;if(p=null) cout<<"您输入的账户已不存在"<<endl; else q->next=p->next
12、;/将q删掉 return head; template<class t> /开户 node<t> * savinglist<t>:insertaccount(long int x) node<t> *p,*q;q=new node<t> char w10;/名字 int i; p=head;q->number=x; q->next=p->next; p->next=q;/插入 q(新的账号)cout<<"请输入姓名: " cin>>w;cout<<&qu
13、ot;请输入余额: " cin>>i;q->name=w; q->data=i; cout<<"您的新账户的信息是:"<<endl; cout<<"账户名: "<<q->name<<endl;cout<<"账户号码: "<<q->number<<endl; cout<<"账户余额: "<<q->data<<"元"&
14、lt;<endl;return head; template<class t> /存取款记录 void savinglist<t>:record(long int x,int y) node<t> *p;p=head;while(p!=null && p->number!=x) /循环查找p的相同正确值 节点下移p=p->next; if(p=null) cout<<"您输入的账户不存在"<<endl; else p->data=p->data+y;if(p->d
15、ata<0)cout<<"余额不足 请充值!"<<endl;elsecout<<"目前您的账户信息:"<<endl;cout<<"账户名(八位): "<<p->name<<endl; cout<<"账户号码: "<<p->number<<endl; cout<<"账户余额: "<<p->data<<"元&qu
16、ot;<<endl; int menu()int n; cout<<"-menu-"<<endl; cout<<"t1.查询账户 2.开户nn"<<endl; cout<<"t3.支出存储记录 4.销户nn"<<endl;cout<<"t5.退出"<<endl;cout<<"-"cout<<endl;do cout<<"请输入你的选择(1-5)
17、:n"<<endl;cin>>n; while(n<1|n>5);return n; int main()savinglist<long> t; node<long> *head;head=t.creatsavinglist(); long int x; int y,n;for(;) switch (menu() case 1:cout<<"请输入您要查询的账户:"cin>>x; t.searchaccount(x); cout<<" 是否需要继续进行操作?是
18、请输入1,放弃则输入0: "cin>>y;if(y=1) cout<<"-nnn"cout<<"t1.支出存入 2.销户nn"cout<<"-nnn" do cout<<"请输入你选择的操作 : "cin>>n;while(n!=1 && n!=2); if(n=1) cout<<"请输入你存取的钱数: " ; cout<<"存入钱数在前加“ + ”, 取出钱数在前
19、加“ - ”"<<endl;int a;cin>>a; t.record(x,a); if(n=2) cout<<"销户请输入 1, 不进行操作输入 0 !: " int b;cin>>b; if(b=1)t.deleteaccount(x); break;case 2:long int c; node<long> *q;q=head->next;cout<<"请输入您的账号(八位): "cin>>c;while(q)if(q->number=c)c
20、out<<"账号已存在 !"<<endl;break;elseq=q->next;if(!q)while(c/1e7 <1|c/ 1e7>10) cout<<"输入的位数不正确: " cin>>c; t.insertaccount(c);break; case 3:long int r;int t,l; cout<<"请输入执行操作的账号: " cin>>r;cout<<"请输入你存取的钱数: " ; /cout&
21、lt;<"存入钱数在前加“ + ”, 取出钱数在前加“ - ”"<<endl;cin>>t;t.record(r,t); cout<<"继续操作请输入1 ,退出输入0:"<<endl; cin>>l; while(l=1) cout<<"请输入执行操作的账号: " cin>>r;cout<<"请输入你存取的钱数: " ;cout<<"存入钱数在前加“ + ”, 取出钱数在前加“ - ”&quo
22、t;<<endl;cin>>t; t.record(r,t); cout<<"继续操作请输入1,退出输入0"<<endl;cin>>l; break;case 4:long int k;int m;cout<<"请输入你想要消掉的账户(请选择以上已有的) : " cin>>k; while(k/1e7<1|k/1e7>9) cout<<"输入的位数不正确: "cin>>k; t.deleteaccount(k); cout<<"继续操作请输入1,退出输入0"<<endl; cin>>m; w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学课程内容更新计划
- 2026年内科护理学练习试卷(含答案及解析)
- 2026年期权知识考试日常复盘试题含答案
- 冬季八防之防火灾爆炸
- 【学习课件】第十一章劣势谈判技巧
- 幼升小名校新生面试语文测试题
- 苏科版七年级生物下册期中测试题
- 综合医院各部门高压蒸汽消耗量估算
- 酒精泄漏事故专项应急预案
- 2026年人教版六年级数学上册寒假作业共15天
- 2026年山东省潍坊中小学教师招聘考试真题解析含答案
- 2026秋季福建福维新材料有限公司招聘42人考前冲刺密卷附参考答案详解【轻巧夺冠】
- 2026农业4.0智慧农业领航之路行业趋势白皮书-珈和科技
- 北京市朝阳区2025-2026学年九年级上学期期末考试物理试题(含答案)
- 2027年高考数学模拟试卷1(新高考Ⅰ)
- 2026四川成都市锦江区国有企业招聘18人笔试历年参考题库附带答案详解
- 八上数学必背公式
- proe如何画蜗轮蜗杆+prt+视屏
- 2026年武汉市武昌区新七年级语文入学分班摸底卷(含阅读解析作文范文与评分标准)
- 2026新疆维吾尔自治区中考全科热点预测:基于近3年真题的命题趋势分析与夺分策略
- 2025年公共卫生监督执法技能竞赛(学校与生活饮用水卫生监督)备考题库含答案大庆
评论
0/150
提交评论