学生管理系统实验报告_第1页
学生管理系统实验报告_第2页
学生管理系统实验报告_第3页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、学生学籍成绩管理系统:学生的信息包括:姓名、学号、性别、班级、院系;学生的成绩信息包括英语、数学、程序设计及体育成绩等各门课的成绩;定义如下类,并建立一个文本文件Student.dat ,用于存储学生、课程与成绩的相关信息。文件格式自己定义。学生类CStudent (姓名、学号、性别、班级、院系);课程类CLesson(课程名称、课程开设时间);成绩类CGrade(学号、课程名称、成绩)要求实现如下功能:在对话框上能够添加、删除、编辑和查询课程信息;在对话框上能够添加、删除、编辑和查询学生信息;在对话框上能够增加、删除、编辑和查询学生的选课信息;在对话框上能够录入和编辑学生某门课的考试成绩;在

2、对话框上能够按照学生姓名查询学生的选课信息和选课成绩,并统计出其总成绩平均成绩,计算出该学生的成绩的标准差;显示全班的学生成绩排名 。统计出各班的平均成绩,并进行排名。平均分:_ 4xXin i m标准差:s = J: (N _x)2,n i t问题描述:要求编写编写一个学生的学籍成绩管理系统,要实现能添加、删除、编辑和查询课程信息、基本信息和选课信息。能录入和编辑学生的考试成绩还能查询已选的课程,总成绩, 平均成绩还有标准差并排名问题分析:本题重点考察的内容是数据信息的处理问题,其中包括学生数据的传递 、改变,学生信息的存储、读取。能够进行计算每次输入的学生信息进行计算总分,平均分等,还要对

3、所有的学生成绩进行处理排名。同时通过对话框对各种不同数据编辑,又能够将它们相关联是本题的一个主要难点。又因为要用到不同的查询方式,所以还需要需要不同的输出对 话框。总之该题的对数据处理要求挺高,综合性很强。算法设计】设计思想:本题我认为关键地方在于通过三个类来传递数据的实现和对话框的设计,这题用到得对话框较多,变量名称选取要特别注意。还有就是对话上的按钮了,按钮满足题目整体要求的层面上,并且还要达到最简,不要浪费,也不能缺少功能,能将每次输入的学生信息进行 数学处理。一个对话框要多用途,通过添加信息然后能够查询,尽量减少对话框的数量以减少对话框之间数据的传递,这样可以极大优化程序。设计表示 :

4、调试报告】实现:调试过程中问题1因为选课是动态的,而且一门课对应一门成绩,所以成绩也是个随着课程的添加而添加,删除而删除,所以都用STL中的list来装。这样把学生的所有信息都封装在一个类中更 具有整体的效果,也有更加明确的思路。这里实现的要先输入班号,然后在内存中一个一个学生去遍历,找到班号相同的学生,然后对这些学生进行排序,再显示出来。然而开始 做时对话框很多很繁琐,可以设计子对话框来进行整合各个类的不同功能,使界面更简洁干净。2.该题遇到了较为严重的内存泄露问题:没有找出问题代码的所在,但是通过debug文件夹中学生管理.exe”程序还是可以运行f 口 Debug£文件

5、4; 編辑同查看加收藏®工具帮助(也-II后退坪十匸 J E:36讯戲禺重要数据'桌面、学生信息管理系轨Debug文件初文件夹任务RIOtJJ又阡130 KB口创逹一个新丈件夹沙将这个文件夹发布到W甜口共亨此立件夹WdAfx.objOBJ立件104 KB其它位置Student, objOBJ文件11 KB口学生信息管理系圻iB我的文档己共拿立档Q我的电脑勺网上邻居学生签理七炬 I学生管理阿:讨然而会弹出警告窗口_学生管理X內存不足VCGO.kJb1DB文件265 KE描垠学生管理Mi. 文件版本:1.0.0.1点击确认后还是会弹出我做的界面。学生管理中国地质大学学生管理系统学

6、院设有五亍专业信息工程学院班级信息选课与成绩学生信息2013- 5-28敦件工程信息工程地理信息系蜿遥感科学测绘工程登录日期确定取消附录】源程序清单:学生所有信息的类class CAIII nforpublic:CAIII nfor();CAIII nfor(CStude nt & a);virtual CAIII nfor();CStude nt m_Stu;list<CLesse n> m_Lesse n;list<CGrade> m_Grade;double GetAveGrade();三大类对学生信息处理1.学生基本信息的对话框类添加功能实现void C

7、BStude ntln for:O nAdd()/ TODO: Add your con trol no tificati on han dler code hereUpdateData(TRUE);list<CAIII nfor>:iterator p;bool judge = true;for ( p = m_AllI nformatio n.begi n( );p != m_AllI nformatio n.en d();+p)if (p->m_Stu.m_School_ld = m_Schoolld)judge = false;if (judge)CStude nt

8、Stu(m_Name,m_Sex,m_Class,m_Schoolld,m_College);CAllI nfor obj(Stu);m_AllI nformati on .push_back(obj);for (i nt i = 0;i+)if (mist.GetltemText(i,O)="")int n Row = mist.l nsertltem(i,m_Name); /插入行mist.SetltemText( nRow, 1,m_Sex); /设置数据mist.SetltemText( nRow, 2,m_Class);mist.SetltemText( nRow

9、, 3,m_SchoolId);mist.SetltemText( nRow, 4,m_College);break;elseMessageBox("学号重复,请重新输入!");m_Schoolld =""m_Sex =""m_Name =""m_College ="”;m_Class =""UpdateData(FALSE);编辑功能实现void CBStude ntln for:O nEdit()/ TODO: Add your con trol no tificati on ha

10、n dler code hereUpdateData(TRUE);list<CAIII nfor>:iterator p;CStri ng sn ame = mist.GetltemText(m_SelectRow,0);for (p = m_AIII nformatio n.begi n();p != m_AIII nformatio n.e nd();+p) if (p->m_Stu.m_Name = sn ame)p->m_Stu.m_Name = m_Name;p->m_Stu.m_Sex = m_Sex;p->m_Stu.m_Class = m_C

11、lass;p->m_Stu.m_School_Id = m_Schoolld;p->m_Stu.m_College = m_College;break;for (i nt j = 0;j < 5;j+)switch ( j)case 0:mist.SetltemText(m_SelectRow, 0,m_Name); break;case 1:mist.SetltemText(m_SelectRow, 1,m_Sex);break;case 2:mist.SetltemText(m_SelectRow, 2,m_Class);break;case 3:mist.Setltem

12、Text(m_SelectRow, 3,m_Schoolld); break;case 4:mist.SetltemText(m_SelectRow, 4,m_College); break;m_SchoolId =""m_Sex =""m_Name =""m_College =""m_Class =""UpdateData(FALSE);删除功能实现:void CBStude ntln for:O nDelete()/ TODO: Add your con trol no tificati o

13、n han dler code hereCStri ng sn ame = mist.GetltemText(m_SelectRow,0);list<CAllI nfor>:iterator p;for (p = m_AllI nformatio n.begi n();p != m_AllI nformatio n.e nd();+p)if (p->m_Stu.m_Name = sn ame)m_AIII nformatio n.erase(p);break;mist.Deleteltem(m_SelectRow);m_Schoolld =""m_Sex

14、=""m_Name =""m_College =""m_Class =""UpdateData(FALSE);文件读取实现(从父对话框读到子对话框)BOOL CBStude ntln for:O nlni tDialog()CDialog:O nlni tDialog();/ TODO: Add extra in itializatio n hereDWORD styles = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;ListView_SetExte ndedListViewSt

15、yleEx(mist.m_hWnd, styles, styles );mist.l nsertColu mn (0,"姓名",LVCFMT_CENTER,70);mist.l nsertColu mn (1,"性另ij ",LVCFMT_CENTER,70);mist.l nsertColu mn (2,"班级",LVCFMT_CENTER,70);mist.l nsertColu mn (3,"学号",LVCFMT_CENTER,100);mist.l nsertColu mn (4,"学院"

16、;,LVCFMT_CENTER,70);CMy520Dlg *pPare nt = (CMy520Dlg*)GetPare nt();m_AIII nformatio n. clear();m_AIII nformatio n = pPare nt->m_AIII nformatio n;list<CAIII nfor>:iterator p;int i;for (i = 0,p = m_AIII nformatio n.begi n( );p != m_AIII nformatio n.en d();+p,+i) int n Row = mist.l nsertltem(i

17、,p->m_Stu.m_Name);mist.SetltemText( nRow,1,p->m_Stu.m_Sex);mist.SetltemText( nRow,2,p->m_Stu.m_Class);mist.SetltemText( nRow,3,p->m_Stu.m_School_ld);mist.SetltemText( nRow,4,p->m_Stu.m_College);return TRUE; / return TRUE uni ess you set the focus to a con trol/ EXCEPTION: OCX Property

18、 Pages should return FALSE2.选课和成绩信息:添加的实现oid CLessen_Grade:O nAdd()/ TODO: Add your con trol no tificati on han dler code here UpdateData(TRUE);for (int i = 0;i+)if (mist.GetltemText(i,O)="")int n Row = mist.l nsertltem(i,m_Class);插入行mist.SetltemText( nRow,1,m_Time);设置数据mist.SetltemText( n

19、Row,2,m_Grade);UpdateData(FALSE);break;list<CAllI nfor>:iterator p;for (p = m_AllI nformatio n.begi n( );p != m_AllI nformatio n.e nd();+p) if (m_SchoolId = p->m_Stu.m_School_Id)CGrade obj1(m_SchoolId,m_Class,m_Grade);p->m_Grade.push_back(obj1);CLesse n obj2(m_Class,m_Time);p->m_Lesse

20、 n.push_back(obj2);m_Class =""m_Grade =""/ m_Schoolld =""m_Time =""UpdateData(FALSE);编辑的实现:void CLesse n_Grade:O nEdit()/ TODO: Add your con trol no tificati on han dler code hereUpdateData(TRUE);for (int j = 0;j < 3;j+)switch ( j)case 0:mist.SetltemText(m_

21、SelectRow, 0,m_Class); break;case 1:mist.SetltemText(m_SelectRow, 1,m_Time);break;case 2:mist.SetltemText(m_SelectRow, 2,m_Grade); break;m_Class =""m_Grade =""m_Time =""UpdateData(FALSE);void CLessen_Grade:O nAdd()/ TODO: Add your con trol no tificati on han dler code h

22、ere UpdateData(TRUE);for (int i = 0;i+)if (mist.GetltemText(i,O)="")int n Row = mist.l nsertltem(i,m_Class);插入行mist.SetltemText( nRow,1,m_Time);设置数据mist.SetltemText( nRow,2,m_Grade);UpdateData(FALSE);break;list<CAIII nfor>:iterator p;for (p = m_AllI nformatio n.begi n( );p != m_AllI

23、nformatio n.e nd();+p)if (m_Schoolld = p->m_Stu.m_School_ld)CGrade obj1(m_Schoolld,m_Class,m_Grade);p->m_Grade.push_back(obj1);CLesse n obj2(m_Class,m_Time); p->m_Lesse n.push_back(obj2);UpdateData(FALSE);删除的实现void CLesse n_Grade:O nDelete2()/ TODO: Add your con trol no tificati on han dler

24、 code heremist.Deleteltem(m_SelectRow);m_Class =""m_Grade =""m_Time =""UpdateData(FALSE);查询的实现void CLesse n_Grade:O nSearch()/ TODO: Add your con trol no tificati on han dler code hereUpdateData(TRUE);list<CAllI nfor>:iterator p1;int a;bool judge = true;for (p1 =

25、m_AllI nformati on .begi n( );p1 != m_AllI nformati on.en d();+p1)if (p1->m_Stu.m_School_ld = m_SchoolId)judge = false;!=list<CGrade>:iterator p2;for (p2=(p1->m_Grade).begi n(),a=0;p2(p1->m_Grade).e nd();+p2,+a)CStri ng li=p2->m_Lesse n;int n Row = mist.l nsertltem(a,p2->m_Lesse

26、 n);插入行mist.SetltemText( nRow,2,p2->m_Grade);设置数据list<CLesse n>:iterator p3;for (p3 = (p1->m_Lesse n).begi n() ;p3 != (p1->m_Lesse n).e nd(); +p3) if (p2->m_Lesse n = p3->m_Lesse n)mist.SetltemText(a,1,p3->m_Lesse nTime);break;if (judge)MessageBox("没有此学号的学生,请重新输入!")

27、;m_Schoolld =""UpdateData(false);对话框的传值BOOL CLessen_Grade:O nlni tDialog()CDialog:O nlni tDialog();/ TODO: Add extra in itializatio n hereDWORD styles = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;ListView_SetExte ndedListViewStyleEx(mist.m_hWnd, styles, styles );mist.lnsertColumn(0,"课程 ”,L

28、VCFMT_CENTER,100);mist.lnsertColumn(1,"上课时间",LVCFMT_CENTER,100);mist.lnsertColumn(2,"成绩 ”,LVCFMT_CENTER,75);CMy520Dlg *pPare nt = (CMy520Dlg*)GetPare nt();m_AllI nformatio n. clear();m_AllI nformatio n = pPare nt->m_AIII nformatio n;return TRUE; / return TRUE uni ess you set the fo

29、cus to a con trol/ EXCEPTION: OCX Property Pages should return FALSEBOOL CClassS ort:Onlni tDialog()CDialog:O nlni tDialog();/ TODO: Add extra in itializatio n hereDWORD styles = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;ListView_SetExte ndedListViewStyleEx(mist.m_hWnd, styles, styles );mist.lnsertColum

30、n(0,"姓名 ”,LVCFMT_CENTER,70);mist.lnsertColumn(1,"平均成绩",LVCFMT_CENTER,100);mist.lnsertColumn(2,"排名",LVCFMT_CENTER,70);CMy520Dlg *pPare nt = (CMy520Dlg*)GetPare nt();m_AIII nformatio n. clear();m_AIII nformatio n = pPare nt->m_AIII nformatio n;return TRUE; / return TRUE uni

31、 ess you set the focus to a con trol/ EXCEPTION: OCX Property Pages should return FALSEvoid CCIassS ort:ln sertSort(CIassSort a, i nt n)ClassSort temp;int i,j;for (i = 0;i < n ;i+)j = i;temp = ai;while ( j > 0 && temp.aveGrade > aj - 1.aveGrade)aj = aj - 1;j-;aj = temp;void CCIassS ort:On OK()/ TODO: Add extra validation hereUpdateData(TRUE);int i,j;list<CAIII nfor>:iterator p;for (p = m_AllI nformatio n.begi n( );p != m_AllI nformatio n.e nd();+p)if (p->m_Stu.m_Class = m_Class_Num)ClassSort temp(p->m_Stu.m_Name,p->GetAveGrade();Stu.push_back(temp);C

温馨提示

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

评论

0/150

提交评论