ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:127.69KB ,
资源ID:6227901      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6227901.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(银行定期存储管理系统c++课程设计报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

银行定期存储管理系统c++课程设计报告.docx

1、银行定期存储管理系统c+课程设计报告课 程 设 计 报 告 课程名称:面向对象程序设计C+设计题目:银行定期存储管理系统专 业:计算机科学与技术姓 名:张洋学 号:20130516189指导教师:李 晓 虹2015 年 1 月 10 日1、系统需求分析 我编写的是银行定期存储管理系统。用户资料的组成部分为:开户时间、姓名、性别、身份证号、家庭住址、卡号、密码等。此管理系统主要利用类和文件实现,完成的功能主要有如下八大功能模块组成。1.1登陆 该模块主要通过保存用户键盘输入的账号,查找用户.txt文件来确定是否存在改账户。确定账户存在后,打开用户资料文件夹下对应的文件,来读取密码,确定密码是否正

2、确。当全部核对正确后则登陆。1.2开户 该模块通过在屏幕上的文字提示,提醒客户来输入信息,然后把用户输入的信息记录下来,写入用户资料文件夹里的.txt文件,把系统随机生成的卡号作为该文件名。并把卡号写入用户.txt文件。然后创建近期明细和用户信息文档。并且在申请开户.txt文件内写入卡号,提交内部系统来处理。1.3查询 该模块完成用户查看用户信息、用户资料、近期明细三个文件的查询。此模块比较简单,通过文件逐行读入,然后输出到屏幕上。值得注意的是,这里由于不同函数参数类型的需要,我们使用了多次类型转换。并且,由于用户资料里有用户密码,所以我们通过strstr函数找到密码字段,然后循环contin

3、ue,不把密码输出到屏幕。1.4转账该模块比较复杂,大体设计是用户1输入要转到用户2的卡号、金额,若余额不足则转账失败,若余额充足,我们则修改用户信息里余额这一字段的数额。关于修改这里,我们通过getline函数把文件逐行读入,通过strstr来查找字符串“余额:”所在的位置,然后修改后面的金额。要注意的是,用户资料文件里有包含时间,所以不能把时间修改了,要把时间这一行的字符串跳过。接下来就是修改近期明细文件,这一方面比较简单,把卡号,金额写入文件里即可。1.5销户这里是要用户确认是否销户,若确定,我们则把该卡号写入申请销户.txt文件,提交内部系统来处理。1.6计算利率 在用户登录并确认其身

4、份后,调用计算利率函数,计算申请时间与当前时间的时间差,再根据利率和余额计算每天的利率,最后改变当前余额的值,修改用户信息里的相关值。1.7内部处理开户申请我们通过读入申请开户.txt文件,然后来让内部人员决定是否同意该用户开户。若同意则不做任何处理,若不同意则通过dos命令删除该用户开户时创立的所有文件。1.8内部处理销户申请销户申请和开户申请类似,只不过是同意销户的时候用dos命令删除用户的所有文件,不同意不做任何处理。2总体设计2.1框架结构图图2- 12.2对各种类的定义以及类内的成员方法以及属性的定义在该程序中一共有四个类class Bank、class Date、class Acc

5、ount、class Administrator,四个类分别对应四种不同的功能。 对于Bank类而言,在Bank类中实现的整个程序中最重要的一部分,可以说是整个系统的主体,里边包括了账号account_ID、姓名name、性别sex、住址address、密码password、余额money、利率rate、创建时间builtYears、存储至哪一年totalYears等属性,每一个都是用string类型进行存储的,因为每个长短不同,具体实现的时候会进行格式转换。还有包括了开户void add_Account(Bank* bank)、销户void delete_Account(Bank* bank

6、,Administrator *admin)、查找void inquiry_bank(Administrator *admin,Bank *bank)、显示信息void show_bank(Bank* bank)、存款void save_money(Administrator *admin,Bank *bank)、取款void draw_money(Administrator *admin,Bank *bank)、计算利率void comculat_Rate(Bank *bank,Administrator *admin)等方法,含括了基本上所有的账户操作,其中的开户和销户进行操作的时候会进行

7、内部处理。而且所有的文件都是存储到.txt的项目源文件夹下的,方便程序员查看每一步的操作。其中在属性中有一个建立日期builtYears和存储至哪一年totalYears都是Date-类的对象。 Date类的定义以及其中的类的属性了成员方法的定义,Date类包含了年year、月month、日day、时h、分m、秒s等成员属性,因为这些属性都占用字节比较小,所以基本上都用的是int作为数据类型进行操作的,该类算是以Bank类为主题的辅助Bank类的一个辅助类,用于获取系统当前时间以及输入要存储的年份的时候使用其类的属性进行变量辅助。其中的方法都是返回一个日期的相关量的,有一个计算年差的方法int

8、 distance(const Date& date)const是为了辅助Bank类中计算利率的时候用的。在用户类中,主要是为了用户登录使用的一个进入系统的用户类,可以说是一个周转站用于进行Bank类中的方法进行的入口类。3、详细设计在银行定期存储管理系统中,我负责的是系统时间的调用和开户模块。3.1.系统时间的调用(1)设计思路:首先创建一个Date类,私有成员为日期的具体日 期,成员函数的作用是获取具体年、月、日、时、分、秒、星期几。 isLeapYear()函数是判断是否为闰年; Distance()函数是计算时间 差的函数,为当前日期减去公元一月一日的日期差。 time_t curti

9、me=time(0);tm tim =*localtime(&curtime);tm其实是一 个结构体,里面有时间的信息。年月日时分秒,相关信息可以自行查看。 由于time_t类型的数据其实是一个unsigned的数字,不能区分出时分 时分秒年月日。Localtime这个函数就是将time_t的数据转换成tm这 样的结构体,这样做是为了更好地当前时间的年月日时分秒。(2)相关代码: #includeBank.h #ifndef _DATE_H_ #define _DATE_H_ class Date friend class Bank; private: int year;/年 int mon

10、th;/月 int day;/日 int h;/时 int m;/分 int s;/秒 int dayOfWeek;/星期几 int totalDays;/公元元年一月一日开始的第几天 public: Date(); int getMaxDay() const;/获得当月一共有多少天 int getYear() constreturn year; int getMonth() constreturn month; int getDay() constreturn day; int getS() constreturn s; int getM() constreturn m; int getH(

11、) constreturn h; int getDOW() constreturn dayOfWeek; /判断是否为闰年 bool isLeapYear()const return year%4=0&year%100!=0|year%400=0; /计算日期差 int distance(const Date& date)const return totalDays-date.totalDays; void show() const; ; #endif #includeDate.h #include #include using namespace std; /int Date:totalDa

12、ys=0;/总天数设定为0 /获取系统的日期时间 namespace /存储木平年的某个月1日之前有多少天 constintDAYS_BEFORE_MONTH=0,31,59,90,120,151,181,212,243,27 3,304,334,365; Date:Date() time_t curtime=time(0); tm tim =*localtime(&curtime); day=tim.tm_mday; month=tim.tm_mon+1; year=tim.tm_year+1900; h=tim.tm_hour; m=tim.tm_min; s=tim.tm_sec; da

13、yOfWeek=tim.tm_wday; int years=year-1; totalDays=years*365+years/4-years/100+years/400+DAYS_BEFORE_MO NTHmonth-1+day; if(isLeapYear()&month2) totalDays+; void Date:show() const coutgetYear()-getMonth()-getDay() getH()时getM()分getS()秒endl; 3.2开户模块(1)设计思路:该模块通过在屏幕上的文字提示,提醒客户来输入信息,然后 把用户输入的信息记录下来,写入用户资料

14、文件夹里的.txt文件,把系统 随机生成的卡号作为该文件名。并把卡号写入用户.txt文件。然后创建近 期明细和用户信息文档。并且在申请开户.txt文件内写入卡号,提交内部 系统来处理。开户成功系统会自动输出“1305104+随机4位”的银行卡号, 银行卡号以及用户信息都会写入用户资料文档中。(2)相关代码: /新建用户 void Bank:add_Account(Bank *bank) system(cls);/清屏函数 string password_copy; couttt-请输入个人信息:-endl; coutbank-name; coutbank-sex; coutbank-ID; c

15、outbank-address; coutbank-password; while(bank-password.length()!=6) coutbank-password; coutpassword_copy; if(bank-password!=password_copy) while(bank-password!=password_copy) coutpassword_copy; srand(time(0);/设置随机数种子 long num_=(rand()%9000+1000);/随机后四位的账号 char num5; itoa(num_,num,10);/数字转换字符数组 stri

16、ng str=num;/字符数组转换字符串 bank-account_ID=1305104; bank-account_ID.append(num);/最后几位存入到卡号中 cout用户创建成功!endl; for(int i=0;i10;i+) cout|; _sleep(0.5*1000);/每次延迟0.5秒 相关函数解释:srand(time(0);就是给这个算法一个启动种子,也就是算法的随机种子数,有这个数以后才可以产生随机数。itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数,代码中是将数字转换为字符数组。

17、std:stringstream sfile; sfile用户资料; sfileaccount_ID; sfile.txt; std:string strfile=sfile.str(); /创建用户的资料文档,写入相关数据 std:stringstream sfile_1;/创建字符串输出流 sfile_1用户信息; sfile_1account_ID; sfile_1.txt; std:string strfile_1=sfile_1.str();/返回输出流生成的字符串 ofstream f_2in(strfile_1.c_str(); /创建近期明细文档 std:stringstrea

18、m sfile_2;/创建字符串输出流 sfile_2近期明细; sfile_2account_ID; sfile_2.txt; std:string strfile_2=sfile_2.str();/返回输出流生成的字符串 ofstream f_3in(strfile_2.c_str(); f_3in.close(); /将银行卡账号写入总文档中 ofstream fin; fin.open(用户.txt,ios_base:app);/打开文档并输入到末尾 finaccount_IDendl; fin.close(); 以上代码是用C+流的输入输出来创建用户资料,用户信息,近期明细3个文件夹

19、。用户资料用来存储姓名,性别,身份证号,住址,密码这些个人信息。用户信息和近期明细两个文件的创建方法与用户资料是一样的。用户信息用来存储银行卡余额及存入时间。近期明细存储用户近期银行卡收入支出情况。std:stringstream sfile;是创建字符串输出流的一个对象sfile,将3个类型不同的字符串合并,返回输出流生成的字符串。然后生成.TXT文档,3个文档的创建方法相同。4、系统调试4.1问题一:如何读取当前的系统时间? 解决方法:查找资料找到time_t curtime=time(0);相关代码并解决。 问题二:一些函数的参数类型不同,如何统一? 解决方法:强制类型转换,例如学会了i

20、toa函数的使用方法。 问题三:如何使用C+流的输入输出来读取文件,保存数据? 解决方法:std:stringstream sfile;创建字符串输出流,把3个不同的 字符串合并一起,最后返回输出流生成的字符串。便可创建一个.txt文档, 用来保存用户个人信息。4.2屏幕截图 图4-2- 1图4-2- 2图4-2- 35、结果分析该课程设计的目的采用面向对象的程序设计语言,开发实现一个应用程序,学生更好的掌握面向对象程序设计语言及其开发工具,掌握如何使用面向对象的程序设计语言设计一个小的软件系统。通过该课程设计培养学生分析和解决实际问题的能力,培养学生综合应用基本概念,基本原理,和技术方法的能

21、力,真正做到学以致用,使课本上抽象的理论,方法与具体的实践应用相结合。6、结论与体会这次的课程设计实验是对我们C+语言学习成果的一次大考验。自己动手,发现问题和解决问题。并发现了许多自己的不足,平时没掌握的知识在实践中暴漏,经过不断的思考,查阅书籍和上网查资料及上机运行,解决了大部分问题,还稍微有些小问题。但是,我相信在今后的学习中,一定能把它解决好。 整理后进行综合应用,最后对所需资料及要编的程序进行整理得出最后程序。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1