




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学程序设计实训课程设计说明书1 绪论 随着信息技术在管理上越来越深入而广泛地应用,管理信息系统的实施在技术上已经逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机的组织起来,就必须建立与自身特点相适应的管理信息系统。 随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。面对庞大的信息量学要有信息管理系统来提高学生信息管理系统的效率。通过这样的系统可以做到信息的规范管理,科学统计和快速查询,修改,添加,删除等,从而减少管理方面的工作量。本次课程设计的学生管理系统主要用于学校学生信息管理,其主要任务是用计算机对学生各种信息进行日常管理,如添加,修改,删除,查询和排序等等。根据这些要求我通过在Visual C+6.0的环境下进行系统的设计,数据库设计,窗口及相应的程序设计来完成设计学生管理系统。2 系统设计用SQL Sever 2008设计学生信息数据库,数据库表项中包括学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。连接数据库,编写VC+程序,实现以下功能:(1)学生信息的录入功能(2)学生信息的浏览功能(3)学生信息的查询功能(可以按学号,姓名进行查询)(4)学生信息的排序(可以按学号,姓名进行排序)(5)学生信息的删除和修改功能系统结构图如图1: 图1 系统结构图说明:在主窗口可以直接排序、删除和浏览。查询条件、修改信息和添加信息都需要在弹出的模态对话框中输入,在主窗口显示。实现功能总程序流程图如图2:图2 程序流程图流程图说明:首先进行初始化,进入主窗口,在主窗口有进入各种操作的按钮,判断是什么功能的按钮按下,进入相应功能。若是删除、排序或者浏览按钮,则直接在主窗口显示相应的结果;若是添加按钮被按下,则弹出对话框,在对话框中输入要添加的学生的信息,确定后保存;若是修改按钮被按下,则弹出对话框,在对话框中填写修改后希望保存的信息,确定后保存修改;若是查询按钮被按下,弹出对话框,输入查询条件,确认后在主窗口显示信息。3 重要函数(1)DoModal()返回值:如果函数成功则返回IDOK或IDCANCEL;否则返回0或-1。如果此属性表是作为一个向导建立的,DoModal返回ID_WIZFINISH或IDCANCEL。此成员函数用来显示一个模态对话框。其返回值对应于用来关闭对话框的控件的ID。此函数返回后,Windows响应这个对话框,所有的属性页都会被销毁。而这些对象本身仍然存在。通常,你将在DoModal返回IDOK之后CPropertyPage对象检取数据。(2)数据库操作函数操作数据库时常用的一个类叫CRecordset。它封装了很多属性和操作,用来操作数据库,常用的有数据成员如下:m_strFilter:它包含的字符串相当于SQL语句中的where子句,可以用它作为一个过滤器只选择那些符合标准的记录m_strSort:它包含的字符串相当于SQL语句中的order by子句,用来控制记录集的排序方式。这些数据成员可以在Open()或Query()函数之前指定。常用的函数:Open():打开数据集;Close():关闭数据集;IsOpen():判断数据集是否已经打开,返回非零值如果记录集对象已经调用过Open()或Query()函数但是记录集没有被关闭,否则返回0;IsBOF():返回非零值如果记录集已经指向第一个记录集之前;IsEOF():返回非零值如果记录集已经指向最后一个记录集的后面;AddNew():准备向记录集中添加一条新纪录。完成以后必须调用Update函数完成添加工作(即添加到数据库中);Delete():从记录集中删除当前记录;Edit():准备修改当前记录。完成后必须调用Update函数完成修改;Update():完成AddNew()或Edit()的操作,他保存添加的新的记录或修改过的记录到数据库中;Move():移动当前记录到指定的位置;MoveFirst():移动当前记录到记录集的第一个记录;MoveLast():移动当前记录到记录集的最后一个记录;MoveNext():移动当前记录到该记录的下一个记录;MovePrev():移动当前记录到该记录的上一个记录。(3)MessageBox()显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。(4)Format()Format()是CString类的一个成员函数,它通过格式操作使任意类型的数据转换成一个字符串。(5)IsEmpty()IsEmpty() 函数 返回Boolean值,指出变量是否已经初始化。语法IsEmpty(expression)必要的expression参数是一个Variant,包含一个数值或字符串表达式。但是,因为 IsEmpty 被用来确定个别变量是否已初始化,所以 expression 参数通常是单一变量名。说明如果变量未初始化或已明确设置为Empty,则IsEmpty返回True;否则返回False。如果 expression 含有多个变量,则 IsEmpty 总是返回 False。IsEmpty 只返回对 variant表达式有意义的信息。(6)UpdateData()UpdateData(TRUE)刷新控件的值到对应的变量。(外部输入值交给内部变量)即:控件的值变量。UpdateData(FALSE) 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)即:变量值控件显示。(7)CRecordset类有两个公共数据成员m_strFilter和m_strSort用来设置对记录的过滤和排序在调用Open或Requery前,如果在这两个数据成员中指定了过滤或排序,那么Open和Requery将按这两个数据成员指定的过滤和排序来查询数据源成员m_strFilter用于指定过滤器m_strFilter实际上包含了SQL的WHERE子句的内容,但它不含WHERE关键字成员m_strSort用于指定排序m_strSort实际上包含了ORDER BY子句的内容,但它不含ORDER BY关键字调用无参数成员函数Close可以关闭记录集在调用了Close函数后,程序可以再次调用Open建立新的记录集CRecordset的析构函数会调用Close函数,所以当删除CRecordset对象时记录集也随之关闭。4 详细设计4.1 数据库设计 根据任务要求设计数据库,设计表如图3:图3 数据库设计4.2 窗口设计和添加程序(1) 添加对话框设计如图4: 图4添加对话框添加信息流程图如图5: 图5添加信息流程图添加程序:void CYEXIAOYU3View:Ontianjia() / TODO: Add your control notification handler code here CTianjia cadd;if(cadd.DoModal()=IDOK)/当cadd.DoModal()后,显示一个模态对话框,此时DoModal()函数并不返回,直到用户关闭此对话框时,DoModal才返回。/如果用户点击了确定按钮,那么DoModal()函数就返回IDOK。IDOK是一个宏。直到用户调用DoModal(),对话框才会显示出来。m_pSet-AddNew();m_pSet-m_xueh=cadd.m_xueh;m_pSet-m_xingm=cadd.m_xingm;m_pSet-m_xingb=cadd.m_xingb;m_pSet-m_nianl=cadd.m_nianl;m_pSet-m_chus=cadd.m_chus;m_pSet-m_diz=cadd.m_diz;m_pSet-m_dianh=cadd.m_dianh;m_pSet-m_email=cadd.m_email;m_pSet-Update();/将做的增删改操作更新到数据库中m_pSet-Requery();/重新查询记录集m_pSet-MoveNext();UpdateData(FALSE);(2)删除操作中当所有数据都被删除时对话框显示如图6: 图6执行删除时对话框删除操作流程图如图7: 图7删除操作流程图删除程序:void CYEXIAOYU3View:Onshanchu() / TODO: Add your control notification handler code herem_pSet-Delete();m_pSet-MoveNext();if(m_pSet-IsEOF()m_pSet-MoveLast();if(m_pSet-IsBOF()m_pSet-SetFieldNull(NULL);UpdateData(FALSE);(3) 修改对话框设计如图8: 图8修改对话框修改操作流程图如图9: 图9修改操作流程图修改程序:void CYEXIAOYU3View:Onxiugai() / TODO: Add your control notification handler code here CXiugai cm;if(cm.DoModal()=IDOK)m_pSet-Edit();m_pSet-m_xueh=cm.m_xueh;m_pSet-m_xingm=cm.m_xingm;m_pSet-m_xingb=cm.m_xingb;m_pSet-m_nianl=cm.m_nianl; m_pSet-m_chus=cm.m_chus;m_pSet-m_diz=cm.m_diz;m_pSet-m_dianh=cm.m_dianh;m_pSet-m_email=cm.m_email;m_pSet-Update();/将做的修改操作更新到数据库中m_pSet-Requery();/重新查询记录集UpdateData(FALSE);(4)查询操作 1.按学号查询对话框设计如图10: 图10按学号查询对话框按学号查询操作流程图如图11: 图11按学号查询流程图按学号查询程序:void CYEXIAOYU3View:Onxuehaochaxun() / TODO: Add your control notification handler code here CXuehaochaxun numquery;CString value;if(numquery.DoModal()=IDOK)if(numquery.m_chaxxueh.IsEmpty()MessageBox(要查询的学号不能为空!);return;if(m_pSet-IsOpen() m_pSet-Close();/如果记录及打开,则先关闭m_pSet-m_strFilter.Format(学号=%s,numquery.m_chaxxueh);m_pSet-Open();if(!m_pSet-IsEOF() /如果打开记录集有记录UpdateData(FALSE);/自动更新表单中控件显示的内容elseMessageBox(没有查到你要找的记录); 2.按姓名查询对话框设计如图12: 图12按姓名查询对话框按姓名查询操作流程图如图13: 图13按姓名查询流程图按姓名查询程序:void CYEXIAOYU3View:Onxingmingchaxun() / TODO: Add your control notification handler code here CXingmingchaxun namequery;if(namequery.DoModal()=IDOK)if(namequery.m_chaxxingm.IsEmpty()MessageBox(要查询的姓名不能为空!);return; if(m_pSet-IsOpen() m_pSet-Close();/如果记录及打开,则先关 闭 m_pSet-m_strFilter.Format(姓名=%s,namequery.m_chaxxingm);m_pSet-Open();if(!m_pSet-IsEOF() /如果打开记录集有记录UpdateData(FALSE);/自动更新表单中控件显示的内容elseMessageBox(没有查到你要找的记录);(5)排序操作 1.按学号排序程序:void CYEXIAOYU3View:Onxuehaopaixu() / TODO: Add your control notification handler code here m_pSet-Close();m_pSet-m_strSort=学号;m_pSet-Open();UpdateData(FALSE); 按学号排序流程图如图14: 图14按学号排序流程图2.按姓名排序程序:void CYEXIAOYU3View:Onxingmingpaixu() / TODO: Add your control notification handler code here m_pSet-Close();m_pSet-m_strSort=姓名;m_pSet-Open();UpdateData(FALSE); 按姓名排序流程图如图15: 图15按姓名排序流程图5系统测试(1)添加功能测试 图16添加学生信息 图17添加数据后数据库(2)修改功能测试 图18修改信息 图19修改后数据库(3)查询功能测试 图20按学号查询 图21查询结果6 总结与体会通过此次课程设计,使我更加扎实的掌握了有关C+和数据库方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。参考文献 1 谭浩强.C+程序设计(第二版)北京:清华大学出版社,2011.8 2 苗雪兰数据库系统原理教程北京:机械工业出版社,2008.73 任哲编MFC Windows 应用程序设计(第三版).北京:清华大学出版社,2013.3 4 侯俊杰深入浅出MFC(第二版).武汉:华中科技大学出版社,2009.1 5赵永发,刘莉莉Visual C+入门经典北京:机械工业出版社,2013.4附录主要程序 YEXIAOYU3View.cppBOOL CYEXIAOYU3View:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CRecordView:PreCreateWindow(cs);void CYEXIAOYU3View:OnInitialUpdate()m_pSet = &GetDocument()-m_yEXIAOYU3Set;CRecordView:OnInitialUpdate();GetParentFrame()-RecalcLayout();ResizeParentToFit();/ CYEXIAOYU3View printingBOOL CYEXIAOYU3View:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CYEXIAOYU3View:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CYEXIAOYU3View:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CYEXIAOYU3View diagnostics#ifdef _DEBUGvoid CYEXIAOYU3View:AssertValid() constCRecordView:AssertValid();void CYEXIAOYU3View:Dump(CDumpContext& dc) constCRecordView:Dump(dc);CYEXIAOYU3Doc* CYEXIAOYU3View:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CYEXIAOYU3Doc);return (CYEXIAOYU3Doc*)m_pDocument;#endif /_DEBUG/ CYEXIAOYU3View database supportCRecordset* CYEXIAOYU3View:OnGetRecordset()return m_pSet;/ CYEXIAOYU3View message handlersvoid CYEXIAOYU3View:Ontianjia() / TODO: Add your control notification handler code here CTianjia cadd;if(cadd.DoModal()=IDOK)/当cadd.DoModal()后,显示一个模态对话框,此时DoModal()函数并不返回,直到用户关闭此对话框时,DoModal才返回。/如果用户点击了确定按钮,那么DoModal()函数就返回IDOK。IDOK是一个宏。直到用户调用DoModal(),对话框才会显示出来。m_pSet-AddNew();m_pSet-m_xueh=cadd.m_xueh;m_pSet-m_xingm=cadd.m_xingm;m_pSet-m_xingb=cadd.m_xingb;m_pSet-m_nianl=cadd.m_nianl;m_pSet-m_chus=cadd.m_chus;m_pSet-m_diz=cadd.m_diz;m_pSet-m_dianh=cadd.m_dianh;m_pSet-m_email=cadd.m_email;m_pSet-Update();/将做的增删改操作更新到数据库中m_pSet-Requery();/重新查询记录集m_pSet-MoveNext();UpdateData(FALSE);void CYEXIAOYU3View:Onshanchu() / TODO: Add your control notification handler code herem_pSet-Delete();m_pSet-MoveNext();if(m_pSet-IsEOF()m_pSet-MoveLast();if(m_pSet-IsBOF()m_pSet-SetFieldNull(NULL);UpdateData(FALSE);void CYEXIAOYU3View:Onxiugai() / TODO: Add your control notification handler code here CXiugai cm;if(cm.DoModal()=IDOK)m_pSet-Edit();m_pSet-m_xueh=cm.m_xueh;m_pSet-m_xingm=cm.m_xingm;m_pSet-m_xingb=cm.m_xingb;m_pSet-m_nianl=cm.m_nianl;m_pSet-m_chus=cm.m_chus;m_pSet-m_diz=cm.m_diz;m_pSet-m_dianh=cm.m_dianh;m_pSet-m_email=cm.m_email;m_pSet-Update();/将做的修改操作更新到数据库中m_pSet-Requery();/重新查询记录集UpdateData(FALSE);void CYEXIAOYU3View:Onxuehaochaxun() / TODO: Add your control notification handler code here CXuehaochaxun numquery;CString value;if(numquery.DoModal()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 同分异构体(专练)-高考化学二轮复习考点突破(原卷版)
- 绵山风景区天气预报
- 鸡凤翔旅游攻略
- 酸枣仁科普课件
- 探索世界与把握规律-2026高考政治一轮复习单元测试卷(含答案)
- 人教版八年级英语下册专练:重点语法过关:状语从句(含答案)
- 酯化反应课件
- CN120199912A 一种磷酸锰铁锂电池组及其加工方法
- 人教版八年级英语上册期中学情评估(含答案)
- 老师岗前专业知识培训课件
- (2025年标准)监控维护维修协议书
- 国务院部署实施“人工智能+”行动的意见解读
- 2025年繁轩科技发展有限公司招聘考试笔试试题(含答案)
- 智能制造大数据分析技术及应用导论 课件全套 第1-8章 智能制造大数据概述-智能制造大数据技术应用实例
- 音乐游戏 花巴掌拍拍教学设计-2025-2026学年小学音乐二年级上册人音版(2024 主编:赵季平杜永寿)
- 2025海南省通信网络技术保障中心招聘事业编制人员(第2号)考试备考题库及答案解析
- 肿瘤护理学高级进阶2025年测试答案及解析
- 2025年宣城市总工会招聘社会化工会工作者13名笔试参考题库附答案解析
- 2025-2026学年苏科版(2024)初中物理九年级上册教学计划及进度表
- 《MATLAB编程及应用》全套教学课件
- 八年级数学开学第一课(课堂PPT)
评论
0/150
提交评论