1、学籍管理系统设计课 程 设 计课程名称_C+面向对象程序设计课程设计 _题目名称_学籍管理系统_ _学生学院_ _应用数学学院_ _ 2014 年 09 月26摘 要本系统主要用于对学生的成绩进行管理。通过本系统,可以将各个学生的成绩记录输入到系统中,保存到文件,便于查阅和相关管理。此外,该系统还能实现对学生成绩记录的显示,查询以及插入或删除学生的成绩记录等功能。为实现本系统,我们通过查找资料,运用VC6.0进行编译,操作调试,设计实验版,经过不断地修改,并运用亿图工具画出系统流程图,最后进行调试得出最终版学籍管理系统。关键字:VC6.0 调试 流程图目录摘 要2工作安排3一 系统需求分析51
2、.1系统设计的目的与意义51.2系统功能需求5二 功能规格说明52.1系统功能分析52.2功能模块52.3系统功能模块图6三 系统分析设计说明书63.1.信息类的设计63.2.注册类的设计73.3.资料登记类73.4.成绩查询类83.5.资料修改类83.6资料删除类8四 界面设计94.1.主界面94.2.注册界面94.3.登录界面104.4.资料登记界面114.5.成绩查询界面114.6.资料修改界面124.7.资料删除界面124.8.排名查询13五 代码实现145.1infortion类主界面代码的实现145.2 frmNew类资料登记界面的代码实现175.3 cjcx类成绩查询界面的代码实
3、现205.4 alter类资料修改界面的代码实现245.5 del类资料删除界面的代码实现265.6 系统代码的实现29六 系统的评价346.1系统的优点346.2系统的缺点35七 系统的推广35八 论文总结35九 参考文献35十 成绩评定36工作安排李焕兴:查找资料,学习他人的成果,训练了VC6.0的运用,进行代码的编写,函数的编译,对实验版进行调试,进行修改得出最终的学籍管理系统。周一映:学习论文的编写,对系统的界面进行美化,学习亿图绘图,进行论文的撰写,活跃气氛。一 系统需求分析1.1系统设计的目的与意义随着教育水平的提高,学生数量不断增加,而各样的考试逐渐频繁,因此需要一个学生成绩管理
4、系统来对学生的成绩进行管理,减轻教务人员管理的工作量,提高效率与准确率。1.2系统功能需求 本系统有六个类, information类、register类、cjcx类、del类、frmNew类、alter类,进行注册、存储学生的个人信息、考试科目及成绩信息。有学生成绩信息录入、学生成绩信息修改、学生成绩信息显示、学生成绩信息删除、学生成绩信息查询以及数据保存文件,返回等功能。二 功能规格说明21系统功能分析系统通过调用函数来实现学生注册、学生成绩信息录入、学生成绩信息修改、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。information()类用于进入主界面;regsiter()
5、注册帐号密码;frmNew()学生成绩录入与登记;cjcx()类用于查询学生成绩;alter()类用来修改学生成绩及信息;del()类用于删除学生成绩及信息;主函数main()用于调用这些类。2.2功能模块1进入主界面要求:进入主界面,进行下一步选择;2进行注册要求:进行账号注册,填写密码;3资料登记要求:学生的信息数据要以文件的形式,能实现学生信息的输入与保存。4成绩查询要求:学生的信息数据要以文件的形式,能实现学生信息的按姓名查询5资料修改要求:学生的信息数据要以文件的形式,能实现学生信息的按姓名修改6资料删除要求:学生的信息数据要以文件的形式,能实现学生信息的按姓名删除7排名查询要求:按
6、姓名查询,对总分进行排序。2.3系统功能模块图 图1 系统功能模块图三 系统分析设计说明书3.1.信息类的设计该类定义了一个float变量用来存放分数,定义了设置按钮1至5的函数information-information:float+information()+OnButton1():void+OnButton2():void+OnButton3():void+OnButton4():void+OnButton5():void 图2信息类UML图3.2.注册类的设计该类定义了一个float类型的变量,定义了按钮2和按钮3成员的函数register-register:float+regist
7、er()+OnButton2():void+OnButton3():void图3信息类UML图3.3.资料登记类该类定义了一个float类型的变量,定义了按钮5和按钮4成员的函数frmNew6-frmNew6:float+OnButton5():void+OnButton4():void图4frmNew6类UML图3.4.成绩查询类该类定义了一个float类型的变量,定义了设置按钮2和按钮1成员的函数。cjcx-cjcx:float+cjcx()+OnButton2():void+OnButton1():void图4 cjcx类UML图3.5.资料修改类该类定义了一个float类型的变量,定义
8、了按钮2和按钮4成员的函数 alter-alter:float+OnButton2():void;+OnButton4():void 图5 alter类UML图3.6资料删除类 该该类定义了一个float类型的变量,定义了按钮2和按钮4成员的函数 alter-alter:float+OnButton2():void;+OnButton4():void图6 del类UML图四 界面设计4.1.主界面该界面有登录、注册、退出系统三个按钮,点击不同按钮进入不同界面,可以直接填写姓名、学号、密码进行登录,也可以进行注册,还可以直接退出。图7学籍管理系统主界面4.2.注册界面 在主界面点击注册后会进入注
9、册界面,该界面有注册、返回两个按钮,输入姓名、学号、密码进行注册。图8 注册界面4.3.登录界面登录后进入的界面,有资料登记、成绩查询、排名查询、资料修改、资料删除、退出系统六个按钮,点击不同按钮进入不同界面。图9 登录后界面4.4.资料登记界面 在登录界面点击资料登记按钮进入该界面,需填入姓名、学号、性别、班级、科目,并有添加、保存、返回三个按钮。图10 资料登记界面4.5.成绩查询界面 在登录界面点击成绩查询按钮后进入该界面,有查询、返回两个按钮。图11 成绩查询界面4.6.资料修改界面 在登录界面点击资料修改后进入该界面,可以对姓名、学号、班级、性别、科目成绩进行修改,并有确定、返回两个
10、按钮。图12 资料修改界面4.7.资料删除界面 在登录界面点击资料删除按钮进入该按钮,有删除、返回两个按钮,可以对学生信息进行删除。 图13 资料删除界面4.8.排名查询 在登录界面点击排名查询按钮后进入该界面,通过总分大小的比较,按总分有高到低进行排名 图14排名查询界面五 代码实现5.1infortion类主界面代码的实现/ information.cpp : implementation file/#include stdafx.h#include test2.h#include information.h#includealter.h#includecheck.h#includecjc
11、x.h#includedel1.h#includefrmNew.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ information dialoginformation:information(CWnd* pParent /*=NULL*/): CDialog(information:IDD, pParent)/AFX_DATA_INIT(information)/ NOTE: the ClassWizard will add member initializa
12、tion here/AFX_DATA_INITvoid information:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(information)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(information, CDialog)/AFX_MSG_MAP(information)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_
13、BN_CLICKED(IDC_BUTTON3, OnButton3)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)ON_BN_CLICKED(IDC_BUTTON5, OnButton5)/AFX_MSG_MAPEND_MESSAGE_MAP()/ information message handlersvoid information:OnButton2() alter obj;this-OnCancel();/关闭当前窗口obj.DoModal();void information:OnB
14、utton3() frmNew obj;this-OnCancel();/关闭当前窗口obj.DoModal();void information:OnButton1() cjcx obj;this-OnCancel();/关闭当前窗口obj.DoModal();void information:OnButton4() del obj;this-OnCancel();/关闭当前窗口obj.DoModal();void information:OnButton5() this-OnOK();1. register类注册界面代码的实现/ register.cpp : implementation
15、file/#include stdafx.h#include test2.h#include register.h#includefst.h#includeCTestDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ register dialogregister:register(CWnd* pParent /*=NULL*/): CDialog(register:IDD, pParent)/AFX_DATA_INIT(register)m_name0 =
16、_T();m_ID0 = 0.0f;m_mima0 = _T();/AFX_DATA_INITvoid register:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(register)DDX_Text(pDX, IDC_EDIT1, m_name0);DDX_Text(pDX, IDC_EDIT2, m_ID0);DDX_Text(pDX, IDC_EDIT3, m_mima0);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(register, CDialog)/AFX_
17、MSG_MAP(register)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)/AFX_MSG_MAPEND_MESSAGE_MAP()/ register message handlersvoid register:OnButton2() struct stuInfostu; this-UpdateData(true); strcpy(stu.name,m_name0); stu.ID=stu.ID0; strcpy(stu.mima,m_mima0); ofstream os(data.
18、txt,ios:app); os.write(char *)&stu,sizeof(stu); os.close(); MessageBox(注册成功!);void register:OnButton3() CTestDlg obj;this-OnCancel();/关闭当前窗口obj.DoModal();5.2 frmNew类资料登记界面的代码实现/ frmNew.cpp : implementation file/#include stdafx.h#include test2.h#include frmNew.h#includeinformation.h#includefst.h#incl
19、udefstream.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ frmNew dialogfrmNew:frmNew(CWnd* pParent /*=NULL*/): CDialog(frmNew:IDD, pParent)/AFX_DATA_INIT(frmNew)m_name = _T();m_sex = _T();m_classname = _T();m_ID = 0.0f;m_math = 0.0f;m_English = 0.0f;m_compu
20、ter = 0.0f;m_paiming = 0.0f;/AFX_DATA_INITvoid frmNew:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(frmNew)DDX_Control(pDX, IDC_LIST1, m_list);DDX_Text(pDX, IDC_EDIT1, m_name);DDX_Text(pDX, IDC_EDIT6, m_sex);DDX_Text(pDX, IDC_EDIT7, m_classname);DDX_Text(pDX, IDC_EDIT8,
21、 m_ID);DDX_Text(pDX, IDC_EDIT2, m_math);DDX_Text(pDX, IDC_EDIT11, m_English);DDX_Text(pDX, IDC_EDIT9, m_computer);/DDX_Text(pDX, IDC_EDIT10, m_paiming);/AFX_DATA_MAPBOOL frmNew:OnInitDialog() CDialog:OnInitDialog();CString strHeader8=姓名,性别,班级,学号,数学,英语,C+,总分;for(int nCol=0;nColUpdateData(true); int n
22、Item=m_list.GetItemCount();CString str4,str5,str6,str7,str3; str4.Format(%5.0f,this-m_math);str5.Format(%5.0f,this-m_English);str6.Format(%5.0f,this-m_computer);str7.Format(%5.0f,this-m_math+this-m_English+this-m_computer);/str8.Format(%5.0f,this-m_paiming);str3.Format(%5.0f,this-m_ID); m_list.Inser
23、tItem(nItem,this-m_name); m_list.SetItemText(nItem,1,this-m_sex); m_list.SetItemText(nItem,2,this-m_classname); m_list.SetItemText(nItem,3,str3); m_list.SetItemText(nItem,4,str4);m_list.SetItemText(nItem,5,str5);m_list.SetItemText(nItem,6,str6); m_list.SetItemText(nItem,7,str7); /m_list.SetItemText(
24、nItem,8,str8);void frmNew:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here*pResult = 0;void frmNew:OnButton5() information obj;this-OnCancel();/关闭当前窗口obj.DoModal();void frmNew:OnButton6() int findFlag=0;struct stuInfostu; this-UpdateData(true); st
25、rcpy(stu.name,m_name); stu.ID=m_ID; strcpy(stu.classname,m_classname); strcpy(stu.sex,m_sex); stu.math=m_math; stu.English=m_English; puter=m_computer; ofstream os(data.txt,ios:app); os.write(char *)&stu,sizeof(stu); os.close(); this-MessageBox(保存成功!); UpdateData(FALSE);5.3 cjcx类成绩查询界面的代码实现/ check.c
26、pp : implementation file/#include stdafx.h#include test2.h#include check.h#includeinformation.h#includefstream.h#includefst.h#includefrmNew.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ check dialogcheck:check(CWnd* pParent /*=NULL*/): CDialog(check:IDD, p
27、Parent)/AFX_DATA_INIT(check)m_name = _T();m_ID = 0.0f;m_classname = _T();m_score = 0.0f;m_sex = _T();/AFX_DATA_INITvoid check:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(check)DDX_Text(pDX, IDC_EDIT1, m_name);DDX_Text(pDX, IDC_EDIT2, m_ID);DDX_Text(pDX, IDC_EDIT3, m_c
28、lassname);DDX_Text(pDX, IDC_EDIT4, m_score);DDX_Text(pDX, IDC_EDIT6, m_sex);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(check, CDialog)/AFX_MSG_MAP(check)ON_BN_CLICKED(IDC_BUTTON5, OnButton5)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)ON_EN_CHANGE(IDC_EDIT3, OnChangeEdit3)ON_BN_CLICKED(IDC_BUTTON6, OnButton6)/AFX_MSG_M
29、APEND_MESSAGE_MAP()/ check message handlersvoid check:OnButton5() information obj;this-OnCancel();/关闭当前窗口obj.DoModal();void check:OnButton4() int findFlag=0;struct stuInfostu; this-UpdateData(true); strcpy(stu.name,m_name); stu.ID=m_ID; strcpy(stu.classname,m_classname); strcpy(stu.sex,m_sex); /stu.
30、score=m_score; ofstream os(data.txt,ios:app); os.write(char *)&stu,sizeof(stu); os.close(); if (m_name=) findFlag=1; this- MessageBox(姓名空白!); if (m_ID=0) findFlag=1; this-MessageBox(学号空白!); if (m_classname=) findFlag=1; this- MessageBox(班级空白!); if (m_sex=) findFlag=1; this-MessageBox(性别空白!); if (m_s
31、core=0) findFlag=1; this-MessageBox(成绩空白!); if (findFlag=0) this-MessageBox(保存成功!); UpdateData(FALSE); void check:OnChangeEdit3() / TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CDialog:OnInitDialog()/ function and call CRichEditCtrl().SetE
32、ventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your control notification handler code herevoid check:OnButton6() frmNew obj;this-OnCancel();/关闭当前窗口obj.DoModal();5.4 alter类资料修改界面的代码实现/ alter.cpp : implementation file/#include stdafx.h#include test2.h#include alter.h#includefstrea
33、m.h#includeinformation.h#includefst.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ alter dialogalter:alter(CWnd* pParent /*=NULL*/): CDialog(alter:IDD, pParent)/AFX_DATA_INIT(alter)m_name1 = _T();m_ID1 = 0.0f;m_sex1 = _T();m_classname1 = _T();m_math1 = 0.0f
34、;m_English1 = 0.0f;m_computer1 = 0.0f;/AFX_DATA_INITvoid alter:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(alter)DDX_Text(pDX, IDC_EDIT1, m_name1);DDX_Text(pDX, IDC_EDIT2, m_ID1);DDX_Text(pDX, IDC_EDIT4, m_sex1);DDX_Text(pDX, IDC_EDIT5, m_classname1);DDX_Text(pDX, IDC
35、_EDIT3, m_math1);DDX_Text(pDX, IDC_EDIT9, m_English1);DDX_Text(pDX, IDC_EDIT10, m_computer1);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(alter, CDialog)/AFX_MSG_MAP(alter)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)/AFX_MSG_MAPEND_MESSAGE_MAP()/ alter message handlersvoid alter:OnBu
36、tton2() unsigned long position = NULL;int findFlag=0; this-UpdateData(true);struct stuInfo stu; ifstream is(data.txt);while(is.eof()=0)position = is.tellg();is.read(char *)&stu,sizeof(stu);CString sName; sName.Format(%s,stu.name); if(sName=this-m_name1) findFlag=1;break; is.close();if(findFlag=0) this-MessageBox(此姓名数据不存在!); return; ofstream os(data.txt, ios:ate);os.seekp(position);strcpy(stu.name,m_name1);stu.ID=m_ID1;strcpy(stu.classname,m_classname1);strcpy(stu.sex,m_sex1);stu.math=m_math1;stu.English=m_English1;puter=m_computer1;os.write(char *)&stu,