




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(芙蓉学院)(芙蓉学院) 软件工程 实验报告课 题: 银行储蓄管理系统 姓 名: 谭 斌 学 号: 07120115 同组姓名: 专业班级: 芙蓉计科0701 指导教师: 周学清 设计时间: 2011/3/20 评阅意见:评定成绩: 指导老师签名: 年 月 日银行储蓄管理系统目录1 需求分析11 系统的功能性需求12 系统需求分析规格说明书13 系统实体联系(ER)图14 系统数据流(DFD)图15 系统数据字典16 面向数据流的设计方法1 需求分析系统中要求每个人银行管理者都有一个系统帐号,并每个帐号都有密码,系统的一切操作(如:增加存储用户,提高利率等)都由管理者执行,而不是由存诸用户执行,也主是说存储用户并不直接与系统交互,而是通过管理员与系统交互。该系统主要有两部份业务功能,存款与取款。储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名,住址(或电话号码),身份证号码,存款类型,存款日期,到期日期,利率及密码(可选)等信息,并打印存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算得利息并打印出利息清单给储户。11系统的功能性需求 系统为管理者提供主功能界面 系统在启动时要求管理者输入登录帐号与密码 系统要通过管理员执行一系操作(如:添加用户,修改,查询,删除等) 管理员代用户实现存款,取款,查询等操作 储户的一切信息,存储在数据库表中12系统需求分析规格说明书l 实现储户开户登记l 办理定期存款帐l 办理定期存款手续l 办理活期取款帐l 办理活期取款手续l 实现利息计算l 输出明细表l 数据备份和数据恢复功能l 查看帐户信息1.3系统ER图系统主要关系模式:1 储户(储户姓名,住址,身份证号码)2 管理员(员工号,姓名)3 存款(储户姓名,员工号,金额,存款类型,到期日期,存款日期)4 查询(储户姓名,员工号)5 取款(储户姓名,员工号,金额,取款日期)住址身份证号码姓名储户1 1金额存款类型到期日期存款日期查询存款取款 n金额 n n取款日期管理员 打印存单打印清单系统查询存款取款 n n n姓名清单信息员工号金额 n n n取款日期存款类型到期日期金额存款日期 1 1 11 11 5系统顶层数据流(DFD)图 打印存单 开户系统用户业务员 取款 存款 存款 查询 取款 打印清单16系统0层数据流(DFD)图8打印存单 打印存单 储户信息文件 存取款信息变动 密码错误 读取储户信息5验证 1开户 保存新用户信息2存款 密码正确2存款3取款3取款系统业务员储户4查询6计算利息 7打印清单 利息清单17第2层DFD图 储户信息文件 核对错误 读取信息22信息核对 存款填写存款信息 核对信息21提交存款单 核对 正确23信息输入系统24打印存单 打印 18第3层数据流图 储户信息文件 核对错误 读取信息32信息核对 更新储户信息31提交取款单填写取款信息 核对信息 核对正确34打印清单33信息输入系统 打印 取款 19第5层数据流图 储户信息文件52身份验证51注册新用户信息 存储信息 取款信息 取款通知 存款信息 存款通知 查询信息 显示信息 验证错误110数据字典数据名字:注册申请表数据来源:储户数据目的:储户信息数据组成:姓名+密码+住址+身份证号码数据名字:储户信息表数据来源:储户数据目的:身份验证数据组成:姓名+密码+住址+身份证号码+现有金额数据名字:利息清单数据来源:系统数据目的:储户数据组成:利息+姓名+取款时间+取款金额数据名字:存单数据来源:存款信息表数据目的:储户数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额 数据名字:取款单数据来源:储户 数据目的:储户信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+取款金额+身份证号数据名字:存款单数据目的: 存款信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额+身份证号1.61确定输入流和输出流的边界,从而孤立出变换中心。如图:1.1 图1.11.6.2完成“第一级分解”基于书上第三章第三题实现在银行储蓄管理系统在一级分解中,可将系统分解成三个子功能模块:用户操作,业务员操作,系统输出。如下图所示:银行存储管理系统用户操作系统输出 业务员操作1.6.3完成“第二级分解” 用户操作的分解可将用户操作分解为:开户民,存款,取款,查询。如下图所示:用户操作开户存款取款查询提交用户申请表提交存款单提交用户申请表提交用户查询表业务员操作的分解业务员的操作是将用户的操作传送给系统,代替用户与系统交互,所以,业务员的操作与系统的操作基本类似,也可以近似地将业务员看作用户。所以操作员操作可分解为:开户,存款,取款,查询并且如用户在开户时设有密码,则进行密码验证。所以分解图如下:业务员操作查询取款存款开户密码验证提交用户申请表提交存款单提交用户申请表提交用户查询表 系统输出分解系统输出可分解为:计算利息-打印清单,保存新用户信息,更新用户信息,打印存单分解图如下:系统输出计算利息保存新用户信息更新用户信 息打印存单打印清单1.64使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。由于业务员的操作与用户的操作基本相似,可以简单化地认为系统只与业务员交互,基于这个思想,将有利与简化以后系统程序的设计与开发。精化图如下:业务员操作银行存储管理系统用户操作系统输出查询取款存款开户计算利息打印存单更新用户信息保存新用户信息密码验证提交用户查询表提交取款单提交存款单提交用户申请表打印清单银行储蓄管理系统实验项目:银行储蓄实验项目一、银行储蓄系统主菜单模块设计与实现11库函数描述(原型、功能、头部文件)及其作用Time显示当前时间类 #includeSystem()调用dos命令 _sleep()停息#includeString 字符串流#include#includemyheader.h中有调用的全部函数声明12编码(必须附加注释)#includemyheader.hvoid main()/背景颜色设置system(COLOR 16);/*颜色属性由两个十六进制数字指定 - 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一: 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 A = 淡绿色 3 = 湖蓝色 B = 淡浅绿色 4 = 红色 C = 淡红色 5 = 紫色 D = 淡紫色 6 = 黄色 E = 淡黄色 7 = 白色 F = 亮白色*/输出=欢迎进入银行活期存款系统=int i;for(i=0;i13;i+)cout=;cout欢迎进入银行活期存款系统;for(i=0;i13;i+)cout=;coutendl;/列示当前时间cout当前时间:;for(i=0;i6;i+)cout ;Time t=latesttime();t.print();/列示菜单mylist();coutcheck;if(check.length()1)cout您的输入有误请重新输入:;continue;if(check0!=Y&check0!=N)cout您的输入有误请重新输入:;elsebreak;int mark=1;if(check0=N)mark=0;cout友情提示:按对应业务的编号即可进行该业务!endl请继续:2)system(cls);mylist();if(mark)coutservicenum;if(servicenum.length()1)cout您的输入有误请重新输入:;continue;elsebreak;coutmark;if(mark.length()1)cout您的输入有误请重新输入:;continue;if(mark0!=Y&mark0!=N)cout您的输入有误请重新输入:;elsebreak;if(mark0=N)continue;if(servicenum0=0)break;cout 正在处理请稍等.;_sleep(1000);cout.;_sleep(1000);cout.n;_sleep(1000);switch(servicenum0)/开户case 1: creaccount();break;/存款case 2: deposit();break;/取款case 3: withdraw();break;/计息case 4: computeprofit();break;/查询case 5: checkbalance();break;/排序case 6: order();break;/系统介绍case 7: about(); break;default: cout对不起,您的选择超出了我们的业务范围。endl;cout交易完毕,谢谢合作!endl;13 mylist.Cpp 主函数显示菜单void mylist()int i;for(i=0;i11;i+)cout ;cout*主菜单*endl;for(i=0;i12;i+)cout ;coutendl;for(i=0;i12;i+)cout ;cout0.退出 endl;for(i=0;i12;i+)cout ;cout1.开户 endl;for(i=0;i12;i+)cout ;cout2.存款 endl;for(i=0;i12;i+)cout ;cout3.取款 endl;for(i=0;i12;i+)cout ;cout4.计息 endl;for(i=0;i12;i+)cout ;cout5.查询 endl;for(i=0;i12;i+)cout ;cout6.排序 endl;for(i=0;i12;i+)cout ;cout7.关于 endl;for(i=0;i12;i+)cout ;coutendl;void about()cout银行活期存款系统 作者:张瑞endl;cout该系统严格按照国际银行活期存款规则编写,endl;cout如果您什么不懂,请在第一步操作中输入N.endl;cout注意:请按照提示进行操作.否则后果自负!endl;cout版权所有,打击盗版!endl;over();return;14实验小结(实验遇到的问题,解决方法)1.调用外部函数时光简单声明不行 必需加个外部修饰extern2.也可调用外部变量 同样用extern3.把定义的函数都放到myheader.H的头文件中声明实验项目二、银行储蓄系统开户模块设计与实现21库函数描述(原型、功能、头部文件)及其作用#include/c+的标准输入输出#include/c的库函数#include/字符串流#include/getch()键盘输入屏幕不输出#include/STL中的迭代器#include /messagebox()消息框#include/时间类的头文件#include/c标准输入输出和文件流using namespace std;22帐户类定义#includemyheader.h/帐号类是定义在myhead.H头文件里class Timepublic:int year,month,day,hour,minute,second;Time(int a=0,int b=0,int c=0,int d=0,int e=0,int f=0):year(a),month(b),day(c),hour(d),minute(e),second(f)void print()coutyear年month月day日hour时minute分second秒endl;void print1()coutyear年month月day日hour时minute分secondt.year)ct=(year-t.year-1)*360+(month-t.month+11)*30+day+30-t.day;else ct=(month-t.month-1)*30+day+30-t.day;return ct;void copy(Time f)/时间拷贝year=f.year;month=f.month;day=f.day;hour=f.hour;minute=f.minute;second=f.second;/判断时间是否大bool timebig(Time t)if(yeart.year)return false;else if(yeart.month)return false;else if(montht.day)return false;else if(dayt.hour)return false;else if(hourt.minute)return false;else if(minutet.second)return false;else if(secondt.second)return true;else return true;elsereturn true;elsereturn true;elsereturn true;return true;/检查输入的字符产是否全是数字bool checknum(const char*);/重载比较函数int strcmp(const char*s1,const char*s2);/钱数大些函数声明void readmoney(char*);/定义帐号类class Account public:char name20,ID20,balance15,code10;Time time;Account(const char* a=,const char* b=,const char* c=,const char* d=,Time e=Time(0,0,0,0,0,0)strcpy(name,a);strcpy(ID,b);strcpy(code,c);strcpy(balance,d);time=e;void print1()int i;for(i=0;i30;i+)cout;coutendl;cout姓名: nameendl;cout身份证号: IDendl;cout余额: balanceendl;cout余额大写: ;readmoney(balance);cout开户时间: ;time.print();void print2()int i;for(i=0;i30;i+)cout;coutendl;cout姓名: nameendl;cout身份证号: IDendl;cout余额: balanceendl;cout余额大写: ;readmoney(balance);cout上次计息时间(开户时间): ;time.print();class Rempublic:char ID20,money10;int flag;Time t;Rem(char*a=,char*b=,int c=0,Time d=Time(0,0,0,0,0,0)strcpy(ID,a);strcpy(money,b);flag=c;t=d;void print()if(flag=0)t.print1();cout 取款money元endl;if(flag=1)t.print1();cout 存款money元endl;/菜单void mylist();/开户void creaccount();/存款void deposit();/取款void revisecode();/计息void computeprofit();/查询void checkbalance();/排序色void creatcolor();/关于系统介绍void about();/大写读取金额void readmoney(char* s);/重载比较函数int strcmp(const char* s1,const char*s2);/结束void over();/求两字符串之和void plus(char*s1,char*s2);/求两字符串之差void minus(char* s1,char* s2);/将字符串倒置void opposition(char * s);/检查输入的金额是否合法并对其进行规范性修改bool checkmoney(char*s);/计算利息专用bool jixi(Account& a);/校验身份证号是否正确bool checkID(const char* s);/检查所输入的身份证号是否已开过户,开过户返回true,未开过返回falsebool finID(const char* s);/获取当前时间的time函数Time latesttime();/移位void change(char*ch);/输出备忘录void output(const char * s);23编码(必须附加注释)#includemyheader.hvoid creaccount()/开户cout欢迎您在此开户endl;char ID20=;/检查该身份证号是否符合中华人民共和国身份证号码的编制规则while(1)cout请输入您的身份证号: ID;if(checkID(ID)break;elsecout您的输入有误请重新输入您的身份证号:endl;/检查是否在此开过户if(finID(ID)cout您已在次开过户。endl;over();return;cout请输入您的姓名:name;if(name.length()8)cout您的输入有误,请重新输入。endl;elsebreak;const char*copyname=name.c_str();/name的首地址 且必须是const只读的cout请输入您的密码:endl;cout注意:密码更正每人只有三次机会,密码只有六位。endl;char cod7=,flag=0;/计数while(1)if(flag)if(flag=3)break;cout您的密码输入有误,;int i;cout请输入密码:endl;for(i=0;i6;i+)codi=getch();cout*;MessageBox(0,密码位数已足,提示,MB_OK | MB_SYSTEMMODAL );coutendl;cout请确认一下密码:endl;char copycod7=;for(i=0;i6;i+)copycodi=getch();cout*;MessageBox(0,密码位数已足,提示,0);coutendl;if(strcmp(cod,copycod)!=0)flag+;continue;elseMessageBox(0,恭喜!密码输入成功!,提示,0);break;cout请输入您的开户金额:money;if(checkmoney(money)break;elsecout您的输入有误,请重新输入:endl;FILE *fp;fp=fopen(D:mybank,a);Time t=latesttime();Account temp(copyname,ID,cod,money,t);fwrite(&temp,sizeof(Account),1,fp);fclose(fp);MessageBox(0,恭喜您!在次开户成功!,提示,0);int jx=MessageBox(0,您是否要查看一下您的信息?,提示,1)-2;if(jx)temp.print1();over();return;4实验小结(实验遇到的问题,解决方法)1. 在getch()前有时要加入cin.get()防止上次输入被getch()获取2. 对密码和帐号输入后要在数组最后加个“”防止数组错误3. 对打开文件是 有时用绝对路径表示实验项目三银行储蓄系统存款模块设计与实现31库函数描述(原型、功能、头部文件)及其作用#include/c的标准输入输出和文件流#include/massagebox()消息框的头文件#include myheaer.h/全部调用函数#include/getch()从控制台读取一个字符,但不显示在屏幕上32编码(必须附加注释)#includemyheader.H/存款void deposit()FILE*fp;fp=fopen(D:mybank,r);if(fp=NULL)cout您尚未在此开户!endl;over();return;fclose(fp);cout=欢迎进入存款模块=endl;cout请输入您的身份证号:ID;if(checkID(ID)if(finID(ID)break;elsecout您尚未在此开户!endl;over();return;elsecout您的输入有误,请重新输入您的身份证号:endl;coutmoney;if(checkmoney(money)break;elsecout您的输入有误,请重新输入:endl;fp=fopen(D:mybank,r+a);while(!feof(fp)Account temp;fread(&temp,sizeof(Account),1,fp);if(strcmp(temp.ID,ID)=0)fseek(fp,-sizeof(Account)-1,SEEK_CUR);plus(temp.balance,money);fwrite(&temp,sizeof(Account),1,fp);break;fclose(fp);Rem r(ID,money,1,latesttime();/把ID、钱、存款、最后时间写入 类中FILE* cfp=fopen(D:myout,ab);fwrite(&r,sizeof(Rem),1,cfp);fclose(cfp);MessageBox(0,恭喜您存款成功!,温馨提示,MB_OK | MB_SYSTEMMODAL );over();return;33实验小结(实验遇到的问题,解决方法)1. 在帐号密码判断时 用了feof()是判断文件是否结束 并每次读取判断直到文件结束或找到并正确实验项目四银行储蓄系统取款模块设计与实现41库函数描述(原型、功能、头部文件)及其作用#include/c+标准输入输出#include/c的标准输入输出#include/massagebox()以警告框显示#include myhead.h/全部调用函数#include/getch()从控制台读取一个字符,但不显示在屏幕上42编码(必须附加注释)#includemyheader.H/取款void withdraw()FILE*fp;fp=fopen(D:mybank,rb);if(fp=NULL)cout您尚未在此开户!endl;over();return;cout=欢迎进入取款模块=endl;cout请输入您的身份证号:ID;if(checkID(ID)break;elsecout您的输入有误,请重新输入您的身份证号:endl;if(!finID(ID)cout您尚未在此开户!endl;over();return;char code10=;while(1)cout请输入您的密码:endl;int i;for(i=0;i6;i+)codei=getch();cout*;MessageBox(0,密码位数已足,提示,MB_OK | MB_SYSTEMMODAL );coutendl;string choose;cout确认请按1,否则请按0,请选择:choose;if(choose.length()1|choose0!=0&choose0!=1)cout您的确认输入您的输入有误,请重新输入:endl;continue;elsebreak;if(choose0=0)continue;if(choose0=1)break;coutmoney;if(checkmoney(money)break;elsecout您的输入有误,请重新输入:end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高压成套设备装配配线工标准化作业指导书执行考核试卷及答案
- 2025年泰和县上圯水厂面向社会公开招聘考前自测高频考点模拟试题参考答案详解
- 2025年4月四川护理职业学院编外人员招聘14人考前自测高频考点模拟试题及答案详解(有一套)
- Peptide-P2-2-生命科学试剂-MCE
- pCR8-生命科学试剂-MCE
- 2025年福建省泉州市华侨大学分析测试中心招聘考前自测高频考点模拟试题附答案详解(突破训练)
- Ostruthol-生命科学试剂-MCE
- 2025河南新乡事业单位招录203人模拟试卷及答案详解(网校专用)
- 联考江苏历史试卷及答案
- 2025年中医妇科杂病常见病症诊断技巧试卷
- 吉林省吉林油田第十二中学2024-2025学年九年级上学期期末质量检测英语试题(含答案无听力音频及原文)
- 中药硬膏热贴敷治疗
- 经济与社会 思维导图式复习课件高中政治统编版必修二经济与社会
- 金融体系培训
- 变频器基础知识培训
- 湘教版(2024)七年级上册地理第二章 认识地球 测试卷(含答案)
- 我爱你中国 女声领唱与混声四部合唱谱
- 智慧树知到《星期音乐会(同济大学)》章节测试答案
- 联合体施工协议书
- 居家无障碍知识讲座
- 照片档案整理规范
评论
0/150
提交评论