课程设计(信息管理系统).doc

上传人:xin****828 文档编号:6671100 上传时间:2020-03-02 格式:DOC 页数:20 大小:366KB
返回 下载 相关 举报
课程设计(信息管理系统).doc_第1页
第1页 / 共20页
课程设计(信息管理系统).doc_第2页
第2页 / 共20页
课程设计(信息管理系统).doc_第3页
第3页 / 共20页
点击查看更多>>
资源描述
郑州工业应用技术学院课程设计说明书 题目: 学生信息管理系统 姓 名: 蔡 阳 阳 院 (系): 信 息 工 程 学 院 专业班级:14 级计算机科学与技术一班 学 号: 1401110107 指导教师: 张 吉 同 成 绩: 时间: 2015 年 9 月 11 日至 2015 年 11 月 14 日郑州工业应用技术学院课程设计任务书 题目 学 生 信 息 管 理 系 统 专业、班级14级计算机科学与技术一班 学号1401110107 姓名 蔡阳阳 主要内容:1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思路和方法;3.掌握用VC+开发应用程序的的一般步骤和方法;4.能够利用所学的基本知识, 设计一个简单的学生信息管理应用程序,具有以下功能:实现学生信息的存储,可以用文件来实现。编程实现学生信息的添加、删除、修改、浏览和查询等功能(必须实现的功能)。基本要求:1.用VC进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;2.采用单文档多视图方式,左边为树视图,右边为列表视图,左边一级节点为中原工学院,二级节点为计算机学院和软件学院,三级节点为计算机学院的三个专业。要求可以动态增加节点。楼便为列表视图,包含学生的学号、性别、姓名各科成绩等。右边也可以实现动态增加3当选中节点时,显示对应的学生信息。如当选中”中原工学院”时选中所用的学生信息,选中“计算机学院”时,显示所有计算机学院学生信息主要参考资料:1谭浩强.C+语言基础课程M.北京:清华大学出版社,2009 2于永彦. C+程序设计基础案例教程M.北京:北京大学出版社,20093郑莉.C+语言程序设计习题与实验指导M.清华大学出版社,2007 完 成 期 限: 9月11日-11月14日 指导教师签名: 课程负责人签名: 2015年 11月 14日摘要 随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸劳动方面发挥越来越重要的作用,不仅咋商业、企业、银行等起着重要作用,而且在日常生活中国也越来越来离不开计算机。就像在大学,有很多学生信息需要处理、保存。以及提供优质的服务,此事计算机显得尤为重要。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识。作为计算机应用的一部分,使用计算机对学生作业信息进行管理,有着手工管理所无法比拟的有点。所以,现今大部分大学都使用了计算机来规划整个学生信息、提供选课、网络教学等。学生作业处理系统能方便用户迅速、准确处理学生作业,给出评分评价,得到想要的数据并能将学生的信息以文档的形式保存,以供使用时调出。本文介绍了简易学生的作业处理系统在Microsoft Visual C+ 6.0环境下的实现过程:系统的分析、功能模块的设计、系统的调试和测试。此系统的主要管理信息:学生的班级、学生的学号、学生的作业情况、作业评分。本系统的主要功能有:输入数据、显示所有的数据、按成绩降序排列、查找并显示一组数据、插入一组数据、修改一组数据、删除一组数据、从文件中读取数据、将所有记录写入文件、退出本系统。 关键字:学生成绩处理、VC+、MFC、控件四、主要步骤 1、新建工程:用MFC AppWizard(exe)创建一个单文档的应用程序StudentCheck。在第六步中将视图的基类选择为。2、1添加一个基于ListView类的新的类listView、用于显示学生信息2、2为CMainFrame添加一个切分窗口的映射函数OnCreateClient并添加一个切分窗口的函数成员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,RUNTIME_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_DATA_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);elseCheckRadioButton(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_comboAcademy.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的消息映射,并添加下列初始代码: 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(必须要有学号!);Else3、1用MFC ClassWizard为CStudentCheckView类添加NM_CLICK消息映射通过映射来在列表视图显示学生信息。并添加下列初始化代码: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_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;/得到该学生的学院信息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然后为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.GetSize();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);elsehParent=m_TreeCtrl.GetChildItem(hRoot);pS=hParent;for(;pS!=NULL;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,hParent);elsehChild=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_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)/设置列表控件不同的显示方式并添加下列初始代码:LONG lStyle; lStyle = GetWindowLong(hWnd, GWL_STYLE);/获取当前窗口style lStyle &= LVS_TYPEMASK; /清除显示方式位 lStyle |= dwNewStyle; /设置style SetWindowLong(hWnd, GWL_STYLE, lStyle);/设置style4、1在WorkSpace中进入ClassView视图,为listView类添加一个void型的成员函数Onprint(CStudentInfo *dlg),用来添加学生信息。并添加下列初始代码:CListCtrl&m_listctrl=GetListCtrl();/变量m_listctrl.InsertItem(0,dlg-strName);/姓名m_listctrl.SetItemText(0,1,dlg-strNO);/学号if(dlg-bMale)m_listctrl.SetItemText(0,2,男);elsem_listctrl.SetItemText(0,2,女);m_listctrl.SetItemText(0,3,dlg-tBirth.Format(%Y-%m-%d);/出生年月CString str;/理解str.Format(%d,dlg-strMath);/数学成绩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.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,strHeadernCol,LVCFMT_LEFT,nWidthnCol);5、1建立序列化类CStudentInfo用来保存学生信息,添加C/C+ Header File,并添加下列初始代码:class CStudentInfo:public CObjectpublic:CString strName;CString strNO;BOOL bMale;CTime tBirth;int strMath;CString strSpecial;CString strAcademy;DECLARE_SERIAL(CStudentInfo)public: CStudentInfo();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.hCStudentInfo:CStudentInfo(CString name,CString id,BOOL male,CTime birth,int math,CString 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() arstrNamestrNObMaletBirthstrMathstrSpecialstrNamestrNObMaletBirthstrMathstrSpecialstrAcademy;6、1打开该文档应用程序的菜单资源,添加顶层菜单项“学生基本操作”并添加菜单项目:添加删除、修改、查询,ID依次为ID_STUINFO_ADD、ID_STUINFO_Del、ID_STUINFO_XIUGAI、ID_STUINFO_FIND。打开CStudentCheckDoc,分别添加下列映射:6、2分别为下列函数添加下列代码用来添加、删除、修改、查询学生的信息,添加初始代码:void CStudentCheckDoc:OnStuinfoAdd() /添加信息StuInfoDlg 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=(CStudentCheckView*)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(n,1);SetModifiedFlag(); /设置文档更改标志UpdateAllViews(NULL); /更新视图void CStudentCheckDoc:OnStuinfoFind() /查找学生信息Find dlg;if(dlg.DoModal()!=IDOK)return;int i=m_stuObArray.GetSize();if(i=0)AfxMessageBox(无学生信息);elsefor(int n=0;nstrName=dlg.m_name)/*POSITION pos=GetFirstViewPosition();GetNextView(pos);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专业:%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)AfxMessageBox(无学生信息);elsefor(int n=0;nstrName=dlg.m_name)dl.m_strName=stu-strName;dl.m_strNO=stu-strNO;dl.m_bMale=stu-bMale;dl.m_tBirth=stu-tBirth;dl.m_strMath=stu-strMath;dl.m_strAcademy=stu-strAcademy;dl.m_strSpecial=stu-strSpecial;dl.DoModal();/此成员函数用来显示一个模态对话框Dialog2stu-strName=dl.m_strName;stu-strNO=dl.m_strNO;stu-bMale=dl.m_bMale;stu-tBirth=dl.m_tBirth;dl.m_strMath=stu-strMath;stu-strAcademy=dl.m_strAcademy;stu-strSpecial=dl.m_strSpecial;flag=FALSE;SetModifiedFlag(); /设置文档更改标志 UpdateAllViews(NULL); /更新视图if(flag)AfxMessageBox(无此学生信息);7、1添加一个新的对话框Find,通过调用该该对话框来实现删除、修改、浏览学生信息:并添加下列控件:添加Find类的映射BN_CLICKED并为该编辑框添加控件变量运行程序实现改程序的功能五、设计心得1、通过这次课程设计,是我对MFC有了更进一步的了解,对消息的机制有了更深刻的认识,对MFC中的应用结构类、菜单类、窗口以及对话框和控件有了更深刻的认识。2、也对上学期学习的VC+进行了复习,是我对上学期学期的有了更进一步的了解和熟悉,对编程能力有了进一步的提升。3、合理的规划和设计页面对编程者是十分重要的。一个好的程序也学要便捷的操作和美观的界面,人性化设计需要我们更加细心的去设计和美化程序。4、虽然在MFC课程设计是遇到了这样和那样的问题,通过我自己和同学的帮助,还有参考数的帮助,这次课程设计是我收获很多,不仅对编程有了更进一步的了解,同时也看到了我自己编程能力的不足和与班级学习MFC好的同学之间的差距,需要进一步努力、才能不被他们抛的更远。六、参考文献1Visual C+ 教程 清华大学出版社2C/C+程序设计教程 电子工业出版社3 Visual C+程序设计与实践
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!