《面向对象程序设计》课程设计报告-人员信息管理系统.doc
《《面向对象程序设计》课程设计报告-人员信息管理系统.doc》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课程设计报告-人员信息管理系统.doc(19页珍藏版)》请在三一文库上搜索。
1、目 录一、课程设计的目的和要求21、课程设计目的22、课程设计要求2二、实验环境2三、系统需求分析与设计21、系统总框架图22、软件功能描述3四、系统功能的实现31、系统设计的具体步骤32、数据结构描述与定义43、各模块设计54、特色函数分析6五、系统测试与分析71、调试步骤72、调试中出现的问题及其解决方法73、软件试用(测试)84、软件存在的不足与完善对策11六、结论与心得11七、参考文献12一、课程设计的目的和要求1、课程设计目的:1)通过课程设计能使学生掌握学习理论知识时没有注意到的细节, 加深对面向对象程序设计课程的理解,以便更好地掌握基本概念、基本原理及基本实现方法。2)以C+程序
2、设计语言为基础,通过VC+程序的编写、调试、运行工作,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧。3)同时,可通过实践教学环节增强学生动手解决实际问题的能力,为以后汲取实践经验,具有更强的工程应用能力。2、课程设计要求:1)采用面向对象设计思想, 设计数据结构,能够管理2类人员信息(教师信息学生信息);2)完成输入/输出设计,通过ACCESS文件的表结构存储教师信息和学生信息。3)能实现增、 删、 查、改等基本功能,并能够运用所学的知识进行创新实现个性化的设计。二、实验环境1)硬件平台:PC机一台;2) 软件平台: Windows 2000操作系统,Visual C+6.0程序设
3、计软件;三、系统分析与设计1、系统总框架图2、软件功能描述软件根据使用者权限的不同提供不同限制的功能:1)其中已注册的普通用户可直接通过登录框登录进入功能实现框进行查询及查看原文件、修改密码等操作,但不能更改人员信息原文件内容;2)未注册的用户可通过新用户注册框进行注册,成功后便可以普通用户的身份使用该软件;3)管理员则可以管理员权限身份登录进行查询、修改、增加记录、删除记录、查看原文件等操作,可以通过软件提供的功能直接更改原文件中人员信息;四、系统功能的实现1、系统设计的具体步骤1)运行Access软件创建相关数据库文件(student.mdb文件),其中包含四张表:student信息表、t
4、eacher信息表、login普通用户密码信息存储表、loginAdm管理员密码信息存储表;2)在操作系统下打开ODBC数据源管理器(可在控制面板中找到),选择用户DSN选项卡,添加新数据源(连接的数据库文件为student.mdb),取名为“info”;3)运行VC+6.0软件,新建MFC AppWizardexe工程;4)根据系统功能需求分析创建相应的对话框,添加各控件,并编辑相关代码,打开数据源,将数据源中的各表映射为VC中对应的类(注意:基类为CrecordSet类):student表映射为s类,teacher表映射为t类,login表映射为login类,loginAdm表映射为log
5、inAdmin类;5)编译,调试,运行软件;2、数据结构描述与定义 19 / 19登录对话框类class CZDlg : public CDialogpublic:CZDlg(CWnd* pParent = NULL);enum IDD = IDD_Z_DIALOG ;CComboBoxm_type;CStringm_11;CStringm_12;protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV supportprotected:HICON m_hIcon;virtual BOOL OnInitDialog(
6、);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 CDialogpublic:z2(CWnd* pParent = NULL); /
7、Dialog Data/AFX_DATA(z2)enum IDD = IDD_DIALOG1 ;CListCtrlm_list;CButtonm_sk;CStringm_e1;CStringm_e2;longm_e3;CStringm_e4;CStringm_te2;longm_te3;CStringm_te4;CStringm_te5;CStringm_te7;CStringm_e5;/AFX_DATApublic:int sORt; CRect rectL; CRect rectS;/ Overridesprotected:virtual void DoDataExchange(CData
8、Exchange* 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 OnRad
9、io2();afx_msg void OnButton5();afx_msg void Onhide();/AFX_MSGDECLARE_MESSAGE_MAP();teacher表映射到vc的t类:class t : public CRecordsetpublic:t(CDatabase* pDatabase = NULL);DECLARE_DYNAMIC(t)longm_column1;CStringm_column2;longm_column3;CStringm_column4;CStringm_column5;CStringm_column6;CStringm_column7;over
10、ridespublic:virtual CString GetDefaultConnect(); virtual CString GetDefaultSQL(); virtual void DoFieldExchange(CFieldExchange* pFX); ;Student表映射到vc的s类:class s : public CRecordsetpublic:s(CDatabase* pDatabase = NULL);DECLARE_DYNAMIC(s)/ Field/Param Data/AFX_FIELD(s, CRecordset)CStringm_column1;CStrin
11、gm_column2;longm_column3;CStringm_column4;CStringm_column5;/AFX_FIELD/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(s)public:virtual CString GetDefaultConnect(); / Default connection stringvirtual CString GetDefaultSQL(); / Default SQL for Recordsetvirtual void DoFieldExch
12、ange(CFieldExchange* pFX); ;3、各模块设计1)登录模块:a、登录功能实现思想流程图:b、修改密码模块和新用户注册模块操作流程雷同:输入相关信息(用户名、密码、新密码等)如有空提示用户重新输入,否则通过密码表核对信息是否正确错误则重新输入相关信息,否则执行对应操作2)主要功能实现模块a、查询按钮功能的实现流程图:b、另外修改、增加、删除记录等功能的实现也类似于查询,只需分别在实现查询一步后,调用Crecordset类的相关成员函数即可实现;c、折叠对话框中列表框部分功能的实现在特色函数解析中有详细介绍d、单选按钮选择查询对象功能的实现思想也较为简单:在其父框类中设置一
13、“全局”变量“sORt”(生命周期为此父框类执行期间),当sORt=0时,显示学生信息框,保持教师信息隐去的状态,并将sORt变量值传递到查询、修改、增加、删除等功能函数中,以便确定操作对象是student表;当sORt=1时,类似,仅是将操作对象改为了teacher表,并显示教师信息框,保持学生信息隐去的状态;当sORt为其他值时,返回一操作提示框,不能进行任何有效操作。4、特色函数解析感觉各功能按钮函数实现思想都很简单没什么特色,自认为隐藏列表框相关代码有点新意,当然了解相关函数实现起来也不难,以下是功能实现框的初始化函数中一段代码:CRect line;/*rectS,rectL在该框头
14、文件的类声明中定义为CRect对象,以便该框其他函数能使用*/GetWindowRect(&rectL);/默认为获取当前对话框右下角顶点坐标GetDlgItem(IDC_ob)-GetWindowRect(&line);/获取对话框中画的分隔线(图像控件画的/线一样的矩形,其右侧部分即为列表框)右下角顶点坐标rectS.left=rectL.left;rectS.top=rectL.top;rectS.bottom=rectL.bottom;rectS.right=line.right;/*根据line、rectL确定rectS的右下角坐标,两对顶角即可确定一矩形,至此已可确定rectL(原
15、始窗口)和rectS(“切掉”列表框后的窗口)两矩形*/SetWindowPos(NULL,0,0,rectS.Width(),rectS.Height(),SWP_NOMOVE|SWP_NOZORDER);/*初始对话框时显示为“切掉”列表框后的小窗口,这样较符合使用需求,之后使用时根据“显示源文件”按钮的触发显示相应的对话框*/五、系统测试与分析1、调试步骤1)保存代码,编译,连接;2)若报错,则根据错误提示找到错误的具体位置,进行相关修改;(可直接F4键)3)若错误不能轻易找出,就设置断点,进行跟踪调试,找到根本原因所在;4)直至成功编译、连接之后,运行软件进行功能测试;2、调试中出现的
16、问题及其解决方法1)开始进入功能实现框时,学生信息框和教师信息框都没隐掉,用户可在任意框中输入信息,而不先去选择查询对象,软件不能准确判断应去查询哪张表,可能出现不理想的结果;解决方法:在功能实现框的初始化函数中,通过GetDlgItem()和EnableWindow()函数将学生信息框和教师信息框隐掉,这样用户必须先选对象才能其他操作,按预期的步骤执行,避免更多细节造成的漏洞;2)“修改”按钮消息响应函数开始设计时必须在查询成功后,才能修改正确的目的记录,否则可能张冠李戴,修改了其他的记录,而且添加删除记录时会出错解决方法:开始设计思想是查到目标记录后,指针就只向了需要的记录,后面的操作代码
17、便可在此基础上直接完成相应操作即可;改进时便将修改、添加、删除函数起始端加入查询代码,完后比较是否为需要更改的记录,是的话继续后面操作,这样便可准确实现相应功能了;3)设计权限问题时想使不同权限者享有不同操作权限,原本通过调用两不同窗口便可实现,但那样显得资源冗余,便设想在同一框中实现想要的功能,但若要使在第一个对话框中的选择操作在第二个框体现出,就要在两个框口间设有个传递响应消息的变量,即全局变量,但尝试了很多定义方法,都报“不可处理的外部变量”“此变量未定义”之类错误解决方法:其实很简单,回归课本,使用extern即可,在第一窗口函数中定义此变量,在第二窗口函数中通过extern引用该变量
18、即可,教训千万要打好理论基础;4)设计隐藏列表窗口框时,不能按理想中的那样显示出需要的窗口解决方法:通过MSDN查询到Crect类的定义及相关成员函数使用方法,弄清了GetWindowRect()具体作用,便在几次猜想后的尝试中成功解决。3、软件试用(测试)1)运行软件首先进入用户登录框:2)选择登录方式,否则会出现如下提示框:输入用户名和密码,二者不得有空,否则提示不得为空;若用户名和密码不正确,提示出错,重输;3)验证通过,进入功能实现框: 管理员登录时功能按钮均可用 普通用户登录修改、增加、删除按钮不可用(呈灰色)4)选择单选按钮-学生信息(教师信息),输入学号“208050535”(姓
19、名),查询得相关信息,同时点击显示文件按钮,得如下对话框中信息:5)同时可在登录框选择“修改密码”按钮,进行修改密码操作:(如图1) 图1 图26)对于使用该软件新用户,可在登录框选择新用户注册,成功后便可以普通用户身份正常使用软件:(如图2)若注册的用户名已存在,则返回如下提示框:7)完成需要的操作后,点击“退出”按钮后即可关闭软件;4、软件存在的不足与完善对策1)在打开功能对话框时,两个年龄编辑框中初始显示有“0”,最好为空;对策:在此对话框初始化函数中,先将该编辑框关联的长整型变量转为字符串型,再赋予空值显示出;2)两个日期编辑框关联的变量没有规定为日期类型,而是简单的字符串型,因此当输
20、入任何非日期格式的字符串时,都会被接收存入数据库源文件中,不符合使用需求;策略:可在数据库源文件中将这两个属性改为日期类型,映射为类中变量也为时间类型即可,但如何将初始值设为空仍有待解决;3)只能按一种方式查询学生:学号(教师:姓名)应加设更多种查询方式,扩大其查询功能;对策:例如student表,可分别增加以“姓名”“年龄”等为关键字的查询方式,实现与已完成的查询思想雷同,如以姓名为关键字分别与数据库表中数据项比较,匹配到则将该元组各属性值依次传递给对应编辑框关联的变量进行显示,否则到表末仍未找到匹配项,则查无此记录;4)每次点击单选按钮都会生成新的表头,而不清除先前存在的表头,以至列表控件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 课程设计 报告 人员 信息管理 系统
链接地址:https://www.31doc.com/p-3259874.html