课程设计(信息管理系统)_第1页
课程设计(信息管理系统)_第2页
课程设计(信息管理系统)_第3页
课程设计(信息管理系统)_第4页
课程设计(信息管理系统)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、郑州工业应用技术学院课程设计说明书题目:学生信息管理系统姓名:蔡阳阳院 (系) :信 息 工 程 学 院专业班级: 14 级计算机科学与技术一班学号: 1401110107 指导教师:张 吉 同成绩:时间: 2015 年 9 月 11 日至 2015 年 11 月 14 日郑州工业应用技术学院课程设计任务书题目学 生 信 息 管 理 系 统专业、班级14 级计算机科学与技术一班学号1401110107 姓名蔡阳阳主要内容:1.了解 windows 编程的基础知识,掌握mfc 应用程序的基本知识; 2. 基本掌握面向对象程序设计的基本思路和方法;3. 掌握用 vc+ 开发应用程序的的一般步骤和方

2、法;4. 能够利用所学的基本知识, 设计一个简单的学生信息管理应用程序,具有以下功能:实现学生信息的存储,可以用文件来实现。编程实现学生信息的添加、删除、修改、浏览和查询等功能(必须实现的功能)。基本要求:1. 用 vc进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;2. 采用单文档多视图方式, 左边为树视图, 右边为列表视图, 左边一级节点为中原工学院,二级节点为计算机学院和软件学院,三级节点为计算机学院的三个专业。要求可以动态增加节点。楼便为列表视图,包含学生的学号、性别、姓名各科成绩等。右边也可以实现动态增加3当选中节点时,显示对应的学生信息。如当选中” 中原工学院 ”

3、时选中所用的学生信息,选中“计算机学院”时,显示所有计算机学院学生信息主要参考资料:1 谭浩强 .c+语言基础课程 m. 北京:清华大学出版社, 2009 2 于永彦 . c+ 程序设计基础案例教程 m. 北京:北京大学出版社, 2009 3 郑莉.c+语言程序设计习题与实验指导m. 清华大学出版社 ,2007 完成期限:9 月 11 日 -11 月 14 日指 导 教 师签 名 :课程负责人签名:2015 年 11 月 14 日摘要随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸劳动方面发挥越来越重要的作用,不仅咋商业、企业、银行等起着重要作用,而且在日常生活中国也越来

4、越来离不开计算机。就像在大学,有很多学生信息需要处理、保存。以及提供优质的服务,此事计算机显得尤为重要。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识。作为计算机应用的一部分,使用计算机对学生作业信息进行管理,有着手工管理所无法比拟的有点。所以,现今大部分大学都使用了计算机来规划整个学生信息、提供选课、网络教学等。学生作业处理系统能方便用户迅速、准确处理学生作业,给出评分评价,得到想要的数据并能将学生的信息以文档的形式保存,以供使用时调出。本文介绍了简易学生的作业处理系统在microsoft visual c+ 6.0 环境下的实现过程:系统的分析、功能模块的设计、系

5、统的调试和测试。此系统的主要管理信息:学生的班级、学生的学号、学生的作业情况、作业评分。本系统的主要功能有:输入数据、显示所有的数据、按成绩降序排列、查找并显示一组数据、插入一组数据、修改一组数据、删除一组数据、从文件中读取数据、将所有记录写入文件、退出本系统。关键字:学生成绩处理、vc+ 、mfc 、控件四、主要步骤1、新建工程:用mfc appwizard(exe) 创建一个单文档的应用程序studentcheck。在第六步中将视图的基类选择为。2、 1 添加一个基于listview 类的新的类listview、用于显示学生信息2、 2 为 cmainframe添加一个切分窗口的映射函数o

6、ncreateclient 并添加一个切分窗口的函数成员csplitterwnd m_wndsplitter;然后添加下列代码:crect rect; getclientrect(&rect); csize panesize(rect.width()/3,rect.height(); m_wndsplitter.createstatic(this,1,2); m_wndsplitter.createview(0,0,runtime_class(cstudentcheckview),panesize,pcontext); m_wndsplitter.createview(0,1,runt

7、ime_class(listview),csize(0,0),pcontext); return true; 2、4 创建一个cstuinfodlg 对话框2、5 添加下列控件并为上面控件添加变量在 workspace 中进入 classview 视图,为cstuinfodlg类添加一个bool 型的成员变量m_bmale, 并在 cstuinfodlg 类设置该变量的初始值,添加代码如下:stuinfodlg:stuinfodlg(cwnd* pparent /*=null*/) : cdialog(stuinfodlg:idd, pparent) m_bmale=false; /afx_d

8、ata_init(stuinfodlg) m_strspecial = _t(); m_tbirth = 0; m_strmath = 0; m_strname = _t(); m_strno = _t(); m_stracademy = _t(); /afx_data_init 用 mfc classwizard为 cstuinfodlg类添加 wm_initdialog消息映射, 并添加下列初始化代码:if(!m_bmale) checkradiobutton(idc_radio_male,idc_radio_female,idc_radio_female); else checkradi

9、obutton(idc_radio_male,idc_radio_female,idc_radio_male);/ 对专业组合框进行初始化m_combospecial.addstring(网络工程 ); m_combospecial.addstring(软件工程 ); m_combospecial.addstring(计算机科学 ); m_combospecial.addstring(服装设计 ); m_combospecial.addstring(服装表演 ); m_combospecial.addstring(艺术设计 ); m_strspecial=网络工程 ; m_comboacade

10、my.addstring(计算机学院 ); m_comboacademy.addstring(服装学院 ); m_stracademy=计算机学院 ; m_tbirth=ctime(1989,10,7,0,0,0); m_strmath=80; updatedata(false);/将信息显示在控件中2、6 用 mfc classwizard为单选按钮idc_radio_male添加 bn_clicked的消息映射,并添加下列初始代码:m_bmale=true; 用 mfc classwizard为单选按钮idc_radio_female添加 bn_clicked的消息映射,并添加下列初始代码

11、:m_bmale=false; 用 mfc classwizard为单选按钮idok 添加 bn_clicked的消息映射,并添加下列初始代码:updatedata(); m_strname.trimleft();/将字符串最前面的空格修整掉m_strno.trimleft(); if(m_strname.isempty() messagebox(必须要有姓名!); else if(m_strno.isempty() messagebox(必须要有学号!); else 3、1 用 mfc classwizard为 cstudentcheckview类添加 nm_click消息映射通过映射来在列

12、表视图显示学生信息。并添加下列初始化代码:cpoint point; uint uflags; :getcursorpos(&point);/该函数检取光标的位置,以屏幕坐标表示ctreectrl& m_treectrl = gettreectrl(); m_treectrl.screentoclient(&point); htreeitem hsel=m_treectrl.hittest(point,&uflags); /测试鼠标点是否在一个节点项上,若是,则选中该点if(hsel!=null)&(tvht_onitem & uflags) m

13、_treectrl.selectitem(hsel); cstring stritem=m_treectrl.getitemtext(hsel); cstudentcheckdoc *doc=getdocument(); int nindex=doc-m_stuobarray.getsize();/得到数组的大小:知道储存了几个学生的信息); for(int n=0;nm_stuobarray.getat(n);/调取 m_stuobarray中储存的第n 个对象信息cstring str=stu-strspecial;/得到该学生的专业信息cstring dlg=stu-stracademy

14、;/得到该学生的学院信息position pos=getdocument()-getfirstviewposition(); getdocument()-getnextview(pos); listview *list=(listview*)getdocument()-getnextview(pos);/定 义 一个指向列表视图类的指针if(n=0) list-getlistctrl().deleteallitems();/删除全部列表项if(stritem=str|stritem=dlg|stritem=中原工学院 ) list-onprint(stu);/把息输信入到列表中 3、2 然后为

15、 cstudentcheckview 添加一个void 类型的成员函数createtree()函数,用来动态添加学生信息并添加下列初始代码:ctreectrl& m_treectrl = gettreectrl(); m_treectrl.deleteallitems(); htreeitem hroot,hparent,hchild,ps; hroot=m_treectrl.insertitem(中原工学院 ,0,1); bool flag=true; cstudentcheckdoc *doc=getdocument(); int i=doc-m_stuobarray.getsiz

16、e(); for(int n=0;nm_stuobarray.getat(n); cstring str1=stu-stracademy; cstring str2=stu-strspecial; if(!m_treectrl.itemhaschildren(hroot)/判断根节点是否有子节点 hparent=m_treectrl.insertitem(str2,hroot); m_treectrl.insertitem(str1,0,1,hparent); else hparent=m_treectrl.getchilditem(hroot); ps=hparent; for(;ps!=n

17、ull;ps=m_treectrl.getnextitem(ps,tvgn_next) cstring stritem1=m_treectrl.getitemtext(ps); if(stritem1=str2)flag=false; if(flag) hparent=m_treectrl.insertitem(str2,hroot); m_treectrl.insertitem(str1,0,1,hparent); else if(!m_treectrl.itemhaschildren(hparent)/判断是否有子节点m_treectrl.insertitem(str1,0,1,hpare

18、nt); else hchild=m_treectrl.getchilditem(hparent); for(;hchild!=null;hchild=m_treectrl.getnextitem(hchild,tvgn_next) cstring stritem2=m_treectrl.getitemtext(hchild); if(stritem2=str1)flag=true; if(!flag)m_treectrl.insertitem(str1,0,1,hparent); setctrlstyle(m_treectrl.getsafehwnd(), tvs_haslines|tvs_

19、linesatroot|tvs_hasbuttons); 3、3 为 cstudentcheckview 添加消息映射onintialupte , 用来调用 createtree()函数,动态添加学生信息。并添加下列初始代码:ctreectrl& m_treectrl = gettreectrl(); m_treectrl.deleteallitems(); createtree(); 3、 4 为 cstudentcheckview 添加一个void 类型的成员函数setctrlstyle(hwnd hwnd, dword dwnewstyle)/设置列表控件不同的显示方式并添加下列

20、初始代码:long lstyle; lstyle = getwindowlong(hwnd, gwl_style);/获取当前窗口style lstyle &= lvs_typemask; /清除显示方式位lstyle |= dwnewstyle; / 设置 style setwindowlong(hwnd, gwl_style, lstyle);/设置 style 4、1 在 workspace 中进入 classview 视图,为listview 类添加一个void 型的成员函数onprint(cstudentinfo *dlg),用来添加学生信息。并添加下列初始代码:clistc

21、trl&m_listctrl=getlistctrl();/变量m_listctrl.insertitem(0,dlg-strname);/姓名m_listctrl.setitemtext(0,1,dlg-strno);/学号if(dlg-bmale) m_listctrl.setitemtext(0,2, 男); else m_listctrl.setitemtext(0,2, 女); m_listctrl.setitemtext(0,3,dlg-tbirth.format(%y-%m-%d);/出生年月cstring str;/ 理解str.format(%d,dlg-strmat

22、h);/数学成绩m_listctrl.setitemtext(0,4,str); m_listctrl.setitemtext(0,5,dlg-strspecial);/ 专业m_listctrl.setitemtext(0,6,dlg-stracademy);/学院4、2 然后为 listview 添加消息映射nm_click ,用来通过点击或得学生的映射,并通过点击查找学生信息。并添加下列初始代码:int i = lpitem-iitem; if (i = 0) clistctrl& listctrl = getlistctrl(); cstring str = listctrl.

23、getitemtext(i, 0); messagebox(str); 4、3 为 listview 添加消息映射onintialupte ,用来在列表视图输出学生的信息并添加下列初始代码:clistctrl&m_listctrl=getlistctrl(); cstring strheader7=姓名 , 学号 , 性别 , 出生年月 , 数学成绩 , 所选专业 ,所在学院 ; int nwidth7=100,100,100,100,100,100,100; for(int ncol=0;ncol7;ncol+) m_listctrl.insertcolumn(ncol,strhea

24、derncol,lvcfmt_left,nwidthncol); 5、1 建立序列化类cstudentinfo用来保存学生信息,添加 c/c+ header file,并添加下列初始代码:class cstudentinfo:public cobject public: cstring strname; cstring strno; bool bmale; ctime tbirth; int strmath; cstring strspecial; cstring stracademy; declare_serial(cstudentinfo) public: cstudentinfo();

25、cstudentinfo(cstring name,cstring id,bool male,ctime birth,int math,cstring special,cstring academy); void serialize(carchive &ar); 5、2 添加 c/c+ source file,并添加下列初始代码:#include stdafx.h #include studentinfo.h cstudentinfo:cstudentinfo(cstring name,cstring id,bool male,ctime birth,int math,cstring

26、special,cstring academy) strname=name; strno=id; bmale=male; tbirth=birth; strmath=math; strspecial=special; stracademy=academy; implement_serial(cstudentinfo,cobject,1) /序列化实现void cstudentinfo:serialize(carchive &ar)/从档案文件中读取该对象或向档案文件中写入该对象。 if(ar.isstoring() arstrnamestrnobmaletbirthstrmathstr

27、specialstrnamestrnobmaletbirthstrmathstrspecialstracademy; 6、1 打开该文档应用程序的菜单资源,添加顶层菜单项“学生基本操作”并添加菜单项目:添加删除、修改、查询,id 依次为 id_stuinfo_add、id_stuinfo_del、id_stuinfo_xiugai、id_stuinfo_find。打开 cstudentcheckdoc,分别添加下列映射:6、2 分别为下列函数添加下列代码用来添加、删除、修改、查询学生的信息,添加初始代码:void cstudentcheckdoc:onstuinfoadd() /添加信息 st

28、uinfodlg dlg; if(dlg.domodal()!=idok)return;/判断学生信息是不是已经添加cstudentinfo*pstudent=new cstudentinfo(dlg.m_strname,dlg.m_strno,dlg.m_bmale,dlg.m_tbirth, dlg.m_strmath,dlg.m_stracademy,dlg.m_strspecial); m_stuobarray.add(pstudent); position pos=getfirstviewposition(); cstudentcheckview *stu=(cstudentchec

29、kview*)getnextview(pos); stu-createtree(); setmodifiedflag(); /设置文档更改标志updateallviews(null); /更新视图 void cstudentcheckdoc:onstuinfodel() /删除学生信息 find dlg; if(dlg.domodal()!=idok)return; int i=m_stuobarray.getsize(); for(int n=0;nstrname=dlg.m_name) delete m_stuobarray.getat(n); m_stuobarray.removeat(

30、n,1); setmodifiedflag(); /设置文档更改标志updateallviews(null); /更新视图 void cstudentcheckdoc:onstuinfofind() /查找学生信息 find dlg; if(dlg.domodal()!=idok)return; int i=m_stuobarray.getsize(); if(i=0) afxmessagebox(无学生信息 ); else for(int n=0;nstrname=dlg.m_name) /*position pos=getfirstviewposition(); getnextview(p

31、os); listview *list=(listview*)getnextview(pos); clistctrl& m_list=list-getlistctrl(); m_list.deleteallitems(); list-onprint(stu); flag=false;*/ cstring strres,strsex(女); cstring str;/理解str.format(%d,stu-strmath); if(stu-bmale) strsex=男; strres.format(姓名:%s,n学号: %s,n性别:%s,n出生年月:%s,n 学院: %s,n 专业:

32、 %s,n 数学成绩: %s, stu-strname,stu-strno,strsex, stu-tbirth.format(%y-%m-%d),stu-stracademy,stu-strspecial,str); afxmessagebox(strres); /判断是否找到 void cstudentcheckdoc:onstuinfoxiugai() /修改学生信息 find dlg; stuinfodlg dl; bool flag=true; if(dlg.domodal()!=idok)return; int i=m_stuobarray.getsize(); if(i=0) afxme

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论