高级语言课程设计-银行储蓄系统.doc_第1页
高级语言课程设计-银行储蓄系统.doc_第2页
高级语言课程设计-银行储蓄系统.doc_第3页
高级语言课程设计-银行储蓄系统.doc_第4页
高级语言课程设计-银行储蓄系统.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机与信息工程学院实验报告课程名称:高级语言课程设计实验项目:银行储蓄学 号:080432053姓 名: 专 业:网络系统管理年级、班级:08级8班教师姓名:报告完成时间:2010年6月15日实验报告成绩 实验项目一、银行储蓄系统主菜单模块设计与实现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您的输入有误,请重新输入:endl;fp=fopen(d:mybank,r+a);if(fp=null)cout您尚未在此建立帐户!endl;over();int flag1=0,flag2=0;account temp;while(!feof(fp)fread(&temp,sizeof(account),1,fp);if(strcmp(temp.id,id)=0)flag1=1;if(flag1=1&strcmp(temp.code,code)=0)flag2=1;if(flag1=1&flag2=0)cout您的密码不正确,您无权进行此操作!endl;over();return;if(flag1=1&flag2=1)fseek(fp,-sizeof(account)-1,seek_cur);if(strcmp(temp.balance,money)=-1)cout您的余额已不足!endl;break;minus(temp.balance,money);fwrite(&temp,sizeof(account),1,fp);break;flag1=0;fclose(fp);rem r(id,money,0,latesttime();file* cfp=fopen(d:myout,ab);fwrite(&r,sizeof(rem),1,cfp);fclose(cfp);messagebox(0,您已取款成功!,温馨提示,0);over();return;43实验小结(实验遇到的问题,解决方法)1. 取款模块与取款相差无几实验项目五银行储蓄系统计息模块设计与实现51库函数描述(原型、功能、头部文件)及其作用#include/c+标准输入输出#include/c的标准输入输出#include/messagebox()消息框#include/getch()从控制台读取一个字符,但不显示在屏幕上#includemyhead.h/zh类52编码(必须附加注释)#includemyheader.h/计息void computeprofit()file*fp;fp=fopen(d:mybank,r);if(fp=null)cout尚无储户!endl;over();return;fclose(fp);cout=欢迎进入计息模块=endl;cout本行超高利率10%.endl;int sum=0,num=0,i,j;fp=fopen(d:mybank,r);account temp;while(!feof(fp)fread(&temp,sizeof(account),1,fp);num+;num-;fclose(fp);for(i=0;inum;i+)fp=fopen(d:mybank,r+a);for(j=0;jnum;j+)fread(&temp,sizeof(account),1,fp);time t=latesttime();int time=t.ishalfyear(temp.time)/30;if(time6)continue;fseek(fp,-sizeof(account)-1,seek_cur);if(!jixi(temp)sum+;fwrite(&temp,sizeof(account),1,fp);break;fclose(fp);cout本次计息帐户sum个endl;messagebox(0,计息完毕!,温馨提示,mb_ok | mb_systemmodal );over();return;53实验小结(实验遇到的问题,解决方法)1.这里是边读取文件帐号信息并判断和计息实验项目六银行储蓄系统查询模块设计与实现61库函数描述(原型、功能、头部文件)#include/c+标准输入输出#include/c库文件#include/getch()从控制台读取一个字符,但不显示在屏幕上#includemyhead.h/zh类定义#include/c标准输入输出#include/string 字符串流 strcmp()比较两参数是否相等62编码(必须附加注释)#includemyheader.hvoid checkbalance()file*fp;fp=fopen(d:mybank,r);if(fp=null)cout尚无储户,文件为空!endl;over();return;fclose(fp);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;account temp;fp=fopen(d:mybank,r);while(!feof(fp)fread(&temp,sizeof(account),1,fp);if(strcmp(temp.id,id)=0)if(strcmp(temp.code,code)=0)temp.print2();output(temp.id);break;cout您的密码输入与帐户不对应!endl;break;fclose(fp);over();return;63实验小结(实验遇到的问题,解决方法)1. 这里大量用了string注意其开始也是0 且貌似字符串数组2. string中 有大量的属性函数 可以调用 实验项目七 银行储蓄系统富豪排行榜模块设计与实现71库函数描述(原型、功能、头部文件)及其作用#include/c+的标准输入输出#include/c的库文件#include/getch()从控制台读取一个字符,但不显示在屏幕上#includemyhead.h/全部调用函数的声明和账户类的定义#include/字符串#include/c的标准输入输出#include/vector data; 是迭代器 帐号类容器72编码(必须附加注释)#includemyheader.hvoid order()file*fp;fp=fopen(d:mybank,r);if(fp=null)cout此时尚无帐户在此建立!endl;over();return;fclose(fp);cout欢迎进入排序模块,很乐意为您服务!endl;/排序标准种类cout*endl;cout 1-按身份证号排序:endl;cout 2-按余额大小排序:endl;cout 3-按时间先后排序:endl;cout请选择对应序号:s;if(s.length()1)cout您的输入有误请重新输入: endl;continue;command=s0;if(command!=1&command!=2&command!=3)continue;elsebreak;/从文件中读入数据以备排序vector data;account temp;fp=fopen(d:mybank,r);while(!feof(fp)fread(&temp,sizeof(account),1,fp);data.push_back(temp);/最后一个数据会被重复读入所以要删一个最后的数据data.pop_back();/函数删除末尾元素int i,j;/按身份证小的顺序排序if(command=1)for(i=0;idata.size();i+)bool good=true;for(j=0;jdata.size()-i-1;j+)if(strcmp(dataj.id,dataj+1.id)=-1)good=false;swap(dataj,dataj+1);/交换if(good)break;/按余额由大到小的顺序排序if(command=2)for(i=0;idata.size();i+)bool good=true;for(j=0;jdata.size()-i-1;j+)if(strcmp(dataj.balance,dataj+1.balance)=-1)good=false;swap(dataj,dataj+1);/交换if(good)break;/按时间顺序先后排序if(command=3)for(i=0;idata.size();i+)bool good=true;for(j=0;jdata.size()-i-1;j+)if(!dataj.time.timebig(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论