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 系统设计 22.2.1 功能分析 .22.2.2 面向对象设计 .22.2.2 类成员描述 .22.3 程序实现 .22.3.1 源码分析 .22.3.2 运行结果 .2第 3 章 课程设计总结 .3参考文献 4辽 宁 工 业 大 学 课 程 设
3、计 说 明 书(论 文)1第 1 章 课程设计目的与要求1.1 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用 C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综
4、合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握 C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2 实验环境硬件要求能运行 Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他 C+语言应用程序开发软件。1.3 预备知识熟悉 C+语言程序设计的基本知识及 VC+编辑器的使用方法。1.4 设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设
5、计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)2第 2 章 课程设计内容2.1 课题描述熟悉 C+工程开发的过程、头文件和源文件之间的关系,掌握类、继承及派生、虚函数、多态性在 C+面向对象程序设计中的体现,掌握一个类的对象作为另外一个类的成员的实现方法。掌握子类对象与父类对象的关系,熟悉 C+中流的使用,养成良好的编程习惯。在掌握 C+面向对象程序设计方法的基础上,使用 VC+6.0 结合课本内容完成以下内容的实现:完成个人银行账户管理程序的编写、编译、调试、运行,完成基类 A
6、ccount、子类 SavingsAccount 及 CreditAccount 的声明及定义。实现 Accumulator 类及 Date 类。利用 C+中流的概念实现账户信息的存储。在 Account 类中添加数据成员:Password,并对应编写该数据成员的 get 函数。在主函数中实现账户对象创建时从键盘输入构造函数需要的信息。在输出及需要用户输入的时候要给出相应的提示信息。2.2 系统设计2.2.1 功能分析个人银行账号管理模块:1.主界面主要导航栏有:个人银行账号管理系统,已存入三个账户的信息,有六个服务包括存款、取款、显示个账户信息、改变日期、进入下个月、退出。2.显示个账户信息
7、页面显示您的账户序号、账号和收支平衡,在第二行显示日期和账户总额。3.存款页面显示请选择您的账户序号,输入账户序号之后,显示请输入您的存款金额,从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时在下面显示您的存款日期、账号,存入的金额,总金额。4 取款页面取款页面和存款页面提示的信息相似,提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上。辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)32.2.2 面向对象设计Date-year : in
8、t-month : int-day : int-totalDays : int+Date(year : int, month : int, day : int) +getYear() : int+getMonth() : int+getDay() : int + getMaxDay() : int + isLeapYear() : bool + show() + operator - (date : Date) : intAccumulator-lastDate : Date-value : double-sum : double+Accumulator(date : Date, value
9、: double) +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) +getRate() : double+deposit(date : Date, amount : double, desc : string)+withdraw(date : D
10、ate, 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)#error(msg:string)+getId() : int +getBalance() : double + deposit(date : Date, amount : double, desc : string)
11、 + withdraw(date : Date, amount : double, desc : string) + settle(date : Date) + show()+getTotal() : doubleCreditAccount-acc : Accumulator-credit : double-rate : double-fee : double -getDebt() : double+CreditAccount(date : Date, id : int, credit : double, rate : double, fee : double) +getCredit() :
12、double +getRate() : double +getFee() : double +getAvailableCredit() : double+deposit(date : Date, amount : double, desc : string)+withdraw(date : Date, amount : double, desc : string)+settle(date : Date)+show()辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)42.2.2 类成员描述StartcincountI=1Iusing namespace std;int main()c
13、outcmd;switch(cmd)辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)7cased: /存入现金coutindex;if(index=0|index=1|index=2)coutamount;accountsindex-deposit(date,amount,desc);elsecoutindex;coutpwd;pass=accountsindex-getPassword();if(pare(pwd)=0)coutamount; accountsindex-withdraw(date,amount,desc); elsecoutshow();coutday;cout
14、date.getMaxDay()coutsettle(date);break;while(cmd!=e);return 0;#include “account.h“#include #include using namespace std;double Account:total=0;/Account 类的实现Account:Account(const Date coutgetBalance()error(“not enough money“);elserecord(date,-amount,desc);acc.change(date,getBalance(); void SavingsAcc
15、ount:settle(const Date 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)10/计算年息if(interest!=0)record(date,interest,“interest“);acc.reset(date,getBalance();/CreditAccount 类相关成员函数的实现CreditAccount:CreditAccount(const Date acc.change(date,getBalance(); void CreditAccount:withdraw(const Date elserecord(date,-amount,desc);a
16、cc.change(date,getDebt(); void CreditAccount:settle(const Date 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();辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)11cout#include using namespace std;/
17、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(daygetMaxDay()cout2) totalDays+; /DATE:DATEint Date:getMaxDay() cons
18、tif(isLeapYear() elsereturn DAYS_BEFORE_MONTHmonth-DAYS_BEFORE_MONTHmonth-1;void Date:show() constcoutusing namespace std;class Account /账户类private:std:string id; /账号 std:string password;double balance; /余额static double total; /所有账户的总金额protected:/供派生类调用的构造函数,id 为账户Account(const Date /记录一笔账,data 为日期,
19、amount 为金额,desc 为说明void record(const Date /报告错误信息void error(const std:string public:const std:string const std:string getPassword() return password;double getBalance() const return balance;static double getTotal()return total;/存入现金,date 为日期,amount 为金额,desc 为款项说明virtual void deposit(const Date /取出现金,
20、date 为日期,amount 为金额,desc 为款项说明virtual void withdraw(const Date /结算(计算利息、年费等),每月结算一次,date 为结算日期virtual void settle(const Date /显示账户信息辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)13virtual void show() const;class SavingsAccount:public Accountprivate:Accumulator acc;double rate;public:/构造函数SavingsAccount(const Date d
21、ouble getRate() const return rate;/存入现金void deposit(const Date /取出现金void withdraw(const Date /结算利息,每年 1 月 1 日调用一次该函数void settle(const Date ;class CreditAccount:public Account /信用账户类private:Accumulator acc; /辅助计算利息的累加器double credit; /信用额度double rate; /欠款的日利率double fee; /信用卡年费double getDebt()const /获得
22、欠款额double balance=getBalance();return(balancevalue=value;/初始化,将日期变为 date,数值变为 value,累加器清零void reset(const 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
23、,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=0void show() const; /输入当前日期int operator-(const Date ;#endif /_Date_H_辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)16
24、2.3.2 运行结果a. 帐户创建b. 帐户查询c. 存款辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)17d. 取款辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)18第 3 章 课程设计总结此次 C+课程设计,在指导教师的精心教导下,我学会了如何用 C+编写一个简单的程序。首先要对程序的设计要求有一个明确的认识,然后系统设计与功能分析,最后是代码设计与调试。根据 C+课程所学的概念、理论和方法,按照 C+程序设计的基本步骤,设计出一个适合规模的程序;进一步加深对 C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们
25、编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。通过两周的 C+实训课程,我深切的体会到了编程的乐趣,在此次实训中,我也看到了许多自己的不足,不仅是知识上的,还有思考能力等方面都需要进一步提高。在编程过程中,思维是占主要的,所以不断的练习编程,是提高自己能力的有效途径。在编写程序中,细节决定成败,我经常粗心的写错语句或是打错符号,然后就不能得到想要的结果,这是以后学习工作中应该注意的问题。当然,在此次实训中,我也遇到了一些麻烦,例如刚开始建立的三个账户不能放在一个数组中进行操作,但是通过查资料了解到可以用虚函数来处理。还有一些目前还存在
26、的问题,如实现的功能不够完善,界面不够美观等,都有待以后进一步学习改善。尽管大家很认真了,但仍有些不足之处,这也正暴露了我们学习中的诸多漏洞,在今后仍得继续努力,踏踏实实的学好基础知识。辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)19参考文献1.黄品梅 主编 C+程序设计教程化难为易地学习 C+ 北京:机械工业出版社2.王珊珊、张志航 编著 C+程序设计教程 北京:机械工业出版社3.郑莉、董渊 编著 C+语言程序设计 北京:清华大学出版社4.黄迪明 主编 C+语言程序设计基础 北京:电子工业出版社5.钱能 主编 C+程序设计教程 北京:清华大学出版社6.徐孝凯 编著 C+语言程序设计 北京:清华大学出版社7.吴访升 编著 C+程序设计 北京: 机械工业出版社8.Decoder 主编 C/C+程序设计 北京:中国铁道出版社9.陈国建 编著 C+语言从入门到精通 北京:机械工业出版社10.邬延辉、王小权 编著 C+程序设计教程:基于案例 北京:机械工业出版社