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

下载本文档

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

文档简介

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

2、信息;在对话框上能够录入和编辑学生某门课的考试成绩;在对话框上能够按照学生姓名查询学生的选课信息和选课成绩,并统计出其总成绩、平均成绩 ,计算出该学生的成绩的标准差;显示全班的学生成绩排名 。统计出各班的平均成绩,并进行排名 。_1n平均分:xxin i 11n_标准差: s( xix)2n i 1问题描述 :要求编写编写一个学生的学籍成绩管理系统,要实现能添加、 删除 、编辑和查询课程信.专业 .整理 .下载可编辑息、基本信息和选课信息。能录入和编辑学生的考试成绩还能查询已选的课程,总成绩 ,平均成绩还有标准差并排名。问题分析 :本题重点考察的内容是数据信息的处理问题,其中包括学生数据的传递

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

4、要多用途,通过添加信息然后能够查询,尽量减少对话框的数量,以减少对话框之间数据的传递,这样可以极大优化程序。设计表示 :.专业 .整理 .下载可编辑【调试报告 】实现:.专业 .整理 .下载可编辑调试过程中问题1.因为选课是动态的,而且一门课对应一门成绩,所以成绩也是个随着课程的添加而添加,删除而删除 ,所以都用 STL中的 list 来装 。这样把学生的所有信息都封装在一个类中更具有整体的效果,也有更加明确的思路。这里实现的要先输入班号,然后在内存中一个一个学生去遍历,找到班号相同的学生,然后对这些学生进行排序,再显示出来 。 然而开始做时对话框很多很繁琐,可以设计子对话框来进行整合各个类的

5、不同功能,使界面更简洁干净 。2.该题遇到了较为严重的内存泄露问题:没有找出问题代码的所在,但是通过debug文件夹中 “学生管理 .exe”程序还是可以运行.专业 .整理 .下载可编辑然而会弹出警告窗口:.专业 .整理 .下载可编辑点击确认后还是会弹出我做的界面:.专业 .整理 .下载可编辑【附录】源程序清单 :学生所有信息的类class CAllInforpublic:CAllInfor();CAllInfor(CStudent &a);virtual CAllInfor();CStudent m_Stu;list m_Lessen;list m_Grade;double GetAveGr

6、ade();三大类对学生信息处理1.学生基本信息的对话框类添加功能实现void CBStudentInfor:OnAdd()/ TODO: Add your control notification handler code here UpdateData(TRUE);.专业 .整理 .下载可编辑list:iterator p;bool judge = true;for ( p = m_AllInformation.begin();p != m_AllInformation.end();+p)if (p-m_Stu.m_School_Id = m_SchoolId)judge = false;

7、if ( judge)CStudent Stu(m_Name,m_Sex,m_Class,m_SchoolId,m_College);CAllInfor obj(Stu);m_AllInformation.push_back(obj);for (int i = 0;i+)if (m_list.GetItemText(i,0)=)int nRow = m_list.InsertItem(i,m_Name); /插入行m_list.SetItemText(nRow, 1,m_Sex); /设置数据m_list.SetItemText(nRow, 2,m_Class);m_list.SetItemT

8、ext(nRow, 3,m_SchoolId);.专业 .整理 .下载可编辑m_list.SetItemText(nRow, 4,m_College);break;elseMessageBox( 学号重复 ,请重新输入 !);m_SchoolId =;m_Sex = ;m_Name = ;m_College = ;m_Class = ;UpdateData(FALSE);编辑功能实现void CBStudentInfor:OnEdit()/ TODO: Add your control notification handler code here UpdateData(TRUE);list:i

9、terator p;.专业 .整理 .下载可编辑CString sname = m_list.GetItemText(m_SelectRow,0);for (p = m_AllInformation.begin();p != m_AllInformation.end();+p)if (p-m_Stu.m_Name = sname)p-m_Stu.m_Name = m_Name;p-m_Stu.m_Sex = m_Sex;p-m_Stu.m_Class = m_Class;p-m_Stu.m_School_Id = m_SchoolId;p-m_Stu.m_College = m_College

10、;break;for (int j = 0;j 5;j+)switch ( j)case 0:m_list.SetItemText(m_SelectRow, 0,m_Name);break;case 1:m_list.SetItemText(m_SelectRow, 1,m_Sex);break;case 2:m_list.SetItemText(m_SelectRow, 2,m_Class);.专业 .整理 .下载可编辑break;case 3:m_list.SetItemText(m_SelectRow, 3,m_SchoolId);break;case 4:m_list.SetItemT

11、ext(m_SelectRow, 4,m_College);break;m_SchoolId =;m_Sex = ;m_Name = ;m_College = ;m_Class = ;UpdateData(FALSE);删除功能实现 :void CBStudentInfor:OnDelete()/ TODO: Add your control notification handler code here CString sname = m_list.GetItemText(m_SelectRow,0); list:iterator p;for (p = m_AllInformation.beg

12、in();p != m_AllInformation.end();+p).专业 .整理 .下载可编辑if (p-m_Stu.m_Name = sname)m_AllInformation.erase(p);break;m_list.DeleteItem(m_SelectRow);m_SchoolId =;m_Sex = ;m_Name = ;m_College = ;m_Class = ;UpdateData(FALSE);文件读取实现 (从父对话框读到子对话框)BOOL CBStudentInfor:OnInitDialog()CDialog:OnInitDialog();/ TODO: A

13、dd extra initialization hereDWORD styles = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;ListView_SetExtendedListViewStyleEx(m_list.m_hWnd, styles, styles );.专业 .整理 .下载可编辑m_list.InsertColumn(0,姓名 ,LVCFMT_CENTER,70);m_list.InsertColumn(1,性别 ,LVCFMT_CENTER,70);m_list.InsertColumn(2,班级 ,LVCFMT_CENTER,70);m_lis

14、t.InsertColumn(3,学号 ,LVCFMT_CENTER,100);m_list.InsertColumn(4,学院 ,LVCFMT_CENTER,70);CMy520Dlg *pParent = (CMy520Dlg*)GetParent();m_AllInformation.clear();m_AllInformation = pParent-m_AllInformation;list:iterator p;int i;for (i = 0,p = m_AllInformation.begin();p != m_AllInformation.end();+p,+i)int nR

15、ow = m_list.InsertItem(i,p-m_Stu.m_Name);m_list.SetItemText(nRow,1,p-m_Stu.m_Sex);m_list.SetItemText(nRow,2,p-m_Stu.m_Class);m_list.SetItemText(nRow,3,p-m_Stu.m_School_Id);m_list.SetItemText(nRow,4,p-m_Stu.m_College);return TRUE;/ return TRUE unless you set the focus to a control/ EXCEPTION: OCX Pro

16、perty Pages should return FALSE2.选课和成绩信息:.专业 .整理 .下载可编辑添加的实现oid CLessen_Grade:OnAdd()/ TODO: Add your control notification handler code here UpdateData(TRUE);for (int i = 0;i+)if (m_list.GetItemText(i,0)=)int nRow = m_list.InsertItem(i,m_Class);/插入行m_list.SetItemText(nRow,1,m_Time);/设置数据m_list.SetIt

17、emText(nRow,2,m_Grade);UpdateData(FALSE);break;list:iterator p;for (p = m_AllInformation.begin();p != m_AllInformation.end();+p)if (m_SchoolId = p-m_Stu.m_School_Id)CGrade obj1(m_SchoolId,m_Class,m_Grade);.专业 .整理 .下载可编辑p-m_Grade.push_back(obj1);CLessen obj2(m_Class,m_Time);p-m_Lessen.push_back(obj2)

18、;m_Class = ;m_Grade = ;/ m_SchoolId = ;m_Time = ;UpdateData(FALSE);编辑的实现 :void CLessen_Grade:OnEdit()/ TODO: Add your control notification handler code here UpdateData(TRUE);for (int j = 0;j 3;j+)switch ( j)case 0:m_list.SetItemText(m_SelectRow, 0,m_Class);.专业 .整理 .下载可编辑break;case 1:m_list.SetItemTe

19、xt(m_SelectRow, 1,m_Time);break;case 2:m_list.SetItemText(m_SelectRow, 2,m_Grade);break;m_Class = ;m_Grade = ;m_Time = ;UpdateData(FALSE);void CLessen_Grade:OnAdd()/ TODO: Add your control notification handler code here UpdateData(TRUE);for (int i = 0;i+)if (m_list.GetItemText(i,0)=)int nRow = m_lis

20、t.InsertItem(i,m_Class);/插入行m_list.SetItemText(nRow,1,m_Time);/设置数据.专业 .整理 .下载可编辑m_list.SetItemText(nRow,2,m_Grade);UpdateData(FALSE);break;list:iterator p;for (p = m_AllInformation.begin();p != m_AllInformation.end();+p)if (m_SchoolId = p-m_Stu.m_School_Id)CGrade obj1(m_SchoolId,m_Class,m_Grade);p-

21、m_Grade.push_back(obj1);CLessen obj2(m_Class,m_Time);p-m_Lessen.push_back(obj2);UpdateData(FALSE);删除的实现void CLessen_Grade:OnDelete2()/ TODO: Add your control notification handler code here.专业 .整理 .下载可编辑m_list.DeleteItem(m_SelectRow);m_Class = ;m_Grade = ;m_Time = ;UpdateData(FALSE);查询的实现void CLessen

22、_Grade:OnSearch()/ TODO: Add your control notification handler code here UpdateData(TRUE);list:iterator p1; int a;bool judge = true;for (p1 = m_AllInformation.begin();p1 != m_AllInformation.end();+p1)if (p1-m_Stu.m_School_Id = m_SchoolId)judge = false;list:iterator p2;for(p2=(p1-m_Grade).begin(),a=0

23、;p2!=(p1-m_Grade).end();+p2,+a).专业 .整理 .下载可编辑CString li=p2-m_Lessen;int nRow = m_list.InsertItem(a,p2-m_Lessen);/插入行m_list.SetItemText(nRow,2,p2-m_Grade);/设置数据list:iterator p3;for (p3 = (p1-m_Lessen).begin();p3 != (p1-m_Lessen).end(); +p3)if (p2-m_Lessen = p3-m_Lessen)m_list.SetItemText(a,1,p3-m_Les

24、senTime);break;if ( judge)MessageBox( 没有此学号的学生,请重新输入 !);m_SchoolId = ;UpdateData(false);.专业 .整理 .下载可编辑对话框的传值BOOL CLessen_Grade:OnInitDialog()CDialog:OnInitDialog();/ TODO: Add extra initialization hereDWORD styles = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;ListView_SetExtendedListViewStyleEx(m_list.m_h

25、Wnd, styles, styles );m_list.InsertColumn(0,课程 ,LVCFMT_CENTER,100);m_list.InsertColumn(1,上课时间 ,LVCFMT_CENTER,100);m_list.InsertColumn(2,成绩 ,LVCFMT_CENTER,75);CMy520Dlg *pParent = (CMy520Dlg*)GetParent();m_AllInformation.clear();m_AllInformation = pParent-m_AllInformation;return TRUE;/ return TRUE un

26、less you set the focus to a control/ EXCEPTION: OCX Property Pages should return FALSE3.班级信息对话框的传值:BOOL CClassSort:OnInitDialog()CDialog:OnInitDialog();.专业 .整理 .下载可编辑/ TODO: Add extra initialization hereDWORD styles = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;ListView_SetExtendedListViewStyleEx(m_list.m

27、_hWnd, styles, styles );m_list.InsertColumn(0,姓名 ,LVCFMT_CENTER,70);m_list.InsertColumn(1,平均成绩 ,LVCFMT_CENTER,100);m_list.InsertColumn(2,排名 ,LVCFMT_CENTER,70);CMy520Dlg *pParent = (CMy520Dlg*)GetParent();m_AllInformation.clear();m_AllInformation = pParent-m_AllInformation;return TRUE;/ return TRUE unless you set the focus to a control/ EXCEPTION: OCX Property Pages should return FALSEvoid CClassSort:InsertSort(ClassSort a, int n)ClassSort temp;int i,j;for (i = 0;i 0 & temp.aveGrade aj - 1.aveGrade).专业 .整理 .下载可编辑aj = aj - 1;j-;aj = temp;void CClassSort:OnOK()/ TODO:

温馨提示

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

评论

0/150

提交评论