《面向对象程序设计》课程设计报告模板
- 格式:doc
- 大小:1.09 MB
- 文档页数:11
《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间:2011-2012(一)目录1.任务1 (2)1.1 任务介绍 (2)1.2 小组成员任务分配 (2)1.3.1设计思想及主要流程图 (2)1.3.1主要程序清单 (2)1.3.1 运行结果及分析 (4)1.3.2设计思想及主要流程图 (2)1.3.2主要程序清单 (2)1.3.2 运行结果及分析 (4)1.3.3设计思想及主要流程图 (2)1.3.3主要程序清单 (2)1.3.3 运行结果及分析 (4)2.任务2 (2)2.1 任务介绍 (2)2.2 小组成员任务分配 (2)2.3设计思想及主要流程图 (2)2.3主要程序清单 (2)2.3 运行结果及分析 (4)3收获、体会和建议 (4)任务1.按照要求设计类 1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。
有如下测试程序和测试程序的输出结果,要求设计类Welcome 。
void main() { Welcome we; Welcome you(we); you.Display();you.Set(“Thank you.”);cout<<you.Get()<<endl; you.talk(); you.Display();}测试程序的输出结果如右: 设计类Welcome 的原则 1)在头文件Cpp1.h 中声明类 2)在Cpp1.cpp 中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程02=++c bx ax 的根的程序,用三个函数分别求当ac b 42+大于零、等于零和小于零时方程的根。
要求从主函数输入a 、b 、c 的值并输出结果。
使用面向过程的解法一般是把变量设为double 型,适用库函数cmath 进行计算。
请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。
目录一、课程设计的目的和要求 (2)1、课程设计目的 (2)2、课程设计要求 (2)二、实验环境 (2)三、系统需求分析与设计 (2)1、系统总框架图 (2)2、软件功能描述 (3)四、系统功能的实现 (3)1、系统设计的具体步骤 (3)2、数据结构描述与定义 (4)3、各模块设计 (5)4、特色函数分析 (6)五、系统测试与分析 (7)1、调试步骤 (7)2、调试中出现的问题及其解决方法 (7)3、软件试用(测试) (8)4、软件存在的不足与完善对策 (11)六、结论与心得 (11)七、参考文献 (12)一、课程设计的目的和要求1、课程设计目的:1)通过课程设计能使学生掌握学习理论知识时没有注意到的细节, 加深对面向对象程序设计课程的理解,以便更好地掌握基本概念、基本原理及基本实现方法。
2)以C++程序设计语言为基础,通过VC++程序的编写、调试、运行工作,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧。
3)同时,可通过实践教学环节增强学生动手解决实际问题的能力,为以后汲取实践经验,具有更强的工程应用能力。
2、课程设计要求:1)采用面向对象设计思想, 设计数据结构,能够管理2类人员信息(教师信息学生信息);2)完成输入/输出设计,通过ACCESS文件的表结构存储教师信息和学生信息。
3)能实现增、删、查、改等基本功能,并能够运用所学的知识进行创新实现个性化的设计。
二、实验环境1)硬件平台:PC机一台;2) 软件平台: Windows 2000操作系统,Visual C++6.0程序设计软件;三、系统分析与设计1、系统总框架图2、软件功能描述软件根据使用者权限的不同提供不同限制的功能:1)其中已注册的普通用户可直接通过登录框登录进入功能实现框进行查询及查看原文件、修改密码等操作,但不能更改人员信息原文件内容;2)未注册的用户可通过新用户注册框进行注册,成功后便可以普通用户的身份使用该软件;3)管理员则可以管理员权限身份登录进行查询、修改、增加记录、删除记录、查看原文件等操作,可以通过软件提供的功能直接更改原文件中人员信息;四、系统功能的实现1、系统设计的具体步骤1)运行Access软件创建相关数据库文件(student.mdb文件),其中包含四张表:student信息表、teacher信息表、login普通用户密码信息存储表、loginAdm管理员密码信息存储表;2)在操作系统下打开ODBC数据源管理器(可在控制面板中找到),选择用户DSN选项卡,添加新数据源(连接的数据库文件为student.mdb),取名为“info”;3)运行VC++6.0软件,新建MFC AppWizard[exe]工程;4)根据系统功能需求分析创建相应的对话框,添加各控件,并编辑相关代码,打开数据源,将数据源中的各表映射为VC中对应的类(注意:基类为CrecordSet 类):student表映射为s类,teacher表映射为t类,login表映射为login类,loginAdm 表映射为loginAdmin类;5)编译,调试,运行软件;2、数据结构描述与定义登录对话框类class CZDlg : public CDialog{public:CZDlg(CWnd* pParent = NULL);enum { IDD = IDD_Z_DIALOG };CComboBox m_type;CString m_11;CString m_12;protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV supportprotected:HICON m_hIcon;virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void Onok();afx_msg void OnButton2();afx_msg void OnRegister();afx_msg void OnModifySecret();DECLARE_MESSAGE_MAP()};功能实现框类:class z2 : public CDialog{public:z2(CWnd* pParent = NULL);// Dialog Data//{{AFX_DATA(z2)enum { IDD = IDD_DIALOG1 };CListCtrl m_list;CButton m_sk;CString m_e1;CString m_e2;long m_e3;CString m_e4;CString m_te2;long m_te3;CString m_te4;CString m_te5;CString m_te7;CString m_e5;//}}AFX_DATApublic:int sORt;CRect rectL;CRect rectS;// Overridesprotected:virtual void DoDataExchange(CDataExchange* pDX);virtual BOOL OnInitDialog(); protected:// Generated message map functions//{{AFX_MSG(z2)virtual void OnCancel();virtual void OnOK();afx_msg void Onselect();afx_msg void OnModify();afx_msg void Onadd();afx_msg void Ondelete();afx_msg void Onshow();afx_msg void OnRadio1();afx_msg void OnRadio2();afx_msg void OnButton5();afx_msg void Onhide();//}}AFX_MSGDECLARE_MESSAGE_MAP()};teacher表映射到vc的t类:class t : public CRecordset{public:t(CDatabase* pDatabase = NULL);DECLARE_DYNAMIC(t)long m_column1;CString m_column2;long m_column3;CString m_column4;CString m_column5;CString m_column6;CString m_column7;overridespublic:virtual CString GetDefaultConnect();virtual CString GetDefaultSQL();virtual void DoFieldExchange(CFieldExchange* pFX); };Student表映射到vc的s类:class s : public CRecordset{public:s(CDatabase* pDatabase = NULL);DECLARE_DYNAMIC(s)// Field/Param Data//{{AFX_FIELD(s, CRecordset)CString m_column1;CString m_column2;long m_column3;CString m_column4;CString m_column5;//}}AFX_FIELD// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(s)public:virtual CString GetDefaultConnect(); // Default connection stringvirtual CString GetDefaultSQL(); // Default SQL for Recordsetvirtualvoid DoFieldExchange(CFieldExchange* pFX);};3、各模块设计1)登录模块:a、登录功能实现思想流程图:b、修改密码模块和新用户注册模块操作流程雷同:②如有空提示用户重新输入,否则通过密码表核对信息是否正确2)主要功能实现模块a、查询按钮功能的实现流程图:b、另外修改、增加、删除记录等功能的实现也类似于查询,只需分别在实现查询一步后,调用Crecordset类的相关成员函数即可实现;c、折叠对话框中列表框部分功能的实现在特色函数解析中有详细介绍d、单选按钮选择查询对象功能的实现思想也较为简单:在其父框类中设置一“全局”变量“sORt”(生命周期为此父框类执行期间),当sORt=0时,显示学生信息框,保持教师信息隐去的状态,并将sORt变量值传递到查询、修改、增加、删除等功能函数中,以便确定操作对象是student表;当sORt=1时,类似,仅是将操作对象改为了teacher表,并显示教师信息框,保持学生信息隐去的状态;当sORt为其他值时,返回一操作提示框,不能进行任何有效操作。
学生课程实验报告书14 级计算机与信息科学系系软件专业 1401 班学号 3148907101 姓名钟媛媛学号 3148907107 姓名蔡丽萍2015 --2016 学年第 2 学期实验项目:模拟实现银行ATM自动取款机系统实验时间: 2016.5实验内容:一、课程设计的目的1、掌握面向对象编程的思想和方法;2、熟悉C++项目开发代码风格;3、理解项目需求,划分项目模块,学会设计数据库或数据结构及接口;4、掌握C++编程调试的基本技能;5、掌握项目实现流程。
二、具体内容模拟实现银行ATM自动取款机系统。
系统主要功能:(1)客户登录(2)余额查询(3)取款(4)转账(5)借存记录查询1 项目分析了解项目应用领域的ATM流程、操作规范,明确项目需求、确定项目功能。
1.1功能描述画出功能结构图,介绍系统中各模块的主要功能。
1.2 ATM流程画出系统ATM流程图。
1.3数据库设计根据系统数据需求,进行数据库概念设计、数据表设计。
用户信息表:1.4功能模块分记录查询recordidnamestates zmoney 记录查询介绍系统的功能模块设计思路,画出模块工作流程图。
2 项目实现使用C++编程实现项目。
2.1 功能模块设计系统中各类关系图,类的设计(类的定义)。
class ATM{public:int withdraw();//取款void zhuan();//转账void balance();//余额查询int interfac();//登陆int menu1();//菜单void record_info();//记录查询public:string name;//用户名string number;//账号float money;//余额string password;//密码};2.2 项目实现系统中各类的实现(各类成员函数的实现)。
void ATM::record_info()//记录查询{HRESULThr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库cout<<"---------------------------------"<<endl;cout<<"请输入查询的账号:";string number;cin>>number;string sql="select * from record where id ='"+number+"'";RECORDSET rs=db.JExecuteWithRecordset(sql);while(rs->rsEOF){cout<<"---------------------------------"<<endl;cout<<"该卡号不存在,请重新输入:";cin>>number;sql="select * from record where id ='"+number+"'";rs=db.JExecuteWithRecordset(sql);}while(!rs->rsEOF){cout<<"*********************************"<<endl;cout<<"用户卡号:"<<db.GetTextFiledVal(rs,"id")<<endl;cout<<"姓名:"<<db.GetTextFiledVal(rs,"name")<<endl;cout<<"状态类型:"<<db.GetTextFiledVal(rs,"states")<<endl;cout<<"时间"<<db.GetTextFiledVal(rs,"times")<<endl;cout<<"金额: "<<db.GetDoubleFieldVal(rs,"zmoney")<<endl;cout<<"*********************************"<<endl;rs->MoveNext();}db.Close();}void ATM::zhuan()//转账{gettime();HRESULThr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库if(hr==-1){cout<<"Connection fail!"<<endl;return;}cout<<"************************************"<<endl;cout<<"请输入您的卡号:";string number;cin>>number;cout<<"请输入您的姓名:";string user_name;cin>>user_name;string sql="select id from user_bank_info where id ='"+number+"'";RECORDSET rs=db.JExecuteWithRecordset(sql);while(rs->rsEOF){cout<<"##################################"<<endl;cout<<"该账号不存在,请重新输入:";cin>>number;sql="select id from user_bank_info where id ='"+number+"'";rs=db.JExecuteWithRecordset(sql);}cout<<"**************************************"<<endl;cout<<"请输入对方卡号:";string number2;cin>>number2;cout<<"请输入对方姓名:";string user_name2;cin>>user_name2;string sql1="select id from user_bank_info where id ='"+number2+"'";RECORDSET rs1=db.JExecuteWithRecordset(sql1);while(rs1->rsEOF){cout<<"###################################"<<endl;cout<<"无此卡号,请重新输入:";cin>>number2;sql1="select id from user_bank_info where id ='"+number2+"'";rs1=db.JExecuteWithRecordset(sql1);}cout<<"请输入您要转账的金额:"<<endl;string money;cin>>money;string take_state;take_state= "转账";string sql3="update user_bank_info set blance=blance-"+money+" where id='"+number+"'";long status=db.JExecuteWithoutRecordset(sql3);if(status>0){cout<<"***********************************"<<endl;cout<<"转账成功!"<<endl;}else{cout<<"***********************************"<<endl;cout<<"转账失败!"<<endl;}string sql4="update user_bank_info set blance=blance+"+money+" where id='"+number2+"'";long status2=db.JExecuteWithoutRecordset(sql4);if(status>0){cout<<"************************************"<<endl;cout<<"收款成功!"<<endl;}else{cout<<"************************************"<<endl;cout<<"收款失败!"<<endl;}string sql5="insert into record values('"+number+"','"+user_name+"','"+take_state+"', '"+money+"','"+time2+"') ";long status1=db.JExecuteWithoutRecordset(sql5);if(status1>0){cout<<"---------------------------------"<<endl;cout<<"您的转账记录添加成功!"<<endl;}else{cout<<"---------------------------------"<<endl;cout<<"您的转账记录添加失败!"<<endl;}string take_state2="收款";string sql6="insert into record values('"+number2+"','"+user_name2+"','"+take_state2+ "','"+money+"','"+time2+"') ";long status3=db.JExecuteWithoutRecordset(sql6);if(status3>0){cout<<"---------------------------------"<<endl;cout<<"对方转账记录添加成功!"<<endl;}else{cout<<"---------------------------------"<<endl;cout<<"对方转账记录添加失败!"<<endl;}db.Close();}void ATM::balance()//余额查询{gettime();HRESULThr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库if(hr==-1){cout<<"Connection fail!"<<endl;return;}cout<<"*************************************"<<endl ;cout<<"请输入您要查询的账号:";string number1;cin>>number1;cout<<"请输入姓名:"<<endl;string user_name1 ;cin>>user_name1;string sql="select * from user_bank_info where id ='"+number1+"'";RECORDSET rs=db.JExecuteWithRecordset(sql);while(rs->rsEOF){cout<<"*********************************"<<endl;cout<<"该账号不存在,请重新输入:";cin>>number1;sql="select * from user_bank_info where id ='"+number1+"'";rs=db.JExecuteWithRecordset(sql);}cout<<"*********************************"<<endl;cout<<"当前余额:"<<db.GetDoubleFieldVal(rs,"blance")<<endl;db.Close();}int ATM::withdraw()//取款{gettime();HRESULThr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库if(hr==-1){cout<<"Connection fail!"<<endl;return 0;}cout<<"---------------------------------"<<endl;string number;string user_name;string take_state;cout<<"请输入您的卡号:";cin>>number;string sql="select id from user_bank_info where id ='"+number+"'";RECORDSET rs=db.JExecuteWithRecordset(sql);while(rs->rsEOF){cout<<"---------------------------------"<<endl;cout<<"该账号不存在,请重新输入"<<endl;cin>>number;sql="select id from user_bank_info where id ='"+number+"'";rs=db.JExecuteWithRecordset(sql);}cout<<"---------------------------------"<<endl;string sql2="select name from user_bank_info where id ='"+number+"'";RECORDSET rs2=db.JExecuteWithRecordset(sql2);user_name =db.GetTextFiledVal(rs2,"name");cout<<"请输入取款金额:"<<endl;string cash;cin>>cash;string sql3="update user_bank_info set blance=blance-"+cash+" where id ='"+number+"'";long rs3=db.JExecuteWithoutRecordset(sql3);//主要用于增删改if(rs3>0){cout<<"&&&&&&&&&&&&&交易成功!&&&&&&&&&&&&&&&&"<<endl;}else{cout<<"&&&&&&&&&&&&&余额不足!&&&&&&&&&&&&&&&"<<endl;}take_state = "取款";string sql4="insert into record values('"+number+"','"+user_name+"','"+take_state+"', '"+cash+"','"+time2+"') ";//将信息插入到record表 RECORDSET rs4=db.JExecuteWithRecordset(sql4);long status=db.JExecuteWithoutRecordset(sql4);if(status>0){cout<<"……………………………………………"<<endl;cout<<"取款记录添加成功!"<<endl;}else{cout<<"………………………………………………"<<endl;cout<<"取款记录添加失败!"<<endl;}return 0;db.Close();menu1();}int ATM::interfac()//登陆{HRESULThr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库cout<<"请输入您的卡号:";string user_number;cin>>user_number;string sql="select id from user_bank_info where id ='"+user_number+"'";RECORDSET rs=db.JExecuteWithRecordset(sql);//主要用于查询和链接while(rs->rsEOF){cout<<"---------------------------------"<<endl;cout<<"该账号不存在,请重新输入"<<endl;cin>>user_number;sql="select id from user_bank_info where id ='"+user_number+"'";rs=db.JExecuteWithRecordset(sql);}cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"< <endl;cout<<"请输入您的密码:";string user_password ;cin>>user_password;string sql1="select passwd from user_bank_info whereid ='"+user_number+"' and passwd='"+user_password+"'";RECORDSET rs1=db.JExecuteWithRecordset(sql1);while(rs1->rsEOF){cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;cout<<"密码错误,请重新输入:";cin>>user_password;sql1="select password from user_bank_info where id ='"+user_number+"' and passwd='"+user_password+"'";rs1=db.JExecuteWithRecordset(sql1);}cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<end l;cout<<"登陆成功!"<<endl;db.Close();return 1;}2.2 主控模块实现void main(){HRESULThr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库if(hr==-1){cout<<hr<<"Connection fail!"<<endl;}cout<<"\t\t\t\t欢迎使用ATM机 "<<endl;int flag = 0;//记录登陆状态ATM atm;flag = atm.interfac();if(flag = 1){while(1){int index=atm.menu1();switch(index){case 1:atm.withdraw();break;//取款 case 2:atm.zhuan();break;case 3:atm.balance();break;case 4:atm.record_info();break;case 5:exit(0);}}}}2.3 效果展示3项目总结在实验开始时,很迷茫,不知道如何下手,老师发的例子也不理解,看了几遍还是不清楚,不知如何把数据写进数据库?看了同学的代码,似乎有点理解,和合作的同学一起构造思路,询问班里的学霸,一点点改错,增加功能,每写一个功能就测试下,花了很多时间,但是能把项目做出来还是很欣慰的。
课题:物业管理系统专业:软件工程班级:软件一班学号:12174598姓名:戴志豪指导教师:周林设计日期:2013/6/20成绩:重庆大学城市科技学院电气信息学院目录第一章课程设计的目标及其要求 (3)1.1.课程设计的目的 (3)1.2.课程设计的要求 (3)第二章正文 (4)2.1系统分析 (4)2.2 系统设计 (9)2.3 系统实施 (16)第三章课程设计总结或结论 (21)第四章参考文献 (22)附录 (22)《物业管理系统》一、课程设计的目的与要求1、课程设计的目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计基础(C++)》课程后进行的一次全面的综合设计。
本课程设计的目的和任务:①巩固和加深学生对C++语言课程的基本知识的理解和掌握。
②掌握C++语言编程和程序调试的基本技能。
③利用C++语言进行基本的软件设计。
④掌握书写程序设计说明文档的能力。
⑤提高运用C++语言解决实际问题的能力。
2、课程设计的要求进一步巩固《C++程序设计》所学的知识,特别加强数组,指针,结构体,文件数据类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以及用C/C++ 语言解决实际问题的能力,为以后后续课程的学习打好基础。
二、正文1 系统分析1.1系统开发背景、开发范围、建设目标与必要性随着我国市场经济的快速发展和人们生活水平的不断提高,简单的社区服务已不能满足人们的需求。
如何利用先进的管理手段,提高物业管理水平,是当今社会所面临的一个重要课题。
要想提高物业管理水平,必须全方位地提高物业管理意识。
只有高标准、高质量的社区服务才能满足人们的需求。
面对信息时代的挑战,利用高科技手段来提高物业管理无疑是一条行之有效的途径。
在某种意义上,信息与科技在物业管理与现代化建设中显现出越来越重要的地位。
面向对象的程序设计课程设计报告姓名:学号:班级:院系:日期:一、设计目的课程设计是课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,是教学计划中综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
本次课程设计通过设计和实现几个应用程序,达到以下目标:1.使学生能够比较熟练地掌握C++语言的基本语法规则;2.熟练掌握基本的面向对象的程序设计方法,如类的实现、创建类的实例—对象、实现类的继承等;3.掌握各种面向对象的程序设计技术,如继承和派生,虚继承、虚函数、抽象类、多态的实现、运算符重载、使用C++标准库等。
4.掌握在VC++平台上进行程序设计和调试的方法。
题目1:通过组合和派生构成新的类本设计题目的任务是使用Point类产生Line类。
分别通过组合类及派生类两种方法实现,并要求分别给出使用类模板实现的程序。
本设计题的目的是使学生掌握在不同的实现方法中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序调用它们及析构函数的执行顺序,掌握组合类和派生类。
另外本设计题目要让学生进一步掌握和理解类模板的技术及其实现方法。
题目3:成绩管理系统输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对N门考试的成绩进行管理(例N=5)要求:●用户录入每个学生每门课程的分数;●能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和排名;●计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息;●显示每门科目中,成绩在90分以上的学生信息。
另外还输出每门科目中不及格的学生信息;●能按姓名或者学号查找,增加,删除和保存各个学生的信息。
题目1:通过组合和派生构成新的类组合类:#include<iostream>using namespace std;class Point{public:Point(){cout<<"Point的默认构造函数被调用!"<<endl;}Point(int x,int y){cout<<"Point的构造函数被调用!"<<endl;}Point(Point &p){cout<<"Point的拷贝构造函数被调用!"<<endl;} ~Point(){cout<<"Point的析构函数被调用!"<<endl;}void set(int x1,int y1){x=x1;y=y1;}int getx(){return x;}int gety(){return y;}void display(){cout<<"("<<x<<","<<y<<")"<<endl;}private:int x,y;};class Line{public:Line(){cout<<"Line的默认构造函数被调用!"<<endl;}Line(Point &a,Point &b){BeginPoint=a;EndPoint=b;cout<<"Line的构造函数被调用!"<<endl;}Line(Line &l){cout<<"Line的拷贝构造函数被调用!"<<endl;}~Line(){cout<<"Line的析构函数被调用!"<<endl;}void setBeginPoint(Point &p){x1=p.getx();y1=p.gety();}void setEndPoint(Point &p1){x2=p1.getx();y2=p1.gety();}Point getBeginPoint(){return BeginPoint;}Point getEndPoint(){return EndPoint;}void display(){cout<<"直线的起点坐标为:";BeginPoint.display();cout<<"直线的终点坐标为:";EndPoint.display();cout<<endl;}private:int x1,x2,y1,y2;Point BeginPoint;Point EndPoint;};void main(){Point p,p1;p.set(1,2);p.display();p1.set(3,4);p1.display();Line line(p,p1);line.setBeginPoint(p);line.setEndPoint(p1);line.display();}用组合类实现时运行结果:本实验小结:开始写完之后运行结果输出的数据是随机数,不是自己想要得到的结果,经检查发现,在了Line类的构造函数中设置的参数不起作用,随后修改了它的参数,从而使它其中的函数set()能够运用Point类中的对象,然后,修改main()函数中调用的对象,从而得到了正确的结果。
面向对象程序设计课程设计报告模板个人报告课题物业管理系统专业软件工程班级软件一班学号12174598 姓名戴志豪指导教师周林设计日期2013/6/20 成绩重庆大学城市科技学院电气信息学院目录第一章课程设计的目标及其要求3 1.1.课程设计的目的3 1.2.课程设计的要求 3 第二章正文4 2.1系统分析 4 2.2 系统设计9 2.3 系统实施16 第三章课程设计总结或结论21 第四章参考文献22 附录22 物业管理系统一、课程设计的目的与要求1、课程设计的目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计基础C课程后进行的一次全面的综合设计。
本课程设计的目的和任务①巩固和加深学生对C语言课程的基本知识的理解和掌握。
②掌握C语言编程和程序调试的基本技能。
③利用C语言进行基本的软件设计。
④掌握书写程序设计说明文档的能力。
⑤提高运用C语言解决实际问题的能力。
2、课程设计的要求进一步巩固C程序设计所学的知识,特别加强数组,指针,结构体,文件数据类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以及用C/C 语言解决实际问题的能力,为以后后续课程的学习打好基础。
二、正文1 系统分析1.1系统开发背景、开发范围、建设目标与必要性随着我国市场经济的快速发展和人们生活水平的不断提高,简单的社区服务已不能满足人们的需求。
如何利用先进的管理手段,提高物业管理水平,是当今社会所面临的一个重要课题。
要想提高物业管理水平,必须全方位地提高物业管理意识。
只有高标准、高质量的社区服务才能满足人们的需求。
面对信息时代的挑战,利用高科技手段来提高物业管理无疑是一条行之有效的途径。
在某种意义上,信息与科技在物业管理与现代化建设中显现出越来越重要的地位。
物业管理方面的信息化与科学化,已成为现代化生活水平步入高台阶的重要标志。
课程设计报告题 目 文件备份管理系统课 程 名 称 面向对象程序设计课程设计院 部 名 称 计算机工程学院专 业 计算机科学与技术班 级 14计算机科学与技术(单)(1)学 生 姓 名 邵佳楠学 号 ********** 课程设计地点 A101课程设计学时 20学时指 导 教 师 赵金陵科技学院教务处制 成绩一、课程设计的目的和要求该课程设计的目的采用面向对象的程序设计语言,学会综合运用已学的C++知识,用面向对象的技术和文件打开,关闭,保存等实现一个小型的应用程序.开发实现一个应用程序,主要目的是使学生更好的掌握面向对象程序设计语言及其开发工具,掌握如何使用面向对象的程序设计语言设计一个小的软件系统。
通过该课程设计培养学生分析和解决实际问题的能力,培养学生综合应用基本概念,基本原理,和技术方法的能力,真正做到学以致用,使课本上抽象的理论,方法与具体的实践应用相结合。
二、系统需求分析(1)设计浏览文件按钮,点击弹出选择文件提示框(2)选取文件后把文件地址保存到静态变量(3)设计备份按钮,点击弹出保存文件提示框(4)选择保存目录后把目录地址保存到静态变量(5)执行文件保存函数传入两个地址达到文件备份的目的(6)成功保存后将文件名,备份时间,备份地址保存到txt文档中(7)读取txt文档内容在列表控件中显示(8)还原功能系统界面如下:1.浏览文件按钮2.源文件地址预览3.备份历史记录列表4.备份文件按钮5.取消按钮6.备份按钮三、总体设计文件备份顾名思义就是将一个文件复制到另一个文件夹中,但要实现复制最起码要知道两个参数:1.源文件 2.目的目录总体流程:四、详细设计(1)此处是窗口初始化函数以及初始化列表信息BOOL CFileCopyDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
面向对象程序设计课程设计报告㈡类设计定义Complex类:1.实部real ,虚部 imag double real,imag;2.构造函数:Complex(){} ,Complex(double r,double i){}3.析构函数:~Complex(){}4.加法重载: Complex operator+(Complex &c){}5.减法重载: Complex operator-(Complex &c){}6.乘法重载: Complex operator*(Complex &c){}7.除法重载: Complex operator/(Complex &c) {}8.重载==: int Complex:: operator==(Complex &c){}9.重载!=: int Complex:: operator!=(Complex &c)㈢函数设计1.多个复数四则运算的设计① void Add() {} //复数加法运算函数② void Sub() {} //复数减法运算函数③ void Mul() {} //复数乘法运算函数④ void Div() {} //复数除法运算函数2.主函数的设计数字选择功能菜单,根据输入的数字选择执行不同的功能。
用户输入复数的实部,虚部,从而得到计算结果。
void main() //主函数开始{char strChoise[20]; //定义字符串名system("cls");cou t<<"\t这是一个复数计算器,可以实现以下功能,请按对应的按键(0-4)\n\n\n";cou t<<"\t**************************菜单**************************\n";cou t<<"\t1:多复数加法,以0结束\n";cou t<<"\t2:多复数减法,以0结束\n";cou t<<"\t3:多复数乘法,以0结束\n";cou t<<"\t4:多复数除法,以0结束\n";cou t<<"\t0:退出程序\n\n:";cou t<<"\t请您选择:";cin>>strChoise;教师评语。
课程设计
20 ~ 20 学年第学期
设计题目职工工资管理系统设计
院(系)计算机科学与信息工程学院
专业
班级学号
学生姓名
设计时间20 年 1 月日——2011 年 1 月日
指导教师
提交日期 20 年月日
上海应用技术学院课程设计任务书
目录
1概述: .................................................................................. 错误!未定义书签。
1.1基本功能 (5)
1.2拓展功能: (6)
2课题分析 (7)
2.1类的设计 (7)
2.2类的实现 (8)
3详细设计说明 (9)
3.1程序主界面 (9)
3.2方案 (9)
3.3程序描述(输入INPUT) (9)
3.4 运行结果............................................................11 4课程设计总结 (12)
5软件使用说明 (13)
6附录(参考文献,原代码:) (13)
参考文献:................................................ 错误!未定义书签。
原代码 ................................................... 错误!未定义书签。
1概述:
课程设计目的
本课程设计是《面向对象程序设计》课程的后继教学环节,学好C++语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C++实际应用程序。
根据教材中人事管理应用程序框架,在此基础上按要求完成以下实际应用程序。
1.1基本功能
1.1.1输入员工信息
输入员工信息包括以下几个信息点
员工姓名
员工编号(4位数)
员工职务类型(1.技术经理2. 销售经理3. 技术人员4. 销售人员5. 文秘.)
输入后将自动保存至info.txt文件中。
在每次输入的时候均判断输入的合法性。
1.1.2计算员工工资
让用户输入要计算的员工姓名,然后根据不同的计算方式进行计算,具体计算方法为
1. 技术经理有6000元的固定工资,工作业绩可分为3个等级,每级可获得1000元奖金,
2. 销售经理有6000元的固定工资,奖金由他所管理的销售员的销售业绩而定,总销售额的2%
3.技术人员的工资根据他当月工作的小时数来定,时薪35元;
4. 销售人员的工资则是根据本人当月销售额来确定,工资为销售额的5%;
5. 文秘有4000元的基本工资,奖金视为当月工作情况而定;
提示是否需要存档
如果需要存档,则提示记录的月份,需要用户输入
在每次输入的时候均判断输入的合法性。
1.2 拓展功能:
1.2.1查询(已经完成)
1.2.2显示全部数据(已经完成)
1.2.3员工数据删除(未完成)
2课题分析
2.1类的设计
我的类的设计完全按照指导书上的设计图标所示,
设定一个虚基类employee,对于类中所有数据全部定义为公有,为后面的继承提供方便接下来technician、manager、salesman和secretary全部共有继承employee
最后根据技术经理和销售经理的特点,技术经理techmanager继承technician和manager
销售经理继承manager和salesman
这样做的目地和特点是结构清晰,目地明确,方法简便。
2.2类的实现
technician、manager、salesman和secretary以及techmanager和salesmanager构造函数全部传入自己的参数,用于计算工资,计算工资函数全部依照自己的计算特点来进行计算,其中techmanager和salesmanager又有各自的特点进行了继承。
在基类的employee中先定义了数据类型,全部为公有,这样方便下面的继承来访问到,对于里面的函数
void info();用于输入信息
bool search();用于查找
bool disply();用于全部显示
virtual void countsalary()=0;虚函数,用于计算工资,但是在这里什么也不做
int recordinfo();记录输入的信息
int recordsalary();记录员工的工资
具体做法
定义struct infostruct和struct salarystruct,用于存放不同要求的信息
void info();提示用户输入姓名,然后存入临时的字符串数组,拷贝到NAME中,再提示输入编号,复制到number中。
bool search();打开文件,读取信息,查找和name相匹配的,关闭文件。
bool disply(),打开文件,进行循环,知道文件结束,循环体中读一条信息显示一条
int recordinfo();将员工的基本数据记录到结构体中,打开文件,将数据输入文件,关闭文件
int recordsalary();将员工的工资数据记录到结构体中,打开文件,将数据输入文件,关闭文件
3详细设计说明
3.1程序主界面
3.1.1程序系统的结构
在类的实现中将题目中所包括的用法全部都写出,在主函数中,直接用IF语句来进行完成到,在每个IF语句中,对对象EM来访问类中的函数,方便而又快捷。
3.2方案
由菜单引导用户进行所需的功能,菜单如示意图所示要一目了然,
该程序不仅可以给用户提供输入员工信息的用处,而且具有查找,全部显示,以及保存和调用等功能,虽然在有些地方还有不足之处,有待开发,但是还是非常实用和方便。
按照题目提出的要求,先进行类的定义,随后对每个类进行函数的编写,完成类的实现,在主函数中,进行各个不同的操作,都是对pem数组进行调用。
*pem[6]={&ma,&tm,&sm,&te,&sa,&se}
3.3程序描述
可以添加新的信息。
其中添加时提示也非常清楚。
性能:输入相应的信息,所有进行计算处理,包括保存和提取
输入项:输入员工的工作信息
输出项:对应的要求输出
算法
输入职工的姓名及工作情况,判断输入内容是否合法(每个在用户输入信息后都进行合法的判断),职工的信息分开放在两个结构体中。
两个结构体分别用于两个txt 文件的保存。
接口
输入对应信息输出相应结果
主菜单——选择
主函数中要用到类中的函数时,全部通过对象来访问到。
3.4 运行结果
《面向对象程序设计》程序设计报告
4课程设计总结
5软件使用说明
6
7附录(参考文献:)
参考文献:
源代码:
11。