还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
辽宁工业大学《C++语言程序设计》课程设计(论文)题目个人银行管理系统院(系)专业班级学号学生姓名指导教师教师职称起止时间
2011.
12.12-
2011.
12.25课程设计(论文)任务及评语院(系)教研室软件教研室学号学生姓名专业班级课程设计(论文)题目个人银行管理系统课程设计(论文)任务程序设计的任务与要求掌握面向对象程序设计语言C++的基本语法掌握C++面向对象设计的思想掌握VC++
6.0与DEVC++开发工具的使用4).运用标准C++规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导正确地完成上述内容,规范完整地撰写出设计报告指导教师评语及成绩成绩指导教师签字年月日目录TOC\o1-3\h\z\u第1章课程设计目的与要求
11.1设计目的
11.2实验环境
11.3预备知识
11.4设计要求1第2章课程设计内容
22.1课题描述
22.2系统设计
22.
2.1功能分析
22.
2.2面向对象设计
22.
2.2类成员描述
22.3程序实现
22.
3.1源码分析
22.
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面向对象设计
2.
2.2类成员描述
2.3程序实现
2.
3.1源码分析#includeaccount.h#includeiostreamusingnamespacestd;intmain{cout--------个人银行账户管理系统!-------endl;Datedate201161;//起始日期//初始账户SavingsAccountsa1dateS
37552710.015123;SavingsAccountsa2date
023423420.015456;CreditAccountcadateC
5392394100000.000550789;Account*accounts[]={sa1sa2ca};constintn=sizeofaccounts/sizeofAccount*;coutd存款endl;coutw取款endl;couts显示各账户信息endl;coutc改变日期endl;coutn进入下个月endl;coute退出endl;charcmd;do{//显示日期和总金额coutendl;date.show;cout\t账户总金额Account::getTotalendl;coutendl;cout请选择服务:;intindexdayi;doubleamount;stringdescpwdpass;cincmd;switchcmd{cased://存入现金cout请选择您的账户序号0/1/2:;cinindex;ifindex==0||index==1||index==2{cout请输入您的存款金额:;cinamount;accounts[index]-depositdateamountdesc;}elsecout账户号错误!;break;casew://取出现金cout请选择您的账户序号0/1/2:;cinindex;cout请输入您的密码:;cinpwd;pass=accounts[index]-getPassword;ifpass.comparepwd==0{cout密码正确!endl;cout请输入您的取款金额:;cinamount;accounts[index]-withdrawdateamountdesc;}elsecout您输入的密码错误!endl;break;cases://查询各账户信息fori=0;in;i++{cout[i];accounts[i]-show;coutendl;}break;casec://改变日期cout输入要改的日期:;cinday;coutendl;ifdaydate.getDaycoutYouconnotspecifyapreviousday;elseifdaydate.getMaxDaycoutInvalidday;elsedate=Datedate.getYeardate.getMonthday;break;casen://进入下个月ifdate.getMonth==12date=Datedate.getYear+111;elsedate=Datedate.getYeardate.getMonth+11;forintk=0;kn;k++accounts[k]-settledate;break;}}whilecmd!=e;return0;}#includeaccount.h#includecmath#includeiostreamusingnamespacestd;doubleAccount::total=0;//Account类的实现Account::AccountconstDatedateconststringidconststringpwd:ididbalance0passwordpwd{date.show;cout\t#idcreatedendl;}voidAccount::recordconstDatedatedoubleamountconststringdesc{amount=flooramount*100+
0.5/100;//保留小数点后两位balance+=amount;total+=amount;date.show;cout\t#id\tamount\tbalance\tdescendl;}voidAccount::showconst{coutid\tBalance:balance;}voidAccount::errorconststringmsgconst{coutError#id:msgendl;}//SavingsAccount类相关成员函数的实现SavingsAccount::SavingsAccountconstDatedateconststd::stringiddoublerateconststd::stringpassword:Accountdateidpasswordraterateaccdate0{}voidSavingsAccount::depositconstDatedatedoubleamountconststringdesc{recorddateamountdesc;acc.changedategetBalance;}voidSavingsAccount::withdrawconstDatedatedoubleamountconststringdesc{ifamountgetBalance{errornotenoughmoney;}else{recorddate-amountdesc;acc.changedategetBalance;}}voidSavingsAccount::settleconstDatedate{ifdate.getMonth==1{doubleinterest=acc.getSumdate*rate/date-Datedate.getYear-111;//计算年息ifinterest!=0recorddateinterestinterest;acc.resetdategetBalance;}}//CreditAccount类相关成员函数的实现CreditAccount::CreditAccountconstDatedateconststringiddoublecreditdoubleratedoublefeeconststd::stringpassword:Accountdateidpasswordcreditcreditrateratefeefeeaccdate0{}voidCreditAccount::depositconstDatedatedoubleamountconststringdesc{recorddateamountdesc;acc.changedategetBalance;}voidCreditAccount::withdrawconstDatedatedoubleamountconststringdesc{ifamount-getBalancecredit{errornotenoughmoney;}else{recorddate-amountdesc;acc.changedategetDebt;}}voidCreditAccount::settleconstDatedate{doubleinterest=acc.getSumdate*rate;ifinterest!=0recorddateinterestinterest;ifdate.getMonth==1recorddate-feeannualfee;acc.resetdategetDebt;}voidCreditAccount::showconst{Account::show;cout\tAvailablecredit:getAvailableCredit;}#includedate.h#includeiostream#includecstdlibusingnamespacestd;//namespace使下面的定义只在当前文件中有效namespace{//存储平年中的某个月1日之前有多少天,为便于getMaxDay函数的实现,该数组多出一项constintDAYS_BEFORE_MONTH[]={0315990120151181212243273304334365};}Date::Dateintyearintmonthintday:yearyearmonthmonthdayday{ifday=0||daygetMaxDay{coutInvaliddate:;show;coutendl;exit1;}intyears=year-1;totalDays=years*365+years/4-years/100+years/400+DAYS_BEFORE_MONTH[month-1]+day;ifisLeapYearmonth2totalDays++;}//DATE::DATEintDate::getMaxDayconst{ifisLeapYearmonth==2return29;elsereturnDAYS_BEFORE_MONTH[month]-DAYS_BEFORE_MONTH[month-1];}voidDate::showconst{coutgetYear-getMonth-getDay;}#ifndef_ACCOUNT_H_#define_ACCOUNT_H_#includedate.h#includeaccumulator.h#includestringusingnamespacestd;classAccount//账户类{private:std::stringid;//账号std::stringpassword;doublebalance;//余额staticdoubletotal;//所有账户的总金额protected://供派生类调用的构造函数,id为账户AccountconstDatedateconststd::stringidconststd::stringpwd;//记录一笔账,data为日期,amount为金额,desc为说明voidrecordconstDatedatedoubleamountconststd::stringdesc;//报告错误信息voiderrorconststd::stringmsgconst;public:conststd::stringgetIdconst{returnid;}conststd::stringgetPassword{returnpassword;}doublegetBalanceconst{returnbalance;}staticdoublegetTotal{returntotal;}//存入现金,date为日期,amount为金额,desc为款项说明virtualvoiddepositconstDatedatedoubleamountconststd::stringdesc=0;//取出现金,date为日期,amount为金额,desc为款项说明virtualvoidwithdrawconstDatedatedoubleamountconststd::stringdesc=0;//结算计算利息、年费等,每月结算一次,date为结算日期virtualvoidsettleconstDatedate=0;//显示账户信息virtualvoidshowconst;};classSavingsAccount:publicAccount{private:Accumulatoracc;doublerate;public://构造函数SavingsAccountconstDatedateconststd::stringiddoublerateconststd::stringpasswod;doublegetRateconst{returnrate;}//存入现金voiddepositconstDatedatedoubleamountconststd::stringdesc;//取出现金voidwithdrawconstDatedatedoubleamountconststd::stringdesc;//结算利息每年1月1日调用一次该函数voidsettleconstDatedate;};classCreditAccount:publicAccount{//信用账户类private:Accumulatoracc;//辅助计算利息的累加器doublecredit;//信用额度doublerate;//欠款的日利率doublefee;//信用卡年费doublegetDebtconst{//获得欠款额doublebalance=getBalance;returnbalance0balance:0;}public://构造函数CreditAccountconstDatedateconststd::stringiddoublecreditdoubleratedoublefeeconststd::stringpasswod;doublegetCreditconst{returncredit;}doublegetRateconst{returnrate;}doublegetFeeconst{returnfee;}doublegetAvailableCreditconst{//获得可用信用额度ifgetBalance0returncredit+getBalance;elsereturncredit;}//存入现金voiddepositconstDatedatedoubleamountconststd::stringdesc;voidwithdrawconstDatedatedoubleamountconststd::stringdesc;//结算利息和年费,每月1日调用一次该函数voidsettleconstDatedate;voidshowconst;};#endif//_ACCOUNT_H_#ifndef_ACCUMULATOR_H_#define_ACCUMULATOR_H_#includedate.hclassAccumulator{//将某个数值按日累加private:DatelastDate;//上次变更数值的日期doublevalue;//数值的当前值doublesum;//数值按日累加之和public://构造函数,date为开始累加的日期,value为初始值AccumulatorconstDatedatedoublevalue:lastDatedatevaluevaluesum0{}//获得日期date的累加结果doublegetSumconstDatedateconst{returnsum+value*date-lastDate;}//在date将数值变更为valuevoidchangeconstDatedatedoublevalue{sum=getSumdate;lastDate=date;this-value=value;}//初始化,将日期变为date,数值变为value,累加器清零voidresetconstDatedatedoublevalue{lastDate=date;this-value=value;sum=0;}};#endif#ifndef_DATE_H_#define_DATE_H_classDate//日期类{private:intyear;//年intmonth;//月intday;//日inttotalDays;//该日期是从公元元年1月1日开始的第几天public:Dateintyearintmonthintday;//用年、月、日构造日期intgetYearconst{returnyear;}intgetMonthconst{returnmonth;}intgetDayconst{returnday;}intgetMaxDayconst;//获得当月有多少天boolisLeapYearconst{//判断当年是否为闰年returnyear%4==0year%100!=0||year%400==0;}voidshowconst;//输入当前日期intoperator-constDatedateconst{//计算两个日期之间差多少天returntotalDays-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++程序设计教程基于案例》北京机械工业出版社Date-year:int-month:int-day:int-totalDays:int+Dateyear:intmonth:intday:intconst+getYear:intconst+getMonth:intconst+getDay:intconst+getMaxDay:intconst+isLeapYear:boolconst+showconst+operator-date:Date:intAccumulator-lastDate:Date-value:double-sum:double+Accumulatordate:Datevalue:doubleconst+getSumdate:Date:double+changedate:Datevalue:double+resetdate:Datevalue:doubleSavingsAccount-acc:Accumulator-rate:double+SavingsAccountdate:Dateid:intrate:doubleconst+getRate:double+depositdate:Dateamount:doubledesc:string+withdrawdate:Dateamount:doubledesc:string+settledate:DateAccount-id:string-balance:double-total:double#Accountdate:Dateid:int#recorddate:Dateamount:doubledesc:stringconst#errormsg:stringconst+getId:intconst+getBalance:doubleabstract+depositdate:Dateamount:doubledesc:stringabstract+withdrawdate:Dateamount:doubledesc:stringabstract+settledate:Datevirtualconst+showstatic+getTotal:doubleCreditAccount-acc:Accumulator-credit:double-rate:double-fee:doubleconst-getDebt:double+CreditAccountdate:Dateid:intcredit:doublerate:doublefee:doubleconst+getCredit:doubleconst+getRate:doubleconst+getFee:doubleconst+getAvailableCredit:double+depositdate:Dateamount:doubledesc:string+withdrawdate:Dateamount:doubledesc:string+settledate:Dateconst+showStartcincountI=1I=accountNumBank[i].account==countI++end选择服务存款取款显示个账户信息改变日期进入下月个人银行账号管理系统账户创建账户查询退出账户账户序号存款金额。