毕业设计(论文)基于VC++6.0的学生成绩管理系统的设计与实现.doc
湖北大学知行学院 本科毕业论文(设计)题 目 学生成绩管理系统 计算机 系 计算机科学与技术 专业学 号 学生姓名 指导教师 起讫日期 2011.11-2012.4 工作地点 湖北大学知行学院 目 录绪论2第一章 课题总体介绍31.1 课题介绍31.2 课题目的及意义31.3 主要研究功能4第二章 关键技术介绍42.1 VC+6.0和面向对象技术42.2 Access 2003 和 ODBC数据库技术4第三章 需求分析53.1 系统需求分析5第四章 概要设计64.1 系统功能结构设计64.2 系统流程图设计74.3 数据库设计7第五章 详细设计85.1 主界面设计85.2 注册数据源85.3 系统管理子模块设计95.4 学生管理子模块设计95.5 班级管理子模块设计105.6 成绩管理子模块设计125.7 课程管理子模块设计13结束语14参考文献15致谢16 基于VC+6.0的学生成绩管理系统的设计与实现 摘 要 计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用,学校也不例外,近来由于学生数量的急剧增加,学生的各种信息业海量增长,导致学校学生成绩管理的工作量空前增加,为了能快速、高效,准确的解决这一问题,就必须借助信息管理系统(MIS)来实现,从而达到科学统计,规范管理,减少人工操作,提高工作效益的目的。该系统是使用Visual C+6.0开发的面向对象的数据库管理系统,采用Access2003作为数据库开发工具,系统开发环境是Windows xp。该系统界面有好,操作简单,易学易用。关键字:学生成绩管理系统Visual C+6.0 Access2003 Student management system's design and realization based on the VC+6.0AbstractThe computer technology's development, enabled the various trades and occupations to obtain the widespread popularization and the use in the computer technology application aspect.The school is not exceptional, with recently student quantity's increase rapidly, student's each kind of information content also magnanimously grows, causes the school student achievement management the work increase unprecedentedly. For can fast, highly effective, accurate solution this question, must draw support from the information management system(MIS) to realize, thus achieves the science statistics, the standard management, reduces artificially and raises the working efficiency the goal.The system is an object-oriented database information management system developed by Visual C+ 6.0 and Access 2003, the system development environment is Windows xp. This system contact surface is friendly, the simplicity of operator, ease to study easily to use.【Key words】Student Management System Visual C+ 6.0 Access 2003 绪论 本毕业论文是以学校学生管理信息系统建设中的成绩管理系统的开发为背景,论述了管理信息系统的概念、结构及系统开发的基本原理和方法,全文共分为绪论、系统分析、概要设计、详细设计、开发总结、致谢、参考文献、附录等。一 课题总体介绍1.1 课题介绍随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使用人们的生活与工作方式发生了很大的改观。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。数据库始于20世纪60年代,经过40多年的发展,现在已经形成了理论体系,成为计算机软件的一个重要分支。数据库技术体现了当代先进的数据管理方法,使计算机的应用真正渗透到国民经济各个部门,在数据处理领域发挥着越来越大的作用。而互联网技术的出现,更是进一步丰富的人类生活,数字化生存已经一步步走进我们的生活与工作。互联网技术与数据库技术的结合为计算的在人类生活中的应用带来了巨大的影响。产业信息化,管理现代化,科学化已经成为行业发展的重要课题,这不仅是企业提高自身竞争力,甚至是国家提高综合国力,走向国民富强的重要手段。在我国,教育是一个影响着国富民强的重要行业,随着改革开放和市场经济的发展根据中国特有的国情发展,教育得到了国家的大力扶持与社会各界的高度重视,从而使教育业向规范性与现代化的方向高速发展,但是同发达国家相比,我国的教育行业的信息技术的应用程度还很低,只有在大城市中发展较早、规模较大的院校中才使用计算机进行大规模操作,从各方面提高工作效率,取得良好的社会和经济效益,而一些新兴的、规模较小的教育机构还没有全部具备这种功能。因此可见,随着我国教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。1.2 课题目的及意义系统开发目的:本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:1.系统应具有实用性、可靠性和适用性,同时注意到先进性。2.对各个数据库进行动态管理,防止混乱。3.能够按照用户选择的不同的条件进行简单查询和复合查询。4.能够对查询结果进行分类汇总,实现报表打印。5.注意数据的安全性,具有数据备份和恢复的功能。6.方便用户的操作,尽量减少用户的操作。 系统开发意义:在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性。提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。1.3 主要研究功能 权限功能:系统可分为普通用户,管理员。普通用户只是查询不能修改,管理员用户还能修改、删除、添加所有信息。系统根据登录用户的权限进行相应的操作。 录入功能:为管理员用户提供相应的录入功能。 查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。 维护功能:为管理员用户提供查询及相应的修改,删除、添加功能。 退出功能:结束并关闭系统。二 访问数据库的方法2.1 VC+6.0和面向对象技术Visual C+ 是功能最为强大的可视化开发工具,它不仅支持传统的软件开发的方法,更重要的是它能支持面向对象、可视化的开发风格。因此Visual C+ 又称作是一个集成开发工具,它提供了软件自动生成和可视化资源编辑功能。Visual C+ 具有的优点:提供了面向对象的应用程序框架MFC,简化了程序员的编程工作,提高了模块的重要性;提高了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、ClassWizard、Visual Studio、WizardBar 等,实现了直观、可视的程序设计风格,方便地编程和管理各种类,维护程序的源代码封装了Windows的API函数、USER、DERNEL、GDI函数,简化了编程创建、维护窗口的许多复杂的工作。面向对象技术(OOP)它强调直接以问题域(即现实世界)中的失误为中心来考虑和认识问题,并按照作为这些事物的本质特证把它们抽象为对象,作为软件系统的基础。在OOP方法中,将对象作为系统中最基本的运行实体,对象中封装了描述改对象的特殊属性(数据)和行为(方法)。整个抽象即由各种不同类型的对象组成,个对象既是一个单独的实体,又可通过一定的方式相互作用。面向对象技术强调在软件开发的过程中面向客观的世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然的描述客观世界中的有关事物。面向对象技术的基础特征主要有抽象性、封装性、继承性和多态性。2.2 Access 2003 和ODBC数据库技术Access 2003 是微软公司推出的基于 Windows 的桌面关系数据库管理系统(RDBMS),是 Office 系列应用软件之一。它不仅是具有界面友好、易操作的特性,同时它还能很好的支持ODBC技术,实现与外界程序的数据交换。Access 2003最主要的特点的是它的数据库的文件(。mdb)能脱离ACCESS环境,在未安装ACCESS机器上被其他的软件调用于用户的操作和管理,从而使的数据不用依赖数据库软件而可以单独使用,这极大的增强了数据的可移植性。ODBC(开放数据库互连)是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供聊一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分的任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作部依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见ODBC借款的最大的优点是其互操作的能力,理想情况下,每个驱动程序和数据源因支持完全相同的ODBC函数调用和SQL语句,使得ODBC应用程序可以操作所以的数据库系统。三 需求分析3.1 系统需求分析功能需求具体分析如下:(1) 系统登录用户输入用户名和密码,系统查询数据库中的信息对用户名和密码进行验证。如果用户名和密码不正确将不能进入系统。如果用户名和密码正确,系统会根据用户所具有的权限进行不同的操作(2) 系统管理修改密码:对于任何用户,包括普通用户和管理员用户都可以对自己的密码进行重新设置。用户管理:只针对系统管理员才能进行的操作,管理员用户可以查看用户的信息,当普通用户忘记密码时可以找回其密码,并且能添加,删除用户。(3) 学生信息管理普通用户可以对所有的学生的信息根据输入的信息进行查询,系统管理员用户还可以添加、修改、添加学生信息。学生的基本信息包括:学号、姓名、性别、年级、班级、家庭住址以及备注。(4) 成绩管理普通用户可以对自己以及其他学生的成绩进行查询,管理员用户可以对所以的学生的成绩信息进行查询、修改,还可以添加录入成绩。学生成绩的基本信息包括:课程号、学号、分数。(5) 班级管理普通用户可以查看学校的班级的信息,管理员用户还可以进行对已有班级信息的修改已经添加新的班级。班级信息包括:所属系别、所属专业。(6) 课程管理普通用户可以查看课程的信息,管理员用户还可以修改已有课程的信息以及添加新的课程。课程信息包括:课程号、课程名称、所属专业、教学年级、教学学期。(7) 帮助对本系统的作者情况的一些介绍和说明,方便客户对该系统存在的问题提出意见和建议。四 概要设计4.1 系统功能结构设计系统的模块将划分为5个大的模块,每个模块负责的功能相对专一。其中,用户身份验证模块提供对用户身份的验证,同时读取用户所具有的权限,只有具有管理员权限的用户才可以使用系统的所有的功能。本系统采用MFC ODBC数据库访问技术实现对数据库的访问操作。系统的最底层是数据库,本系统采用Microsoft Access 作为后台数据库。学生成绩管理系统学生管理模块课程管理模块成绩管理模块系统管理模块班级管理模块 ' 课程信息管理班级信息管理个人成绩管理班级成绩管理学生信息添加学生信息查询学生信息修改用户管理 图4-1 学生成绩管理系统功能结构图4.2 系统流程图设计开始登陆验证密码 分析权限NY学生成绩管理系统主界面选择相应模块 进行操作退出结束图4-2 系统流程图4.3 数据库设计本系统的数据库由用户表、学生表、课程表、成绩表、班级表组成。表4-1 用户表user_table字段名称类型长度备注username文本20password文本20admin文本2readonly文本2qx1文本2qx2文本2qx3文本2qx4文本2表4-2 学生表student_table字段名称类型长度备注username文本20password文本20admin文本2readonly文本2qx1文本2qx2文本2qx3文本2qx4文本2表4-3 课程表course_table字段名称类型长度备注username文本20password文本20admin文本2readonly文本2qx1文本2qx2文本2qx3文本2qx4文本2表4-4 成绩表score_table字段名称类型长度备注username文本20password文本20admin文本2readonly文本2qx1文本2qx2文本2qx3文本2qx4文本2表4-5 班级表class_table字段名称类型长度备注username文本20password文本20admin文本2readonly文本2qx1文本2qx2文本2qx3文本2qx4文本2五 详细设计5.1 主界面设计先建立一个对话框程序作为主界面,然后添加菜单资源即可。主界面如下图所示:图5-1 主界面5.2 注册数据源在程序的ScoreManageSysApp.c中包含头文件odbcinst.h,并且在此文件中的InitInstance()函数开始添加以下代码,完成数据源的注册。 CString sPath;GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer ();int nPos;nPos=sPath.ReverseFind ('');sPath=sPath.Left (nPos);nPos=sPath.ReverseFind(''); sPath=sPath.Left (nPos);CString lpszFile = sPath + "ScoreManageSys.mdb" char* szDesc;int mlen;szDesc=new char256;sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s? ","hl_ScoreManageSys",lpszFile,sPath);mlen = strlen(szDesc); for (int i=0; i<mlen; i+)if (szDesci = '?') szDesci = '0' if (FALSE = SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)0",(LPCSTR)szDesc) AfxMessageBox("SQLConfigDataSource Failed"); try CString strConnect; strConnect.Format("DSN=hl_ScoreManageSys;"); if(!m_DB.OpenEx(strConnect,CDatabase:useCursorLib) AfxMessageBox("Unable to Connect to the Specified Data Source"); return FALSE ; catch(CDBException *pE) pE->ReportError(); pE->Delete(); return FALSE; 5.3 系统管理子模块设计新建一个用户管理窗口并为之关联一个CUserManage的类和一个从CRecordset继承来的数据库记录集类CUserSet。选择连接ODBC数据源user_table表,这样就将其与表项相关联。在UserManage.h文件中包含UserSet.h文件该类包含主要函数有:OnInitDialog();调用Show()函数完成初始化的工作。OnDeleteUser();单击"删除"按钮的消息响应函数。OnModifyPwd();单击"修改"按钮的消息响应函数,调用CModifyPwd类关联的对话框完 成修改。Show();在ListCtrl控件中显示所有的用户的用户名和密码。OnAddUser();单击"添加"按钮的消息响应函数,调用CAddUser类关联的对话框添加用户。5.4 学生管理子模块设计图5-3 新增用户窗口图4-2是学生成绩管理系统新增用户窗体,设计过程:新建一个学生信息管理对话框为它关联一个CStuManage的类和一个从CRecordset继承来的数据库记录集类CStuInfoSet。选择连接ODBC数据源student_table表。在对话框上面添加Tab Control控件。新建一个学生信息浏览对话框和学生信息添加对话框分别为这2个对话框关联CAddStuInfo和CStuInfoBrowse类,将2个对话框的style设置成Child。将上述2个对话框关联到CStuManage类的Tab Control控件上。CStuManage类包含主要函数有:OnInitDialog();初始化Tab Control控件,根据登录用户的权限初始化相应的按钮控件。OnSelchangeTab();响应点击Tab Control控件的消息。CAddStuUser类包含主要函数有:OnInitDialog();根据登录用户的权限初始化相应的按钮控件。OnAdd();单击"添加"按钮的消息响应函数。CStuInfoBrowse类包含主要函数有:CreateSQL();根据用户的输入产生SQL语句。InitList();根据用户的要求将结果显示在ListCtrl中。OnDeleteStu();根据用户的选择删除记录。OnModifyStu();修改用户选择的学生的信息。OnQueryStu();根据用户输入的条件查询student_table表。OnqueryAllStu();显示所有的学生信息。5.5 班级管理子模块设计班级管理窗口用树形控件来实现,其关键技术就是读出Class_table中的数据并将这些数据显示在树形控件上这里使用InitTree()函数解决,核心代码如下:m_tree.DeleteAllItems();HTREEITEM root = m_tree.InsertItem("湖大知行");CClassSet classSet;classSet.Open();doCString dep = classSet.m_department;CString pro = classSet.m_profession;CString grade = classSet.m_grade;CString classNum = classSet.m_classNum;HTREEITEM hChild_dep = m_tree.GetChildItem(root);if (hChild_dep = NULL)HTREEITEM child_dep = m_tree.InsertItem(dep,root);HTREEITEM child_pro = m_tree.InsertItem(pro,child_dep);HTREEITEM child_grade = m_tree.InsertItem(grade,child_pro);HTREEITEM child_classNum = m_tree.InsertItem(classNum,child_grade);classSet.MoveNext();continue;while(hChild_dep != NULL) CString strDep = m_tree.GetItemText(hChild_dep);if (strDep = dep)HTREEITEM hChild_pro = m_tree.GetChildItem(hChild_dep);while(hChild_pro != NULL)CString strPro = m_tree.GetItemText(hChild_pro);if (strPro = pro)HTREEITEM hChild_grade = m_tree.GetChildItem(hChild_pro);while(hChild_grade != NULL)CString strGrade = m_tree.GetItemText(hChild_grade);if (strGrade = grade)HTREEITEM hChild_class = m_tree.GetChildItem(hChild_pro);while(hChild_class != NULL)CString strClass = m_tree.GetItemText(hChild_class);if (strClass = classNum)break;hChild_class = m_tree.GetNextSiblingItem(hChild_class);if (hChild_class = NULL)HTREEITEM child_classNum = m_tree.InsertItem(classNum,hChild_grade);break;hChild_grade = m_tree.GetNextSiblingItem(hChild_grade);if (hChild_grade = NULL)HTREEITEM child_grade = m_tree.InsertItem(grade,hChild_pro);HTREEITEM child_classNum = m_tree.InsertItem(classNum,child_grade);break;hChild_pro = m_tree.GetNextSiblingItem(hChild_pro);if (hChild_pro = NULL)HTREEITEM child_pro = m_tree.InsertItem(pro,hChild_dep);HTREEITEM child_grade = m_tree.InsertItem(grade,child_pro);HTREEITEM child_classNum = m_tree.InsertItem(classNum,child_grade);break;hChild_dep = m_tree.GetNextSiblingItem(hChild_dep); if (hChild_dep = NULL)HTREEITEM child_dep = m_tree.InsertItem(dep,root);HTREEITEM child_pro = m_tree.InsertItem(pro,child_dep);HTREEITEM child_grade = m_tree.InsertItem(grade,child_pro);HTREEITEM child_classNum = m_tree.InsertItem(classNum,child_grade);classSet.MoveNext();while(!classSet.IsEOF();classSet.Close();m_tree.Expand(root,TVE_EXPAND);5.6 成绩管理子模块设计个人成绩管理:新建一个班级成绩管理对话框,为之关联一个CPersonalScore类。在对话框上创建 List 控件,用来显示登录的用户的所有的成绩信息。CPersonalScore类包含主要的函数有:OnAll();显示所有的成绩。Show();初始化List控件。OnConfirm();根据用户的输入查询数据库,并将查询的结果显示在List控件中。班级成绩管理:新建一个班级成绩管理对话框,为之关联一个CClassScore类。在对话框上创建分别一个Tree 和 List 控件,Tree用来显示班级信息,List用来显示用户选择的班级的所有的成绩信息。CClassScore类包含主要的函数有:InitListCtrl();初始化List控件。InitTree();初始化Tree控件。OnItemchangedList(.);List控件选项改变时的响应函数。OnSelchangedTree(.);Tree控件选项改变时的响应函数。5.7 课程管理子模块设计新建一个课程浏览对话框和一个课程添加对话框,分别为2个对话框关联CCourseBrowse和CAddCourse。CCourseBrowse类包含的主要的函数有:OnInitDialog();初始化对话框上面的控件。OnModify();根据用户的选择修改课程的信息。Show();将数据库中的内容显示在List控件中。CAddCourse类包含的主要的函数有:OnConfirm();将用户的输入添加到数据库。结束语到此为止,毕业设计和论文也算基本完成了,前前后后大约花了2个星期的时间,这期间遇到无数的程序Bug和不少的技术难题,这让我费尽了心思,还好,运气不错,问题一一化解,最终作品差强人意的完成了。期间遇到的困难让人苦不堪言,有时候会因为一个头文件没加上,就出现满屏的提示错误,这让你一眼看上去有点晕眩的感觉,你不得不静下心来一个一个的调试;有时候因为一个技术难题无法攻克,你必须放弃以前的努力,重新寻找新的方法。有时候出现的问题不管你怎么想也想不出错误的原因,即使你查遍各类书籍、视频,搜遍百度,Google,问遍各大论坛,你依然难以解决,直到你想放弃的时候,却突然灵光一现想出新办法的时候,那种兴奋、激动,无以言表。我想也正是这种完成解决问题的成就感一直激励着自己勇往直前,永不放弃吧。设计论文虽然完成了,但中间依然存在很多问题,比如界面不够美观,系统功能不够强大,程序设计的方法的流程不够科学等问题,由于时间和能力的限制,这些问题不能很好地解决,但我相信只要坚持不断的学习和完善自我,相信这些问题都能在将来得到很好地解决。参考文献1 谭浩强.C程序设计(第二版)北京:清华大学出版社,200022 严蔚敏,数据结构(C语言版)北京:清华大学出版社,200823 龙怀冰SQL Sever 2000实用开发教程M北京人民邮电出版,20044 郑阿奇.SQL Server实用教程(第2版)M电子工业出版社20065 Stanley BLippman 、Josee Lajoie、Barbara EMoo 著 李师贤 蒋爱军 梅骁勇 林瑛译C+Primer中文版北京:人民邮电出版社200636 明日科技 刘鋭宁 梁水 宋坤 著Visual C+ 全能速查宝典北京: 人民邮电出版社 2009117 秦小波 著设计模式之禅机械工业出版社 201038 侯俊杰 著深入浅出MFC第2版华中科技大学出版社20009 王珊等数据库技术与应用M清华大学出版社,2005致 谢本次的毕业设计是在老师的悉心的指导和帮助下完成的。在这近三个月的学习开发过程中,我们占去了老师的很多时间,给她添了很多麻烦。可老师并没有厌烦,每次都很耐心地给我们讲解、纠错。可以说,老师在我们这次的毕业设计中花费了很大的心血。在她的耐心指导下,我们系统地学习了软件开发的过程,从需求分析、总体设计到详细设计,我们由一无所知到比较熟练的掌握点点滴滴都离不开老师的指教!在此,我代表我们向老师表示衷心的感谢,谢谢他这两个月的帮助与指导!四年时间很快过去了,我即将毕业,心中有万般的不舍。四年来,在班主任及系、院领导的关心帮助下,我不仅学到了很多专业知识,也学到了很多为人处世的道理。在此,我深深地感谢四年来帮助过、关心过我的所有老师!同时,我的各个方面的进步,也离不开全体同学在学习、生活各方面的支持与帮助。所以,我也要向他们表示由衷的感谢!论文需要修改的地方:1、主要论文的格式,包括首行缩进2个字符,图片没有居中对齐、图片没有标题等,可以参照我给出来的形式修改。2、数据库设计这一部分太简单,可以按照我给定的样本进行修改3、各个模块的设计也需要比较详细的说明,同样可以参照我给定的样本进行修改,最好将各个模块的界面截图下来进行展示,实现方法也可以进行说明。4、还有英文摘要部分,也需要更加准确。