当前位置:文档之家› 面向对象课程设计

面向对象课程设计

面向对象课程设计目录1.课程设计目的及要求 (02)2.总体方案设计 (03)2.1总体功能框图 (03)2.2类的设计说明 (03)2.3主要算法流程图 (04)3.程序清单及注释 (07)4.运行结果与分析 (13)5.课程设计总结 (16)6. 参考文献 (17)1.课程设计目的及要求:1)目的:全面熟悉、掌握面向对象程序设计基本知识,掌握面向对象程序设计中的几个重要概念和特性,即类、对象、继承、封装和多态,和面向对象程序设计基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后再在专业课程中应用计算机系统解决计算、分析、实验和设计等等学习环节打下较扎实的基础。

2)内容及要求:程序功能简介个人财政支出管理程序,完成收入,支出,盈余的记录和管理。

课程设计要求(1) 增加函数,完成财政账目的管理功能。

(2) 将所有的函数与相应的数据封装到类中,并改写主程序,使程序简化。

(3) 可自行增加程序的功能。

(4) 设计测试主程序,在主程序中完成测试。

课程设计说明(1) SetGoal()函数账目中有问题,改正。

(2) 可将整修记录装入一个字符串,在两条记录间用特殊符号隔开。

(3) 查找相应记录时,可采用逐个字节比较的方法。

2.总体方案设计2.1 总体功能框图:图2.1总体功能框图2.2类的设计说明在这个程序中的定义类为,class Mangaer。

类是把各种不同类型的数据和对数据的操作组织在一起而形成的用户自定义的数据类型。

此程序中的构造成员函数:Desposit, ViewTotal ,SetGoal, ViewTotal, SetZero。

Deposit函数是记录函数,记录用户的收入,及对目录的更新。

SetGoal函数是制定函数,制定用户的目标金额。

ViewTotal函数用于查看用户的帐户。

SetZero函数的用途为将用户之前的账户内容,历史进行清零。

Withdram函数的用途是,记录用户的支出记录,并且进行保存。

2.3 主要算法流程图1)主函数流程图图2.3 主函数流程图2)收入模式流程图图2.2收入模式流程图注释:mm是Manager,类的对象。

dAmt是收入数目num是存入输入的数据此段程序,进入收入模式,输入收入金额dAmt,判断dAmt的数据是否为正数,如果是就将dAmt重新赋值为dAmt+num。

否则进行重新输入。

3)支出函数流程图图2.3支出模式流程图注释:mm是Manager,类的对象。

wAmt是收入数目num是存入输入的数据此段程序,进入支出模式,输入支出金额wAmt,判断wAmt的数据是否为正数,如果是就将wAmt重新赋值为wAmt+num。

3.程序清单及注释#include <iostream.h>#include <fstream.h>#include <conio.h>#include <iomanip.h>#include <stdlib.h>class Manager //定义类Manager{private:double dAmt; //收入数目char ans; //存放键盘字符的ASCII码double num; //存入输入的数据double wAmt; //支出数目double setAmt; //制定目标double gAmt; //取目标金额double balance; //收支金额double newbalance; //与目标所差金额void Deposit(); //收入函数void Withdraw(); //支出函数void ViewTotal(); //查看帐目void SetGoal(); //制定目标void SetZero(); //记录置零};class Manager main() //主函数{Manager mm; //创建对象char select;cprintf("======个人财政支出管理====== ");//显示标题# ifdef MINcout<<"\n\n\n##########################调试模式#########################"<<endl;#endifcout<<"\n\n\t<1> 收入模式"<<endl; //选择<1>进入收入模式cout<<"\n\t<2> 支出模式"<<endl; //选择<2>进入支出模式 cout<<"\n\t<3> 查看帐目"<<endl; //选择<3>进入查看帐目模式cout<<"\n\t<4> 制定目标"<<endl; //选择<4>进入制定目标模式cout<<"\n\t<5> 记录置零"<<endl; //选择<5>记录置零cout<<"\n\t<6> 退出系统"<<endl; //选择<6>退出cout<<"\n\t<0> 帮助 "<<endl;cout<<"\n\n\t请输入你的选择: ";cin>>select;if(select == '1'){mm.Deposit();}else{if(select == '2'){mm.Withdraw();}else{if(select == '3'){mm.ViewTotal();}else{if(select == '4'){mm.SetGoal();}else{if(select == '5'){mm.SetZero();}else{if(select == '0'){cout<<endl<<endl<<endl;getch();main(); //回主函数}else{if(select == '6'){exit(1);} //退出else main(); //回主函数}}}}}}}mm1:dAmt = 0;num = 0;double a=0,c=0;ifstream get("Money.txt"); //打开存贮数据文件# ifdef DE1cout<<"\n#########################打开文件money.txt读取数据#########################"<<endl;#endifget>>a>>num>>c; //取得存档文件中的三个数据get.close();cout<<endl<<endl;cprintf("**************************收入************************** ");cout<<"\n\n\t请输入收入金额: $";cin>>dAmt;//检查输入的数据是否为错误的数据或是零,然后继续if(dAmt <= 0){ //如果数据小于等于零cout<<"\n\n\n\n\n"<<endl;cprintf(" !!!!!!!!!!错误的数据!!!!!!!!!! .."); getch();main();}else{cout<<"\n\n\t数据输入 <"<<dAmt<<">."<<endl;cout<<"\n\t 确认你输入的数据<y/n>: ";cin>>ans;if(ans == 'y'){dAmt = dAmt + num; //把新数据加到原有数据上ofstream save("Money.txt");# ifdef DE2cout<<"\n#########################打开文件money.txt,保存数据#########################"<<endl;#endifsave<<a<<'\n'<<dAmt<<'\n'<<c;save.close();cout<<"\n\n\n\n\n"<<endl;cprintf(" 你的收入数据成功输入...");cout<<"\n\t 继续输入收入金额<y/n>: ";cin>>ans;if(ans == 'y')goto mm1; //继续输入数据else{cout<<endl<<endl<<endl;main();} //回主函数cout<<endl<<endl<<endl;main(); //回主函数}else{ //中止输入数据main(); //回主函数}main(); //回主函数}}void Manager::Withdraw(){ //在程序中记录支出数目的函数mm2:wAmt = 0;num = 0;double a=0,b=0;ifstream get("Money.txt"); //打开存贮数据文件# ifdef WI1cout<<"\n#########################打开文件money.txt,读取数据#########################"<<endl;#endifget>>a>>b>>num; //取得存档文件中的三个数据get.close();cout<<endl<<endl;cprintf("**************************支出************************** ");cout<<"\n\n\t请输入支出金额: $";cin>>wAmt;if(wAmt <= 0){ //检查输入的数据是否为错误的数据或是零,然后继续cout<<"\n\n\n\n\n"<<endl;cprintf(" !!!!!!!!!!错误的数据!!!!!!!!!! .."); getch();main();}else{cout<<"\n\n\t数据输入 <"<<wAmt<<">."<<endl;cout<<"\n\t 确认你输入的数据<y/n>: ";cin>>ans;if(ans == 'y'){wAmt = wAmt + num; //把新数据加到原有数据上ofstream save("Money.txt");# ifdef WI2cout<<"\n#########################打开文件money.txt,保存数据#########################"<<endl;#endifsave<<a<<'\n'<<b<<'\n'<<wAmt;save.close();cout<<"\n\n\n\n\n"<<endl;cprintf(" 你的支出数据成功输入...");cout<<"\n\t 继续输入支出金额<y/n>: ";cin>>ans;if(ans == 'y')goto mm2; //继续输入数据else{cout<<endl<<endl<<endl;main();} //回主函数getch();cout<<endl<<endl<<endl;main();}else{ //中止输入数据main(); //回主函数}main(); //回主函数}}void Manager::SetGoal(){ //在程序中制定目标金额的函数setAmt = 0;double b=0,c=0,temp=0;cout<<endl<<endl;cprintf("**************************制定目标************************** ");cout<<"\n\n\t制定目标金额: ";cin>>setAmt; //保存新数据到文件中ifstream get("Money.txt"); //打开存贮数据文件get>>temp>>b>>c; //取得存档文件中的三个数据get.close();# ifdef SGcout<<"\n#########################打开文件money.txt,保存数据#########################"<<endl;#endifofstream save("Money.txt");save<<setAmt<<'\n'<<b<<'\n'<<c;save.close();cout<<"\n\n\n\n\n"<<endl;cprintf(" 你的目标金额已建立...");getch();cout<<endl<<endl<<endl;main();}void Manager::ViewTotal(){ //查看帐目函数dAmt = 0; //收入数目wAmt = 0; //支出数目gAmt = 0; //取目标金额balance = 0; //收支金额newbalance = 0;//与目标所差金额# ifdef VTcout<<"\n#########################打开文件money.txt,读取数据#########################"<<endl;#endififstream get("Money.txt"); //打开存贮数据文件get>>gAmt>>dAmt>>wAmt; //取得存档文件中的三个数据 get.close();balance = dAmt - wAmt; //收入减去支出取得收支平衡数据 cout<<endl<<endl;cprintf("**************************查看帐目************************** ");cout<<"\n\n"<<endl;cprintf(" 收支总数");cout<<""<<endl;cprintf(" =============");cout<<"\n\n"<<endl;cprintf(" 收入总金额支出总金额收支总金额 ");cout<<"\n"<<endl;cout<<setw(15)<<dAmt<<setw(25)<<wAmt<<setw(20)<<balance<<endl;//使每两个数据按一定的间隔输出newbalance = gAmt - balance;cout<<"\n\n\n"<<endl;cprintf(" 收支平衡");cout<<""<<endl;cprintf(" =============");cout<<"\n\n"<<endl;cprintf(" 目标金额收支平衡金额相差金额 ");cout<<"\n"<<endl;cout<<setw(15)<<gAmt<<setw(25)<<balance<<setw(23)<<newbalance<<en dl;getch();cout<<endl<<endl<<endl;main(); //回到主函数}void Manager::SetZero(){ //记录置零函数cout<<"\n\n\n\n 你确定要将记录置零<y/n>: ";cin>>ans; //确认是否要将记录置零if(ans == 'y'){dAmt = 0; //先初始数据为零wAmt = 0;setAmt = 0;# ifdef SZcout<<"\n#########################打开文件money.txt,保存数据#########################"<<endl;#endifofstream save("Money.txt"); //打开存放数据的文件并将收入数据置零save<<setAmt<<'\n'<<dAmt<<'\n'<<wAmt;save.close();cout<<endl<<endl<<endl;main();} //回主函数else{cout<<endl<<endl<<endl;main();} //回主函数}4.运行结果与分析1)登陆界面图5.1 登陆界面截屏2)收入模式图5.2收入模式截屏3)支出模式图5.3 支出模式截屏4)查看账目图5.4 查看账目截屏5)记录置零图5.5 记录置零截屏6)退出系统.图5.6 退出系统截屏5.课程设计总结面向对象程序课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

相关主题