版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告学院:*专业:*姓名:*学号:*指导老师:*日期:201371-201378、题目描述二、需求分析、概要设计四、详细设计五、调试分析八、源程序七、总结题目(一):活期储蓄帐目管理活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:1)能比较迅速地找到储户的帐户,以实现存款、取款记账;2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。一、需求分析:1)系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、 注销等功能。储蓄卡开户管理模块:卡号、姓名、开户金额、密码、确认密码和保存组成。 (开户金额必须是数字,密码和确认密码必须一样是六位数
2、字)注销模块:一旦注销该卡号就不存在且余额提醒你取出。2)系统框架:二、概要设计1登录页面输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存卡好信息已备后用。若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。2主界面页面主要导航栏有:欢迎使用储蓄卡管理(存款、取款、修改密码、转账功能、 注销退出)3储蓄卡开户页面提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中, 并将开户金额作为该卡的第一次存款记录存人文件。4存钱页面从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。从后台数据库
3、中找到该用户余额记录, 修改余额,并将该存款事件的相应信息写人 数据库,同时将存钱的金额显示在页面上。5取款页面从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款, 或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上。6 转账页面输入需转账的账号以及密码,并从后台数据库中找到该用户的的个人信息,号,若数据库中无该账号, 则显示该账号不存在。 输入需转账的金额, 如果金额大于 该用户卡上的余额则不能转账 ,否则转账成功。7 注销页面从关闭文件,状态为注销,最后关闭整个系统。三、详细设计类的设计:1 comsumer
4、类class comsumer 主要制定用户的成员数据,并进行登录与保存功能: 代码:class consumer:public YH/用户类 , 继承银行类的属性public:friend class YH;consumer(int id,string Name, string PassWord,float m)ID=id;name=Name; money=m;passwd=PassWord;consumer()ID=0;name=0money=0;passwd=0;int get_id()return ID;void savemoney();/ 取钱 string get_passwd()
5、return passwd;/ void display();void fetchmoney(); /void change_passwd();void add_money(float);/void dec_money(float);/float get_money();/private:int ID; / 开户帐号 string passwd; / string name; / float money; /取得密码取钱计算余额 计算余额 卡转帐用户密码 用户姓名 开户金额;2、YH 类YH 类 主要实现用户的各种功能: 相关代码:class YH public: void set_accou
6、nt();/ void del_account(); / void transfer(int); / void enter_account(); /银行类void addmoney(int,float);/ void exitYH();/ 退出系统 void functionshow();/银行开户功能 注销账户功能 转账功能 进入用户个人信息功能 存款功能void save();void load();/ 功能界面protected:consumer *account20;static int acnum;/账户数;3、储蓄卡开户管理模块: 1) 转账void YH:transfer(int
7、 x) int id;.11.coutid;int flag = 1;int i = 0; while(iget_id() flag = 0; else i+; if(flag) cout 帐号不存在 !endlendl; return ; float b;coutendlb;while(b=0)cout 请输入正确的数字 !b;if(accountx-get_money()b) 成员函数/ 调用友元类 consumer 的公有cout 对不起 , 金额不够 !dec_money(b);accounti-add_money(b);cout 转账成功 !endl;return;2)开户void
8、YH:set_account() int id;string nam;string passw; float m;coutid; coutnam;请输入开户号: endl;请输入开户人姓名: endl;coutpassw;cout 请输入存入金额 :m;请输入开户密码: endl;while(m=0)cout 请输入正确的数字 !m;consumer * acc = new consumer(id,nam, passw,m); accountacnum = acc;cout 开户成功 !endlendl; acnum+;save(); cin.get(); return;3)取款void co
9、nsumer:fetchmoney()float m;char ch;docoutvvendlvv输入取款金额:m;while(m=0)cout 请输入正确的数字 !m;if(moneym)cout 对不起,你的余额不足 !endl;elsemoney=money-m;coutendl 操作成功,请收好钱 ! endl;4)销户void YH:del_account()int id;coutendlid;int flag = 1;int i = 0;while(iget_id()flag = 0;elsei+;if(flag)coutvv该帐号不存在,请重新输入!endl; return; /
10、返回到登陆界面所有被删号后的数据重新存储for(i nt j=i;jac nu m;j+) /acco un tj = acco un tj+1;acco un tac nu m-1=NULL;acn um-; / 账号总数自减一次coutvv你的账号已注销!曙作成甲是否要菱-E续该项操作:半=-T CiVUsersa su 5DesktopDe bu gC ppi .exe1-查看账户信息2”取款3亠存款4.修改密码畀转账返回上一菜单请输入要存入的金a: see燥作已成攻!整否要继绩该项操作:半:选择4:选择5:查看账户信息2取款3 -存款久修改密码畀转账返回上一菜单半:查看账户信息2 取款
11、3 -存款4.修改密码转账6 返回上一菜单f 5请输入帐号;123456請够A要转帐的金额汚00 转膿成珈?半五、源程序void addm on ey(i ntfloat);/ void exitYHO;/退出系统void function show(); void save();void load();/ 功能界面#in cludeviostream #in elude #in clude using n ames pace std; class con sumer; class YH / public: void set_acco un t();/ void del_acco un t()
12、; / void tran sfer(i nt); / void en ter_acco un t(); /银行类银行开户功能注销账户功能转账功能进入用户个人信息功能 存款功能protected: consumer *account20; static int acnum;/;class consumer:public YH/ public: friend class YH; consumer(int id,string Name,string PassWord,float m) ID=id;name=Name;money=m;passwd=PassWord; consumer()ID=0;n
13、ame=0;money=0;passwd=0; int get_id()return ID; void savemoney();/ 取钱 string get_passwd()return passwd;/ void display(); void fetchmoney(); / void change_passwd(); / void add_money(float);/ void dec_money(float);/ float get_money();/ private: int ID; /开户帐号string passwd; / string name; / float money;
14、/ int number;账户数用户类 ,继承银行类的属性取钱修改密码计算余额计算余额 卡转帐用户密码 用户姓名 开户金额void YH:save()ofstream ofile(bankdat.dat,ios:out);/ ofstream outfile(bankdat.dat,ios:out);/ bankdat.dat 接收从内存输出的数据int n=0;outfileacnum ; for(n=0;nacnum;n+) outfileID ;/ outfilemoney ; outfilename ; outfilepasswd ; outfile.close();取得密码以输出方式
15、打开文件以输出方式打开文件把信息写入磁盘文件 bankdat.dat以输入方式打开文件/ 读入用户信息功能实现 / void YH:load() ifstream infile(bankdat.dat,ios:in);/ if(!infile) cerr 读取错误 , 无资料中 !acnum;for(n=0;nid;/ 从磁盘文件 bankdat.dat 读入信息 infilem;infilenam; infilepassw; accountn-passwd;consumer * acc = new consumer(id,nam,passw,m); / 每读入一个 n 开辟 一段内存acco
16、untn = acc; / 赋值首地址 infile.close();cout 读取资料正常 !endl;/ 转账功能实现 / void YH:transfer(int x) int id;.11.coutid;int flag = 1;int i = 0; while(iget_id() flag = 0; else i+; if(flag) cout 帐号不存在 !endlendl; return ;float b;coutendlb;while(b=0)cout 请输入正确的数字 !b;/ 调用友元类 consumer 的公有if(accountx-get_money()b) 成员函数c
17、out 对不起 , 金额不够 !dec_money(b);accounti-add_money(b);cout 转账成功 !money=accountx-money-y;float consumer:get_money()return money;void main()YH yh;yh.functionshow();/ 主界面显示 /void YH:functionshow()int n;dosystem(cls);load();coutendl 请输入相应的操作序号进行操作 :endl; coutendl;1. 开 户coutendl;coutendl;coutendl;coutendl;c
18、outendl;coutendl;coutendl;coutendl;coutn;while(n4)cout 操作错误,请输入正确的操作序号coutn;switch(n)case 1: set_account();/break;case 2:enter_account();/break;case 3: del_account();/break;case 4: exitYH();/break;cin.get();/while(true);H.开户登录注销退出输入流类 istream 的成员函数void YH:enter_account() int id;coutid;int flag = 1;i
19、nt i = 0;/_page_break2. 账3. 账4. 退!endl;登录注销系统.11.while(iget_id() flag = 0; else i+; if(flag)cout 帐号不存在 !endl; return;coutpassw;返回到登录界面if(passw!=accounti-get_passwd() return;/ accounti-display();cin.get();cin.get();int n; dosystem(cls);cout请选择下列操作:endl;coutendl;coutendl;cout1.查看账户信息endlcoutendl;cout2
20、.取款endl;coutendl;cout3.存款endl;coutendl;cout4.修改密码endl;coutendl;cout5.转账endl;coutendl;cout6.返回上一菜单endlcoutn; switch(n)case 1: accounti-display();break;从 2-5 功能,每执case 2: accounti-fetchmoney();save();break;/ 行一次调用一次 save 函数,重新写入数据case 3:accounti-savemoney();save();break; case 4:accounti-change_passwd(
21、);save();break; case 5:transfer(i);save();break;case 6:return; cin.get();cin.get(); while(1);void YH:set_account()int id; string nam; string passw; float m;coutid; coutnam;coutpassw;请输入开户号: endl;请输入开户人姓名: endl;请输入开户密码: endl;cout 请输入存入金额 :m;while(m=0)cout 请输入正确的数字 !m;consumer * acc = new consumer(id,
22、nam,passw,m); accountacnum = acc;cout 开户成功 !endlendl; acnum+;save();cin.get(); return;void YH:del_account()int id;coutendlid;int flag = 1;int i = 0;while(iget_id()flag = 0;elsei+; if(flag)cout 该帐号不存在,请重新输入 !endl;所有被删号后的数据重新存储return; / 返回到登陆界面 for(int j=i;jacnum;j+) /accountj = accountj+1; accountacn
23、um-1=NULL; acnum-; / 账号总数自减一次 cout 你的账号已注销 !endlendl;save();cin.get();return;void consumer:change_passwd()string pwd,repwd;coutpwd;coutrepwd; if(pwd!=repwd) cout 你输入的两次密码不一样 , 按输入键返回上一层菜单 !endl;elsecout 密码修改成功,请牢记 !endl;cin.get();void consumer:fetchmoney()float m;char ch;docoutvvendlvv输入取款金额:m;while
24、(m=0)cout 请输入正确的数字 !m;if(moneym)cout 对不起,你的余额不足 !endl;elsemoney=money-m;coutendl 操作成功,请收好钱 ! endl;cout 是否要继续该项操作: (Y/N) endl;coutch;选择错误时判定while(ch!=n&ch!=N&ch!=Y&ch!=y)/ coutch;while(ch=y|ch=Y);void consumer:savemoney()/ 存钱函数功能实现 float c;char ch;docoutvvendlvv请输入要存入的金额:c;while(c=0)cout 输入错误 , 请重新输入
25、 !c;money=money+c;cout 操作已成功 !endl;cout 是否要继续该项操作: (Y/N) endl;coutch;while(ch!=n&ch!=N&ch!=Y&ch!=y)coutch;while(ch=y|ch=Y);int YH:acnum=0;void consumer:display()/ 用户信息界面 system(cls);cout*endl;cout endl;cout用户姓名:cout endl;cout帐号:coutendl;cout余额:coutendl;nameendl;IDendl;moneyendl;cout按输入键回到上一菜单 endl;c
26、out endl;coutvv 7;void YH:exitYH()/ 退出系统coutendl 感谢您对本银行的支持 ,欢迎下次光临 ! :1Qor 3 or 1G :21111011*4-4 ueleone !?几一几数制转换系统* * -K*系*熱啖 *入岀 共进退4一4 ueleone ! *一 #*#*# 数制转换系统-M- * *2Wsms制 壽诈换 定入售 请清请需5D2B;馳鶴严 :w*#w*w*w*#w*芦*请选择:1av 8 or 10 叶 16 :16艮M想爭圧请输出所得的19进制的结果 n或2进制的结果:1011Ppess any key to continue六、源程
27、序一、栈#include #include #include #include #define STACK_INIT_SIZE 100 / 存储空间初始分配量int e,m,x,s,t; /x#define STACKINCREMENT 10 / 存储空间分配增量为要转换的十进制数, e 为临时用的的 int 型变量int r,y,i,n;typedef structint *base; /栈底int *top; /栈顶int stacksize; /栈容量SqStack;/ SqStack 定义栈,说明 base 为栈底指针, top 为栈顶指针, stacksize 为栈容量/ 一下为 i
28、nt InitStack(SqStack &S) 到 int DestroyStack(SqStack &S) 六大模 块分别表示构造一个空栈、用e表示栈元素、插入元素、删除元素、判断栈是否构造一个空栈为空以及摧毁栈;int InitStack(SqStack &S) /S.base=(int *)malloc(STACK_INIT_SIZE *sizeof(int);if(!S.base) exit(0); /存储空间失败S.top=S.base;S.stacksize=STACK_INIT_SIZE;return 0;int GetTop(SqStack S, int &e) /若栈不为空
29、,则用e返回S的栈顶元素,并返回 0,否则返回 1if(S.top=S.base) return 1;e=*(S.top-1);return 0;int Push(SqStack &S , int e)/插入元素 e 为新的栈顶元素if(S.top-S.base=S.stacksize) /栈满,追加存储空间S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int);if(!S.base) return 1 ; /存储分配失败S.top=S.base+S.stacksize;S.stacksize+=STACKIN
30、CREMENT;*S.top+=e;return 0;int Pop(SqStack &S, int &e) /若栈不空,则删除 S 的栈顶元素,用 e返回其值,并返回 0,否则返回if(S.top=S.base) return 1;e=*-S.top;return 0;int StackEmpty(SqStack S) /若栈空,则返回 1,否则返回 0if(S.top=S.base)return 1;return 0 ;int DestroyStack(SqStack &S)/销毁栈S,栈S不再存在free(S.base);S.top=NULL;/防止程序后面不小心使用了它S.base=S
31、.top;return 0 ;/ 以下 SqStack S 是指定义栈 SSqStack S;/定义栈 S/ 下面的 D2M(int a,int b)的功能是将十进制数转换成M进制的函数DtoM(int a,int b)/十进制转换成其他进制的函数 DtoM()while(a)r=a%b;if(r9)r=r+55;Push(S,r);/压入栈a/=b;/转换成M进制printf(该数转换成d进制的结果:,b);while(!StackEmpty(S)Pop(S,e); /弹出栈if(e=65)printf(%c,e);elseprintf(%d,e);/return 0;F面是M2D(),它的
32、功能是M进制转换为十进制的函数MtoD()/其他进制转换为十进制的函数 MtoD()char c1000;printf( 请输入需要转换的数的位数 :);scanf(%d,&n);printf( 请输入需要转换的数的每位并用空格隔开 :);for(i=0;in;i+)scanf(%x,&ci);Push(S,ci);i=0;while(!StackEmpty(S)Pop(S,e);y+=(int)pow(m,i)*e;i+;printf( 转换成 10 进制的结果是 :);printf(%d,y);return 0;/void main() 是主函数。其功能是输入需要测试的数据以及需要转换的进
33、制,并在特定情形下调用D2M()函数和M2D()函数,而且实现M进制数向任意非M进 制数的转换void main() int t;for(;)printf(tt* * * * * * 7 welcome ! 7 * * * * * * n);printf(tt数制转换系统n);printf(tt* * * * * * * *n);printf(ttn);printf(tt* * * * * * * *n);printf(tt*1.进入数制转换系统*n);printf(tt*2.退出该系统*n);printf(tt* * * * * * * *n);printf(tt请选择 (1 2):);lo
34、op:scanf(%d,&t);switch(t) case 1:InitStack(S); /构造一个空栈printf( 请输入需要转换的进制M(2or8or10or16):);scanf(%d,&m);if(m=10)/十进制转换成其他进制printf( 请给定一个需要转换的 10进制数 :);scanf(%d,&x);printf( 请输入需要转换成的进制数 :);scanf(%d,&t);DtoM(x,t);if(m=2|m=8|m=16)/其他进制转换成十进制, 且其他任意进制的相互转换MtoD();printf(n 给定要转换成的进制 M:);scanf(%d,&s);DtoM(y
35、,s);printf(n);DestroyStack(S); /销毁栈S,栈S不再存在break;case 2: exit(0);default: printf(输入有误 , 请重新选择 :);goto loop;printf(n);二、数组#include #include #include #include#define N 1000/ 以下为 DtoM(int g,int h)是实现十进制数转换为M进制数的函数,DtoM(int g,int h)int cN;int i=0;int j;int reminder;reminder=g%h;g=g/h;if(reminder9)ci=reminder+55;i+;e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全球供应链时效提升技术应用报告
- 学习者参与度提升策略-洞察与解读
- 基于智能合约的饲料防伪技术-洞察与解读
- 女辅警看护岗面试题及答案
- 内部培训宪法知识竞赛试题大全加解析答案
- 2025年教师思想作风整顿个人自查报告
- 2025年公需科目考试网络安全建设与网络社会治理试题库(含答案)
- 2025年山东青岛教师招聘美术学科往年试题及答案
- 高考历史满分试卷及答案
- 医疗器械顶岗试题带答案
- 《组织部新来了年轻人》优质课件
- 2022年高考真题-数学(新高考Ⅰ卷)+无答案
- 广州市天河区教育系统校园招聘(北京和武汉考点)笔试试题及答案2021
- 教科版科学三年级上册第一单元《水》单元作业设计
- 2022年湖州市安吉县辅警考试试卷真题
- 文化艺术培训学校申办材料38223知识分享
- 项目三拆装与维护台虎钳
- 核工业无损检测VTⅡ级-试题
- GB/T 3785.1-2023电声学声级计第1部分:规范
- 总糖和还原糖的测定及葡萄糖标准曲线的绘制-3,5-二硝基水杨酸法课件
- 木瓜蛋白酶提取实验PPT
评论
0/150
提交评论