资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目 录一、课程设计的目的和要求21、课程设计目的22、课程设计要求2二、实验环境2三、系统需求分析与设计21、系统总框架图22、软件功能描述3四、系统功能的实现31、系统设计的具体步骤32、数据结构描述与定义43、各模块设计54、特色函数分析6五、系统测试与分析71、调试步骤72、调试中出现的问题及其解决方法73、软件试用(测试)84、软件存在的不足与完善对策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 AppWizardexe工程;4)根据系统功能需求分析创建相应的对话框,添加各控件,并编辑相关代码,打开数据源,将数据源中的各表映射为VC中对应的类(注意:基类为CrecordSet类):student表映射为s类,teacher表映射为t类,login表映射为login类,loginAdm表映射为loginAdmin类;5)编译,调试,运行软件;2、数据结构描述与定义 1 / 18登录对话框类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();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); / 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(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 CRecordsetpublic:t(CDatabase* pDatabase = NULL);DECLARE_DYNAMIC(t)longm_column1;CStringm_column2;longm_column3;CStringm_column4;CStringm_column5;CStringm_column6;CStringm_column7;overridespublic: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;CStringm_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 DoFieldExchange(CFieldExchange* pFX); ;3、各模块设计1)登录模块:a、登录功能实现思想流程图:b、修改密码模块和新用户注册模块操作流程雷同:输入相关信息(用户名、密码、新密码等)如有空提示用户重新输入,否则通过密码表核对信息是否正确错误则重新输入相关信息,否则执行对应操作2)主要功能实现模块a、查询按钮功能的实现流程图:b、另外修改、增加、删除记录等功能的实现也类似于查询,只需分别在实现查询一步后,调用Crecordset类的相关成员函数即可实现;c、折叠对话框中列表框部分功能的实现在特色函数解析中有详细介绍d、单选按钮选择查询对象功能的实现思想也较为简单:在其父框类中设置一“全局”变量“sORt”(生命周期为此父框类执行期间),当sORt=0时,显示学生信息框,保持教师信息隐去的状态,并将sORt变量值传递到查询、修改、增加、删除等功能函数中,以便确定操作对象是student表;当sORt=1时,类似,仅是将操作对象改为了teacher表,并显示教师信息框,保持学生信息隐去的状态;当sORt为其他值时,返回一操作提示框,不能进行任何有效操作。4、特色函数解析感觉各功能按钮函数实现思想都很简单没什么特色,自认为隐藏列表框相关代码有点新意,当然了解相关函数实现起来也不难,以下是功能实现框的初始化函数中一段代码:CRect line;/*rectS,rectL在该框头文件的类声明中定义为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(原始窗口)和rectS(“切掉”列表框后的窗口)两矩形*/SetWindowPos(NULL,0,0,rectS.Width(),rectS.Height(),SWP_NOMOVE|SWP_NOZORDER);/*初始对话框时显示为“切掉”列表框后的小窗口,这样较符合使用需求,之后使用时根据“显示源文件”按钮的触发显示相应的对话框*/五、系统测试与分析1、调试步骤1)保存代码,编译,连接;2)若
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号