收藏 分销(赏)

个人银行管理系统C++样本.doc

上传人:二*** 文档编号:4572455 上传时间:2024-09-30 格式:DOC 页数:27 大小:367.53KB 下载积分:5 金币
下载 相关 举报
个人银行管理系统C++样本.doc_第1页
第1页 / 共27页
本文档共27页,全文阅读请下载到手机保存,查看更方便
资源描述
辽 宁 工 业 大 学 《C++语言程序设计》课程设计(论文) 题目: 个人银行管理系统 院(系): 专业班级: 学 号: 学生姓名: 指引教师: 教师职称: 起止时间:.12.12-.12.25 课程设计(论文)任务及评语 院(系): 教研室:软件教研室 学 号 学生姓名 专业班级 课程设计(论文)题目 个人银行管理系统 课程设计(论文)任务 程序设计任务与规定: (1). 掌握面向对象程序设计语言C++基本语法 (2). 掌握C++面向对象设计思想 (3). 掌握VC++6.0与DEV C++ 开发工具使用 (4). 运用原则C++规范设计应用程序 设计过程中,要严格遵守设计时间安排,听从指引教师指引。对的地完毕上述内容,规范完整地撰写出设计报告。 指引教师评语及成绩 成绩: 指引教师签字: 年 月 日 目 录 第1章 课程设计目与规定 1 1.1 设计目 1 1.2实验环境 1 1.3预备知识 1 1.4设计规定 1 第2章 课程设计内容 2 2.1 课题描述 2 2.2 系统设计 2 2.2.1功能分析 2 2.2.2面向对象设计 2 2.2.2类成员描述 2 2.3程序实现 2 2.3.1源码分析 2 2.3.2运营成果 2 第3章 课程设计总结 3 参照文献 4 第1章 课程设计目与规定 1.1 设计目 将理论教学中涉及到知识点贯穿起来,对不同数据类型、程序控制构造、数据构造作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通限度。 通过课程设计,学生在下述各方面能力应当得到锻炼: (1)进一步巩固、加深学生所学专业课程《C++语言教程》基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题能力。 (2)全面考核学生所掌握基本理论知识及其实际业务能力,从而达到提高学生素质最后目。 (3)运用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据解决综合能力。 (4)对于给定设计题目,如何进行分析,理清思路,并给出相应数学模型。 (5)掌握面向对象程序设计办法。 (6)纯熟掌握C++语言基本语法,灵活运用各种数据类型。 (7)进一步掌握在集成环境下如何调试程序和修改程序。 1.2实验环境 硬件规定能运营Windows 操作系统微机系统。C++语言应用程序开发软件使用:VC++ 系统,或其她C++语言应用程序开发软件。 1.3预备知识 熟悉C++语言程序设计基本知识及VC++编辑器用法。 1.4设计规定 1.仔细分析设计题目,画出程序流程图,编写程序源代码。 2.积极上机调试源程序,增强编程技巧与调程能力。 3.认真书写课程设计预习报告,课程设计阐明书。 4.遵守课程设计规定和机房管理制度,服从指引教师安排,保证课程设计顺利完毕课程设计内容。 第2章 课程设计内容 2.1 课题描述 熟悉C++工程开发过程、头文献和源文献之间关系,掌握类、继承及派生、虚函数、多态性在C++面向对象程序设计中体现,掌握一种类对象作为此外一种类成员实现办法。掌握子类对象与父类对象关系,熟悉C++中流使用,养成良好编程习惯。在掌握C++面向对象程序设计办法基本上,使用VC++6.0结合课本内容完毕如下内容实现:完毕个人银行账户管理程序编写、编译、调试、运营,完毕基类Account、子类SavingsAccount及CreditAccount声明及定义。实现Accumulator类及Date类。运用C++中流概念实现账户信息存储。在Account类中添加数据成员:Password,并相应编写该数据成员get函数。在主函数中实现账户对象创立时从键盘输入构造函数需要信息。在输出及需要顾客输入时候要给出相应提示信息。 2.2 系统设计 2.2.1功能分析 个人银行账号管理模块: 1.主界面 重要导航栏有:个人银行账号管理系统,已存入三个账户信息,有六个服务涉及存款、取款、显示个账户信息、变化日期、进入下个月、退出。 2.显示个账户信息页面 显示您账户序号、账号和收支平衡,在第二行显示日期和账户总额。 3.存款页面 显示请选取您账户序号,输入账户序号之后,显示请输入您存款金额,从后台数据库中找到该顾客余额记录,修改余额,并将该存款事件相应信息写人数据库,同步在下面显示您存款日期、账号,存入金额,总金额。 4取款页面 取款页面和存款页面提示信息相似,提供数据输入界面,等待顾客输入取款金额,如果取款金额不不大于该顾客卡上余额则不能取款,或者将新余额写人文献,并将本次取款事件写入文献同步将取钱金额显示在页面上。 2.2.2面向对象设计 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 <<const>> + isLeapYear() :bool <<const>> + show() <<const>> + operator - (date :Date) :int Accumulator -lastDate :Date -value :double -sum :double +Accumulator(date :Date,value :double) <<const>> +getSum(date :Date) :double +change(date :Date,value :double) +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 :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 :Date,amount :double,desc :string) <<abstract>> + withdraw(date :Date,amount :double,desc :string) <<abstract>> + settle(date :Date) <<virtual>> <<const>> + show() <<static>>+getTotal() :double CreditAccount -acc :Accumulator -credit :double -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>> +getAvailableCredit() :double +deposit(date :Date,amount :double,desc :string) +withdraw(date :Date,amount :double,desc :string) +settle(date :Date) <<const>>+show() 2.2.2类成员描述 Start cin>>count I=1 I<=accountNum Bank[i].account==count I++ end 选取服务 存 款 取 款 显示个账户信息 改 变 日期 进入下月 个人银行账号管理系统 账户创立 账户查询 退出账户 账户序号 存款金额 2.3程序实现 2.3.1源码分析 #include "account.h" #include <iostream> using namespace std; int main(){ cout<<" --------个人银行账户管理系统!------- "<<endl; Date date(,6,1); //起始日期 //初始账户 SavingsAccount sa1(date,"S3755271",0.015,"123"); SavingsAccount sa2(date,"02342342",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) 显示各账户信息 "<<endl; cout<<"(c)变化日期 "<<endl; cout<<"(n) 进入下个月 "<<endl; cout<<"(e)退出 "<<endl; char cmd; do{ //显示日期和总金额 cout<<endl; date.show(); cout<<"\t账户总金额"<<Account::getTotal()<<endl; cout<<endl; cout<<"请选取服务:"; 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; accounts[index]->deposit(date,amount,desc); } else cout<<"账户号错误!"; break; case'w': //取出钞票 cout<<"请选取您账户序号(0/1/2):"; cin>>index; cout<<"请输入您密码:"; cin>>pwd; pass=accounts[index]->getPassword(); if(pare(pwd)==0){ cout<<"密码对的!"<<endl; cout<<"请输入您取款金额:"; cin>>amount; accounts[index]->withdraw(date,amount,desc); } else cout<<"您输入密码错误!"<<endl; break; case's': //查询各账户信息 for( i=0;i<n;i++){ cout<<"["<<i<<"]"; accounts[i]->show(); cout<<endl; } break; case'c': //变化日期 cout<<"输入要改日期:"; cin>>day; cout<<endl; if(day<date.getDay()) cout<<"You connot specify a previous day"; else if(day>date.getMaxDay()) cout<<"Invalid day"; else date=Date(date.getYear(),date.getMonth(),day); break; case'n': //进入下个月 if(date.getMonth()==12) date=Date(date.getYear()+1,1,1); else date=Date(date.getYear(),date.getMonth()+1,1); for(int k=0;k<n;k++) accounts[k]->settle(date); break; } }while(cmd!='e'); return 0; } #include "account.h" #include <cmath> #include <iostream> using namespace std; double Account::total=0; //Account类实现 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(amount*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:"<<balance;} void Account::error(const string &msg)const{ cout<<"Error(#"<<id<<"):"<<msg<<endl; } //SavingsAccount类有关成员函数实现 SavingsAccount::SavingsAccount(const Date &date,const std::string &id,double rate,const std::string &password) :Account(date,id,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("not 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(date,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,double 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,getDebt()); } } 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() const{ Account::show(); cout<<"\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,365}; } 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_MONTH[month-1]+day; if(isLeapYear() && month>2) totalDays++; } //DATE::DATE int Date::getMaxDay() const{ if(isLeapYear() && month==2) return 29; else return DAYS_BEFORE_MONTH[month]-DAYS_BEFORE_MONTH[month-1]; } void Date::show() const{ cout<<getYear()<<"-"<<getMonth()<<"-"<<getDay(); } #ifndef _ACCOUNT_H_ #define _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 std::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 password;} 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::string &desc)=0; //结算(计算利息、年费等),每月结算一次,date为结算日期 virtual void settle(const Date &date)=0; //显示账户信息 virtual void show() const; }; class SavingsAccount:public Account{ private: Accumulator acc; double rate; public: //构造函数 SavingsAccount(const Date &date,const std::string &id,double rate,const std::string &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{ //信用账户类 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 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(); else return credit; } //存入钞票 void deposit(const Date &date,double amount,const 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: Date 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)const{ return sum+value*(date-lastDate); } //在date将数值变更为value void 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: int year; //年 int month; //月 int day; //日 int totalDays; //该日期是从公元元年1月1日开始第几天 public: Date(int year,int month,int day); //用年、月、日构造日期 int getYear() const {return year;} int getMonth() const {return month;} int getDay() const {return day;} int getMaxDay() const; //获得当月有多少天 bool isLeapYear() const { //判断当年与否为闰年 return year%4==0&&year%100!=0||year%400==0; } void show() const; //输入当前日期 int operator-(const Date &date) const{ //计算两个日期之间差多少天 return totalDays-date.totalDays; } }; #endif //_Date_H_ 2.3.2运营成果 a. 帐户创立 b. 帐户查询 c. 存款 d. 取款 第3章 课程设计总结 本次C++课程设计,在指引教师精心辅导下,我学会了如何用C++编写一种简朴 程序。一方面要对程序设计规定有一种明确结识,然后系统设计与功能分析,最后是代码设计与调试。 依照C++课程所学概念、理论和办法,按照C++程序设计基本环节,设计出一种适合规模程序;进一步加深对C++语言理解和掌握。理论联系实际,加深和巩固所学理论知识,提高实践能力和计算机综合运用能力。咱们编写程序过程是辛苦与高兴,程序编写原则很重要,只要咱们在编程,就必要不断改进,才干更好提高编程能力。 通过两周C++实训课程,我深切体会到了编程乐趣,在本次实训中,我也看到了许多自己局限性,不但是知识上,尚有思考能力等方面都需要进一步提高。在编程过程中,思维是占重要,因此不断练习编程,是提高自己能力有效途径。 在编写程序中,细节决定成败,我经常粗心写错语句或是打错符号,然后就不能得到想要成果,这是后来学习工作中应当注意问题。固然,在本次实训中,我也遇到了某些麻烦,例如刚开始建立三个账户不能放在一种数组中进行操作,但是通过查资料理解到可以用虚函数来解决。尚有某些当前还存在问题,如实现功能不够完善,界面不够美观等,均有待后来进一步学习改进。 尽管人们很认真了,但仍有些局限性之处,这也正暴露了咱们学习中诸多漏洞,在此后仍得继续努力,踏踏实实学好基本知识。 参照文献 1.黄品梅 主编 《C++程序设计教程—化难为易地学习C++》 北京:机械工业出版社 2.王珊珊、张志航 编著 《C++程序设计教程》 北京:机械工业出版社 3.郑莉、董渊 编著 《C++语言程序设计》 北京:清华大学出版社 4.黄迪明 主编 《C++语言程序设计基本》 北京:电子工业出版社 5.钱能 主编 《C++程序设计教程》 北京:清华大学出版社 6.徐孝凯 编著 《C++语言程序设计》 北京:清华大学出版社 7.吴访升 编著 《C++程序设计》 北京: 机械工业出版社 8.Decoder 主编 《C/C++程序设计》 北京:中华人民共和国铁道出版社 9.陈国建 编著 《C++语言从入门到精通》 北京:机械工业出版社 10.邬延辉、王小权 编著 《C++程序设计教程:基于案例》 北京:机
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 管理财经 > 金融保险

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服