个人银行管理系统C课设2_第1页
个人银行管理系统C课设2_第2页
个人银行管理系统C课设2_第3页
个人银行管理系统C课设2_第4页
个人银行管理系统C课设2_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、辽 宁 工 业 大 学C+语言程序设计课程设计(论文)题目: 个人银行管理系统 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间:2011.12.12-2011.12.25课程设计(论文)任务及评语院(系): 教研室:软件教研室学 号学生姓名专业班级课程设计(论文)题目个人银行管理系统课程设计(论文)任务程序设计的任务与要求:(1). 掌握面向对象程序设计语言C+的基本语法(2). 掌握C+面向对象设计的思想(3). 掌握VC+6.0与DEV C+ 开发工具的使用 (4). 运用标准C+规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确

2、地完成上述内容,规范完整地撰写出设计报告。指导教师评语及成绩 成绩: 指导教师签字: 年 月 日 目 录第1章 课程设计目的与要求11.1 设计目的11.2实验环境11.3预备知识11.4设计要求1第2章 课程设计内容22.1 课题描述22.2 系统设计2功能分析2面向对象设计2类成员描述22.3程序实现2源码分析2运行结果2第3章 课程设计总结3参考文献4第1章 课程设计目的与要求1.1 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼

3、:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行Windows 操作系

4、统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述熟悉C+工程开发的过程、头文件和源文件之间的关系,掌握类、继承及派生、虚函数、多态性在C+面向对象程序设计中的体现,掌握一个类的对象作为另外一个类的成

5、员的实现方法。掌握子类对象与父类对象的关系,熟悉C+中流的使用,养成良好的编程习惯。在掌握C+面向对象程序设计方法的基础上,使用VC+6.0结合课本内容完成以下内容的实现:完成个人银行账户管理程序的编写、编译、调试、运行,完成基类Account、子类SavingsAccount及CreditAccount的声明及定义。实现Accumulator类及Date类。利用C+中流的概念实现账户信息的存储。在Account类中添加数据成员:Password,并对应编写该数据成员的get函数。在主函数中实现账户对象创建时从键盘输入构造函数需要的信息。在输出及需要用户输入的时候要给出相应的提示信息。2.2

6、系统设计功能分析个人银行账号管理模块:1.主界面主要导航栏有:个人银行账号管理系统,已存入三个账户的信息,有六个服务包括存款、取款、显示个账户信息、改变日期、进入下个月、退出。2.显示个账户信息页面显示您的账户序号、账号和收支平衡,在第二行显示日期和账户总额。3.存款页面显示请选择您的账户序号,输入账户序号之后,显示请输入您的存款金额,从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时在下面显示您的存款日期、账号,存入的金额,总金额。4取款页面 取款页面和存款页面提示的信息相似,提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款

7、,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上。面向对象设计 Date-year : int-month : int-day : int-totalDays : int+Date(year : int, month : int, day : int)<<const>> +getYear() : int<<const>>+getMonth() : int<<const>>+getDay() : int<<const>> + getMaxDay() : int<&l

8、t;const>> + isLeapYear() : bool<<const>> + show()<<const>> + operator - (date : Date) : intAccumulator-lastDate : Date-value : double-sum : double+Accumulator(date : Date, value : double)<<const>> +getSum(date : Date) : double+change(date : Date, value : dou

9、ble)+reset(date : Date, value : double)SavingsAccount-acc : Accumulator-rate : double+SavingsAccount(date : Date, id : int, rate : double)<<const>> +getRate() : double+deposit(date : Date, amount : double, desc : string)+withdraw(date : Date, amount : double, desc : string)+settle(date :

10、 Date)Account-id : string-balance : double-total : double#Account(date : Date, id : int)#record(date: Date, amount : double, desc : string)<<const>>#error(msg:string)<<const>>+getId() : int<<const>> +getBalance() : double<<abstract>> + deposit(date : D

11、ate, amount : double, desc : string)<<abstract>> + withdraw(date : Date, amount : double, desc : string)<<abstract>> + settle(date : Date)<<virtual>> <<const>> + show()<<static>>+getTotal() : doubleCreditAccount-acc : Accumulator-credit : d

12、ouble-rate : double-fee : double<<const>> -getDebt() : double+CreditAccount(date : Date, id : int, credit : double, rate : double, fee : double)<<const>> +getCredit() : double<<const>> +getRate() : double<<const>> +getFee() : double<<const>>

13、; +getAvailableCredit() : double+deposit(date : Date, amount : double, desc : string)+withdraw(date : Date, amount : double, desc : string)+settle(date : Date)<<const>>+show() 类成员描述Startcin>>countI=1I<=accountNumBanki.account=countI+end选择服务存款取款显示个账户信息改变日期进入下月个人银行账号管理系统账户创建账户查询退出

14、账户账户序号存款金额2.3程序实现源码分析#include "account.h"#include <iostream>using namespace std;int main()cout<<" -个人银行账户管理系统!- "<<endl;Date date(2011,6,1); /起始日期 /初始账户 SavingsAccount sa1(date,"S3755271",0.015,"123");SavingsAccount sa2(date,"02342342&qu

15、ot;,0.015,"456");CreditAccount ca(date,"C5392394",10000,0.0005,50,"789");Account *accounts=&sa1,&sa2,&ca;const int n=sizeof(accounts)/sizeof(Account*);cout<<"(d)存款 "<<endl;cout<<"(w) 取款"<<endl;cout<<"(s)

16、 显示各账户信息 "<<endl;cout<<"(c)改变日期 "<<endl;cout<<"(n) 进入下个月 "<<endl;cout<<"(e)退出 "<<endl;char cmd;do /显示日期和总金额cout<<endl;date.show();cout<<"t账户总金额"<<Account:getTotal()<<endl;cout<<endl;c

17、out<<"请选择服务:"int index,day,i;double amount;string desc,pwd,pass;cin>>cmd;switch(cmd)case'd': /存入现金cout<<"请选择您的账户序号(0/1/2):"cin>>index;if(index=0|index=1|index=2)cout<<"请输入您的存款金额:"cin>>amount;accountsindex->deposit(date,amou

18、nt,desc);elsecout<<"账户号错误!"break;case'w': /取出现金 cout<<"请选择您的账户序号(0/1/2):"cin>>index;cout<<"请输入您的密码:"cin>>pwd;pass=accountsindex->getPassword();if(pare(pwd)=0)cout<<"密码正确!"<<endl; cout<<"请输入您的取款金额:

19、"cin>>amount; accountsindex->withdraw(date,amount,desc); elsecout<<"您输入的密码错误!"<<endl;break;case's': /查询各账户信息for( i=0;i<n;i+)cout<<""<<i<<""accountsi->show();cout<<endl;break;case'c': /改变日期cout<&l

20、t;"输入要改的日期:"cin>>day;cout<<endl;if(day<date.getDay()cout<<"You connot specify a previous day"else if(day>date.getMaxDay()cout<<"Invalid day"elsedate=Date(date.getYear(),date.getMonth(),day);break;case'n': /进入下个月if(date.getMonth()=12

21、)date=Date(date.getYear()+1,1,1);elsedate=Date(date.getYear(),date.getMonth()+1,1);for(int k=0;k<n;k+)accountsk->settle(date);break;while(cmd!='e'); return 0;#include "account.h"#include <cmath>#include <iostream>using namespace std;double Account:total=0;/Account

22、类的实现Account:Account(const Date &date,const string &id,const string &pwd):id(id),balance(0),password(pwd)date.show();cout<<"t#"<<id<<" created"<<endl;void Account:record(const Date &date,double amount,const string &desc)amount=floor(amou

23、nt*100+0.5)/100; /保留小数点后两位balance+=amount;total+=amount;date.show();cout<<"t#"<<id<<"t"<<amount<<"t"<<balance<<"t"<<desc<<endl;void Account:show() const cout<<id<<"tBalance:"<<ba

24、lance;void Account:error(const string &msg)constcout<<"Error(#"<<id<<"):"<<msg<<endl;/SavingsAccount类相关成员函数的实现SavingsAccount:SavingsAccount(const Date &date,const std:string &id,double rate,const std:string &password):Account(date,id,

25、password),rate(rate),acc(date,0)void SavingsAccount:deposit(const Date &date,double amount,const string &desc) record(date,amount,desc); acc.change(date,getBalance(); void SavingsAccount:withdraw(const Date &date,double amount,const string &desc)if(amount>getBalance()error("n

26、ot enough money");else record(date,-amount,desc);acc.change(date,getBalance(); void SavingsAccount:settle(const Date &date)if(date.getMonth()=1)double interest=acc.getSum(date)*rate/(date-Date(date.getYear()-1,1,1); /计算年息if(interest!=0)record(date,interest,"interest");acc.reset(da

27、te,getBalance();/CreditAccount类相关成员函数的实现CreditAccount:CreditAccount(const Date &date,const string &id,double credit,double rate,double fee,const std:string &password):Account(date,id,password),credit(credit),rate(rate),fee(fee),acc(date,0)void CreditAccount:deposit(const Date &date,d

28、ouble amount,const string &desc) record(date,amount,desc); acc.change(date,getBalance(); void CreditAccount:withdraw(const Date &date,double amount,const string &desc)if(amount-getBalance()>credit)error("not enough money");else record(date,-amount,desc);acc.change(date,getDe

29、bt(); void CreditAccount:settle(const Date &date)double interest=acc.getSum(date)*rate;if(interest!=0)record(date,interest,"interest");if(date.getMonth()=1)record(date,-fee,"annual fee");acc.reset(date,getDebt();void CreditAccount:show() constAccount:show();cout<<"

30、tAvailable credit:"<<getAvailableCredit();#include "date.h"#include <iostream>#include <cstdlib>using namespace std;/namespace使下面的定义只在当前文件中有效namespace /存储平年中的某个月1日之前有多少天,为便于getMaxDay函数的实现,该数组多出一项const int DAYS_BEFORE_MONTH=0,31,59,90,120,151,181,212,243,273,304,334,3

31、65; Date:Date(int year,int month,int day):year(year),month(month),day(day)if(day<=0|day>getMaxDay()cout<<"Invalid date:"show();cout<<endl;exit(1);int years=year-1;totalDays=years*365+years/4-years/100+years/400+DAYS_BEFORE_MONTHmonth-1+day;if(isLeapYear() && month

32、>2) totalDays+; /DATE:DATEint Date:getMaxDay() constif(isLeapYear() && month=2)return 29;elsereturn DAYS_BEFORE_MONTHmonth-DAYS_BEFORE_MONTHmonth-1;void Date:show() constcout<<getYear()<<"-"<<getMonth()<<"-"<<getDay();#ifndef _ACCOUNT_H_#d

33、efine _ACCOUNT_H_#include "date.h"#include "accumulator.h"#include <string>using namespace std;class Account /账户类private:std:string id; /账号 std:string password;double balance; /余额static double total; /所有账户的总金额protected:/供派生类调用的构造函数,id为账户Account(const Date &date,const st

34、d:string &id,const std:string &pwd);/记录一笔账,data为日期,amount为金额,desc为说明void record(const Date &date,double amount,const std:string &desc);/报告错误信息void error(const std:string &msg) const;public:const std:string &getId() const return id;const std:string getPassword() return passwor

35、d;double getBalance() const return balance;static double getTotal()return total;/存入现金,date为日期,amount为金额,desc为款项说明virtual void deposit(const Date &date,double amount,const std:string &desc)=0;/取出现金,date为日期,amount为金额,desc为款项说明virtual void withdraw(const Date &date,double amount,const std:s

36、tring &desc)=0;/结算(计算利息、年费等),每月结算一次,date为结算日期virtual void settle(const Date &date)=0;/显示账户信息virtual void show() const;class SavingsAccount:public Accountprivate:Accumulator acc;double rate;public:/构造函数SavingsAccount(const Date &date,const std:string &id,double rate,const std:string &

37、amp;passwod);double getRate() const return rate;/存入现金void deposit(const Date &date,double amount,const std:string &desc);/取出现金void withdraw(const Date &date,double amount,const std:string &desc);/结算利息,每年1月1日调用一次该函数void settle(const Date &date);class CreditAccount:public Account /

38、信用账户类private:Accumulator acc; /辅助计算利息的累加器double credit; /信用额度double rate; /欠款的日利率double fee; /信用卡年费double getDebt()const /获得欠款额double balance=getBalance();return(balance<0?balance:0);public:/构造函数CreditAccount(const Date &date,const std:string &id,double credit,double rate,double fee,const

39、 std:string &passwod);double getCredit() const return credit;double getRate() const return rate;double getFee() const return fee;double getAvailableCredit() const /获得可用信用额度if(getBalance()<0)return credit+getBalance();elsereturn credit;/存入现金void deposit(const Date &date,double amount,const

40、 std:string &desc);void withdraw(const Date &date,double amount,const std:string &desc);/结算利息和年费,每月1日调用一次该函数void settle(const Date &date);void show() const;#endif/_ACCOUNT_H_#ifndef _ACCUMULATOR_H_#define _ACCUMULATOR_H_#include "date.h"class Accumulator /将某个数值按日累加private:D

41、ate lastDate; /上次变更数值的日期double value; /数值的当前值double sum; /数值按日累加之和public:/构造函数,date为开始累加的日期,value为初始值Accumulator(const Date &date,double value):lastDate(date),value(value),sum(0)/获得日期date的累加结果double getSum(const Date &date)constreturn sum+value*(date-lastDate);/在date将数值变更为valuevoid change(const Date &date,double value)sum=getSum(date);lastDate=date;this->value=value;/初始化,将日期变为date,数值变为value,累加器清零void reset(const Date &date,double value)lastDate=date;this->value=value;sum=0;#endif#ifndef _DATE_H_#define _DATE_H_class Date /日期类private:

温馨提示

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

评论

0/150

提交评论