成绩管理系统_第1页
成绩管理系统_第2页
成绩管理系统_第3页
成绩管理系统_第4页
成绩管理系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录不需要目录第一章 引言 1.1-应用背景1.2-课程设计目的1.3-用户特点1.4-需求分析1.5-安全性分析1.6-系统配置1.7-开发意图第二章 制作过程2.1-主要内容2.2-准备工作2.3-制作简单的窗体应用程序2.4-制作程序运行窗口第三章 课程设计内容及简介3.1-设计说明3.2-程序流图3.3-部分程序及其说明第四章 程序运行结果第五章 结束语参考文献附程序成绩管理系统学生姓名: 金 鑫 指导老师:黄 敏文档的写作框架不符合软件工程的规范,仅仅是C+的课程设计摘 要 学生成绩管理系统是一个非常通用的信息管理系统,本课题主要设计一个简单的成绩管理系统,进行简单的成绩查询及管理

2、。主要实现的功能有:学生基本信息的导入/导出;学生成绩信息的录入、修改、添加、删除、查询、打印;增加参数设置,能增加班级,增减科目;系统用户管理等。在课程设计中,系统开发平台为WindowsXP,程序设计语言采用VC+,数据库采用Microsoft Office Access 2003,程序运行平台为Windows 98/2000/XP。系统的实现可以极大地方便教师和学生对成绩的使用,查询和管理。 关键词 程序设计;成绩管理;数据库;VC+1 引 言信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机与人类的关系愈来愈密切。为了提高学校对学生的管理效率,

3、成绩管理系统越来越受到人们的亲睐。本课程设计主要用于一个学校中学生成绩的管理;包括学生基本信息的导入/导出;学生成绩信息的录入、修改、添加、删除、查询;增加参数设置,增加班级,增减科目以及系统用户的管理等。通过该程序能够简单明了的实现以上功能,极大地方便老师和学生的管理和查询。之所以选择Visual C+作为开发工具,不仅仅因为曾经有过使用它的经验,看中的更是它的功能强大和使用方便。它本身不仅具有极其强大的编程能力,它允许选择和管理外接程序,这些对Visual C+的扩充又进一步增强了它的开发环境的能力。数据库选择Microsoft Office Access 2003,不仅因为Access

4、2003为我们提供了一组功能强大的工具,这些工具提供的功能相当完善,能够满足专业开发人员的需要;更重要的是对于我们这种新用户来说,操作方便简单,运行快速安全,十分容易上手,很适合新手使用。1.1 应用背景学生成绩管理系统是学校日常信息管理的一个重要内容。随着学校考试次数越来越多,学生成绩管理的工作量也变得越来越大。如果能对学生成绩做系统的管理,就能更好更方便地快速查询或者修改学生的考试成绩,省去了文件管理的繁琐与麻烦,无疑将给学校的管理部门带来很大的方便。学生成绩管理系统就是把学生的考试成绩实行统一、集中、规范的收集管理,建立现代化、专业化的管理系统。学生成绩管理系统的对象是在校学生,成绩管理

5、系统为学生提供了成绩查询等服务;为学校及老师提供了添加、修改、删除学生成绩等服务。本系统基本上能够满足当今学校学生学习成绩信息管理的需求。学生个人成绩信息录入项目齐全、完整、系统。本成绩管理系统简单明了,可以很方便查询、阅读、修改及重复使用。1.2 课程设计目的本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会,也为将来设计程序积累一定的宝贵经验。本课程设计让我们将本学期课本上的理论知识和实际有机的结合起来,锻炼实际分析问题和解决问题的能力。1.3 用户特点 系统的主要用户为该校的教师,他们的计算机水平并不高,所以对计算机的人性化和易用性比较高,最好做到看界面按钮就知道其功能

6、,使用该系统就应该使所有的教师感觉到工作量减少、工作有秩序、工作效率有明显的提高。 系统正常运行后预期的使用频度比较高,除平时教师使用量比较大外,在考试后将会有非常大的访问量。1.4 需求分析本系统设计者力求根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。开发目的如:能对成绩进行录入和修改;能添加该学生的记录;能删除该学生的记录;能添加班级的信息;能修改班级的信息;能删除班级的信息。1.5 安全性分析(1)只有管理员才能输入、修改和删除有关的数据。 (2)学生只可以查看自己的成绩。 (3)严格控制对数据的修改,只能数据录入的用户才有权对数据进行修改。 1.6

7、 系统配置 (1)软件配置操作系统:Windows 2000中文版或更高;数据库选择:Microsoft Access;开发平台:Visual C+(2)硬件配置CPU:Pentium II 266或更高;内存:64MB或以上;硬盘:2G以上;显示器:VGA或更高;2 制作过程2.1 主要内容(1)在成绩管理系统中显示学生成绩的查询结果。(2)对成绩管理系统中的成绩进行修改、添加、删除等操作。(3)实现成绩管理系统对学生成绩信息的系统管理。2.2 准备工作用Microsoft Office Access 2003制作一个简单的数据库,如图21图21 数据库制作图重新截取,只要有用信息,没有用的

8、空白去掉(1)启动Microsoft Office Access 2003。(2)选择新建空白数据库。(3)输入数据库名(本程序使用lhwy),选择保存数据库目录,然后单击创建。(4)选择表选项,新建表。(5)选择设计示图选项,进行数据类型设计。(6)设计要添加的数据。(7)按照以上过程做出几个课程设计所需要的数据库。(8)最后保存所做出的数据库。数据信息见图22图22 数据信息在微机中的控制面板中创建数据源名称(DNS)。写出过程2.3 制作简单的窗体运用程序(1)运行VC+程序;(2)新建MFC AppWizard(EXE)工程,输入工程名(本程序中工程名为lhwy),你将看到一个如图23

9、a所示的“MFC 应用程序向导步骤1”的对话框。图 2-3a MFC 应用程序向导步骤1 对话框(3)在创建应用程序类型中选择“单文档S”,单击“下一步”。(4)你将看到一个如图23b所示的“MFC 应用程序向导步骤2”的对话框,选择“查看数据库不使用文件支持”选项,点击“数据源”,选择“OLE DB”,单击数据链接属性,选择Microsoft Jet 4.0 OLE DB Provider,单击下一步,把以前做的那个数据库目录浏览到数据库名称里,测试链接,显示成功后单击“确定”,选择lhwy。(5)连续点击“下一步”,到“MFC 应用程序向导步骤4”,把勾全部取消,然后单击“下一步”。(6)

10、看到“MFC 应用程序向导步骤6”后,验证一下在基类中是否选择了“COleDBRecordView”。(7)单击“完成”,简单的窗体应用程序创建完毕。 图23b MFC 应用程序向导步骤2 对话框2.4 制作程序运行窗口(1)在对话框中添加6个Button(按钮)控件,分别用做“显示”、“增加记录”、“删除记录”、“修改记录”、“查询记录”和“全部记录”按钮。(2)添加一个静态文本控件用做“选择班级:”;添加一个组合框控件用做多重选择。(3)添加3个列表控件用做学生、学号、科目、成绩及任课老师详细信息的显示。(4)如图24所示,成绩管理系统的一个窗体创建完成。 图24 成绩管理系统窗体(5)依

11、次完成课程其他显示窗体的创建。3 课程设计内容及简介3.1 设计说明A.定义多个函数以实现各个功能:1)主函数main():定义学生结构体数组,调用录入、统计等函数对成绩表进行处理;2)录入函数Input():输入班级到科目成绩;3)统计函数Statistic():计算平均成绩;4)查询函数Lookup():查询指定学号学生成绩记录;5)修改函数Modify():修改指定学号学生成绩记录;6)删除函数Delete():删除指定学号学生记录;7)输出函数Output():输出班级所有学生成绩记录;8) 排序函数Sort():按平均分对学生成绩记录项进行降序排序;9)插入函数Insert():按平

12、均分顺序插入新记录。B.定义一个结构体,其中的成员如表3-1:表 3-1 班级成员序号成员名(字段名)数据类型长度字段含义1class_0char20班级2numint学号3namechar8姓名4chemistryflaot化学5physicalfloat物理6politicflaot政治7englishfloat英语8mathsfloat数学11avefloat平均成绩C.预先录入数据如表3-2:(名字换为中国人的)表 3-2 成绩数据numnamechemistryphysicalpoliticenglishmathsave112樱木花道89.078.578.090.078.582.80

13、113流川枫80.078.590.090.089.585.60117三井寿78.089.067.078.089.080.20118宫城良田89.089.078.089.069.082.80123赤木刚宪89.089.089.090.090.089.403.2 程序流图Main主函数Menu函数OutputInputLookupDeleteStatisticsSort图3.1 命名系统层次模块图步骤1:学 生 成 绩 管理 系 统接 收 输 入 信 息对 信 息 进 行 处理输 出 处 理后 的 信 息图3.2 命名步骤2:接 收 输 入 信 息根 据 用 户 的 需 求 调 用 相 应 的 功

14、 能 模 块图3.3 命名对 信 息 进 行 处 理汇总相应的信息统计相应的信息删除相应的信 息修改相应的信 息将 输 入的 数 据添 加 到数 据 库 中图3.4 命名输 出 处 理 后 的 信 息显示数据库中的相关 信 息显示操作完成 的 情况图3.5 命名步骤3:输 出 处 理后 的 信 息对 信 息 进 行 处理学 生 成 绩 管理 系 统接 收 输 入 信 息显示数据库中的相关 信 息显示操作完成 的 情况根 据 用 户 的 需 求 调 用 相 应 的 功 能 模 块将 输 入的 数 据添 加 到数 据 库 中修改相应的信 息汇总相应的信息统计相应的信息删除相应的信 息图3.6 命名

15、3.3 部分程序及其说明Main():此函数主要是调用录入、统计等函数对成绩表进行处理;通过使用switch函数判断用户所选择的序号,再进入相应的函数。Input():用于建立一个链表,用来保存数据,具体的录入及插入代码在switch中当case=2时实现。Statistic():统计平均成绩:按各个学生进行平均分统计、按各个课程进行平均分统计。Lookup():按学号进行查询,当无法找到与输入的学号相匹配的记录时显示出错信息。Delete():按学号进行删除操作,当输入的学号不匹配时就显示出错信息。Output():此函数用于输出班级所有学生成绩记录。Menu():一个显示函数,通过键入数字

16、来运行各个功能函数。4 程序运行结果程序经过调试无错后,进行编译、组建、执行后,程序结果显示出来。(1)在班级成绩选项中,可以查询到该班级每个学生各科成绩、总成绩和平均成绩,以及任课老师,还能进行增加、修改、删除等工作,如图4-1。图 4-1 班级成绩(2)在年级成绩选项中,可以查询到该年级所有学生各科成绩、总成绩、平均成绩以及科目总成绩、平均成绩,如图4-2。图4-2 年级成绩(3)在参数设置选项中,可以进行班级的创建和删除,还可以进行科目的调整,如图4-3。图4-3 参数设置4 结束语通过此次学生成绩管理系统的设计,使我对C+程序设计有了深一步的了解,对系统设计及开发有了比较全面的思路。首

17、先,通过对系统进行需求分析,确定各个功能函数;然后一个个具体地对他们进行编程,并且仔细检查看是否有错;在完成这一步之后才开始构造主函数,通过主函数把各个功能函数联系起来,编译修改错误和不足之处在实际编程过程中会遇到很多不同的错误,有时候是一些很明显很细节的语法错误,这些可以通过编译来查找错误的所在,然而那些并不明显难以查找的隐性错误却真让人头痛,没有办法只好利用断点调试来一步步检查代码中的错误,这样为了找一个错误花费了大量的时间,但是找出错误之后的感觉却是非常好的。同时我翻阅了大量的书籍,尽管大部分书都只是翻了一部分页码而已,却给了我一个非常有价值的经验。总之,此次系统设计给我们提供了一个既动

18、手又动脑、自学、独立实践的机会,使我们养成了勤翻阅各种相关资料的习惯,将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际、实践编程的能力,为今后的学习和实践打下了良好的基础。参考文献格式不规范,照第1条修改(1)Robert L.Kruse著,C +数据结构与程序设计,清华大学出版社. 时间(2)C+面向对象程序设计习题解析与上机指导-清华大学出版社-陈维兴 著(3)C程序设计(第二版)-清华大学出版社.谭浩强 著(4)C+语言基础教程-清华大学出版社.吕凤煮 著(5)F.Brokken and K.Kubat. C+ Annotations. ,ICC

19、E,University of Groningen附录:源程序清单/程序名称:BaDialog.cpp/程序功能:采用面向对象方法设计程序,实现对成绩信息的管理。/程序作者:孙方亮 黄鑫 刘达 瞿成/最后修改日期:2007-01-12#include "stdafx.h" /类声明,用于描述成绩管理系统的显示及控制class CBaDialog :public: OnEdit(); /编辑学生信息OnFind(); /查找学生信息OnSelchangeCombo1(); /修改学生信息OnAdd(); /添加学生信息OnDelect(); /删除学生信息OnAll(); /

20、显示全部信息DoDataExchange(); /数据输入与输出的交换/主程序void CBaDialog:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CBaDialog, CDialog)END_MESSAGE_MAP()BOOL CBaDialog:OnInitDialog() CDialog:OnInitDialog(); CDRecordset m_Set(&theApp.m_DB); CBRecordset m_bSet(&theApp.m_DB); C

21、TRecordset m_tSet(&theApp.m_DB); unsigned i=0;CODBCFieldInfo Info;m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,"一班STUDENT");m_ListCtrlx.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);for( i=0;i<m_Set.m_nFields;i+) m_Set.GetODBCFieldInfo(i,Info);m_ListCtrlx.InsertColumn(i,Info.m_strNa

22、me,LVCFMT_LEFT,70); m_Set.Close();m_bSet.Open(AFX_DB_USE_DEFAULT_TYPE,"一班OBJECT");m_ListCtrlb.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);for( i=0;i<m_bSet.m_nFields;i+) m_bSet.GetODBCFieldInfo(i,Info);m_ListCtrlb.InsertColumn(i,Info.m_strName,LVCFMT_LEFT,80); m_bSet.Close()

23、;m_ListCtrll.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); m_ListCtrll.InsertColumn(0,_T("科目"),LVCFMT_IMAGE|LVCFMT_LEFT); m_ListCtrll.InsertColumn(1,"任课老师"); for(i=0;i<2;i+)m_ListCtrll.SetColumnWidth(i,80); m_cob.SetCurSel(0); this->Enable(FALSE); m_Timer=SetTime

24、r(1,2,NULL); m_bIsAsc=TRUE; m_bS=TRUE;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); lpszFile = sPath + "tect.txt"

25、 CFile aFile; CFileFind fFind;BOOL bSuccess;bSuccess=fFind.FindFile( lpszFile);if(!bSuccess) aFile.Open( lpszFile,CFile:modeCreate);elseaFile.Open( lpszFile,CFile:modeReadWrite); CArchive arr(&aFile,CArchive:load); Serialize( arr); if(m_Three="三班") m_cob.AddString(m_Three); if(m_Four=&

26、quot;四班") m_cob.AddString(m_Four); if(m_Five="五班") m_cob.AddString(m_Five); if(m_Six="六班") m_cob.AddString(m_Six); if(m_Seven="七班") m_cob.AddString(m_Seven); if(m_Eight="八班") m_cob.AddString(m_Eight); aFile.Close();return TRUE; /返回 TRUE / 除外: OCX 性质页面应返回

27、falsevoid CBaDialog:OnAdd() / TODO: 添加你的操作告示代码Selec=TRUE;CAddialog dlg; if(dlg.DoModal()=IDOK) CString str=this->Select(); if(str="一班") if(dlg.m_nxue>=200|dlg.m_nxue<100)AfxMessageBox("一班学号在100200之间"); m_Set.Close();m_bSet.Close(); return; else if(str="二班") if(

28、dlg.m_nxue<200|dlg.m_nxue>=300)AfxMessageBox("二班学号在200300之间"); m_Set.Close();m_bSet.Close();return; m_Set.AddNew(); m_nRecordCount+=1; m_Set.m_column1=dlg.m_nxue; m_Set.m_column2=dlg.m_strName; m_Set.m_column3=dlg.m_fmaths; m_Set.m_column4=dlg.m_fphysical; m_Set.m_column5=dlg.m_fchem

29、istry; m_Set.m_column6=dlg.m_fenglish; m_Set.m_column7=dlg.m_fpolitic; m_Set.m_column8=dlg.m_fmaths+dlg.m_fphysical+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitic; m_Set.m_column9=(float)(m_Set.m_column8/5); this->Equal(); m_Set.Update(); /Update()一定放在Equal()后 m_Set.MoveFirst(); if(m_Set.m_column

30、1=0) m_Set.Delete(); m_Set.Requery(); m_Set.Requery(); this->Xuan(); void CBaDialog:OnDelect() / TODO: 在这添加你的控制告示操作代码CDelectDialog dlg;Selec=FALSE;if(dlg.DoModal()=IDOK)if(dlg.m_nPass!=1234)AfxMessageBox("密码不正确!你没有权限删除记录"); elsethis->Select(); m_Set.MoveFirst();BOOL sel=FALSE;do if(m

31、_Set.m_column1!=dlg.m_nxue) m_Set.MoveNext(); else m_nRecordCount-=1; sel=TRUE; m_bSet.MoveFirst(); this->Equal(); m_Set.Delete(); m_Set.Requery(); break; while(!m_Set.IsEOF(); if(sel=FALSE)AfxMessageBox("没有此记录");return;elsethis->Xuan();void CBaDialog:OnFind() / TODO: 在这添加你的控制告示操作代码C

32、FinDialog dlg;if( dlg.DoModal()=IDOK) this->Select();m_bSet.Close();if(dlg.m_Getstring2=">=")m_Set.m_strFilter.Format("%s>=%.2f",dlg.m_Getstring1,dlg.m_find);if(dlg.m_Getstring2="=")m_Set.m_strFilter.Format("%s=%.2f",dlg.m_Getstring1,dlg.m_find);if(dl

33、g.m_Getstring2="<=")m_Set.m_strFilter.Format("%s<=%.2f",dlg.m_Getstring1,dlg.m_find);m_ListCtrlx.DeleteAllItems();m_Set.Requery();if(m_Set.IsEOF() AfxMessageBox("没有符合条件的记录"); m_Set.Close(); return ; elsethis->Show();void CBaDialog:OnAll() / TODO: 添加你的控制告示操作代码th

34、is->Select();m_bSet.Close();m_Set.m_strFilter.Empty();m_Set.Requery();m_ListCtrlx.DeleteAllItems();this->Show();void CBaDialog:OnEdit() / TODO: 在这添加你的控制告示操作代码CEditDialog dlg;if(dlg.DoModal()=IDOK) if(strcmp(dlg.m_pass,"1234")!=0)AfxMessageBox("你没有权限更改记录!请重输入密码:"); else this->Select(); m_Set.m_strFilter.Format("学号=%d",dlg.m_xue); m_Set.Requery(); if(m_Set.IsEOF() AfxMessageBox("没有此记录"); else for(int i=0;i<5;i+) float p

温馨提示

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

评论

0/150

提交评论