当前位置:文档之家› 学生成绩管理系统(详细操作过程)精讲

学生成绩管理系统(详细操作过程)精讲

学生成绩管理系统(详细操作过程)精讲
学生成绩管理系统(详细操作过程)精讲

学生成绩管理系统

我将把我的实现步骤完整的写出来,我是在VC 6.0版本下用MFC实现的。

我创建的基于单文档的应用程序,过程不介绍,大家都会。下面的是我系统菜单:

思路:

刚进入系统时,只有“登录”菜单可用,其他三个菜单项都是灰色不可用的。当用户点“进入系统”菜单项时,用户输入用户名、密码和用户类型,系统将根据相应的用户权限使相应的菜单可用,并且“进入系统”菜单项变为不可用。如:如果用户类型是学生,那么只有学生权限菜单可用,而“教师权限”和“管理员权限”都不可用,同时“进入系统”变为不可用。

“学生权限”下只有“查询成绩”,因为学生只可以查询自己相应的成绩;“教师权限”下有“查询学生成绩”和“增改删学生成绩”两个菜单项,因为教师除了可以查询学生成绩还可以增加、修改和删除学生成绩;“管理员权限”下有“管理学生”和“管理教师”两个菜单项。

整体设计:

因为我们要设置系统菜单的状态,所以必须在CMainFrame中添加相应的函数和代码,具体步骤如下:

【步骤1】由于系统要使用ODBC类操作数据库,所以需要在stdafx.h中加入代码:

#include

【步骤2】在CMainFrame中的OnCreat()中添加代码如下,实现菜单的初始化工作,当用户没进入系统之前,只有“登陆”菜单下的“进入系统”菜单项可用,而“退出系统”和其他3个权限菜单都不可用,即都是灰色的。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

//使“退出系统”和其他3个权限菜单都不可用,即都是灰色的

GetMenu()->GetSubMenu(0)-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);

GetMenu()-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);

GetMenu()-> EnableMenuItem(2,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);

GetMenu()-> EnableMenuItem(3,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);

}

【步骤3】在CMainFrame中添加自己定义的函数void SetMenuSta(int type),此函数在登陆对话框的OnOK()中被调用,即当用户进入系统后使“进入系统”

菜单项不可用,并根据用户类型使相应菜单可用。当类型为1时(学生),使“学生权限”菜单可用;当类型为2时(教师),使“教师权限”菜单可用;当类型为3时,使“管理员”菜单可用。

void CMainFrame::SetMenuSta(int type)

{

AfxGetMainWnd()->GetMenu()->GetSubMenu(0)->EnableMenuItem(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);

if(type==1)

{

AfxGetMainWnd()->GetMenu()->EnableMenuItem(1,MF_BYPOSI

TION | MF_ENABLED);

//在上面的OnCreate中可以直接通过GetMenu()对菜单操作,

//但这里却必须先通过AfxGetMainWnd()获得主窗体指针,

//浪费了我一晚上时间,虽然解决了,但还不知道为什么。

}

if(type==2)

{

AfxGetMainWnd()->GetMenu()->EnableMenuItem(2,MF_BYPOSIT

ION | MF_ENABLED);

}

if(type==3)

{

AfxGetMainWnd()->GetMenu()->EnableMenuItem(3,MF_BYPOSIT

ION | MF_ENABLED);

}

}

【步骤4】通过上面两步并不能按我们的想法实现菜单变灰的操作,运行系统各菜单都是可用的,我们必须在CMainFrame的构造函数中添加下面一句代码:m_bAutoMenuEnable=FALSE;

m_bAutoMenuEnable必须放在CMainFrame()里初始化,不可用放在登陆对话框的OnOK()函数中,要不其他三个菜单可用变灰,但“进入系统”菜单项却总是不能变灰。

数据库设计:

根据以上思路,我们使用SQL数据库建立一个“学生成绩管理系统”,其下有4张表,分别为用户表USERS、学生成绩表COURSE_SCORE、学生信息表STUDENT_INFO和教师信息表TEACHER_INFO。

表1 用户表USERS

字段名类型长度说明

USER_ID char 20 用户名

USER_PASSWORD char 20 密码

USER_TYPE int 4 1为学生,2为教师,3为管理员

表2 学生成绩表COURSE_SCORE

字段名类型长度说明

STU_ID char 10 学生ID,系统中学生的唯一标识COURSE_ID char 10 课程号,系统中课程的唯一标识COURSE_NAME char 10 课程名

SCORE int 4 课程分数

表3 学生信息表STUDENT_INFO

字段名类型长度说明

STU_ID char 10 学生ID,系统中学生的唯一标识STU_NAME char 10 学生姓名

ENROLLMENT_TIME datetime 8 入学时间

DEPARTMENT char 20 所在学院

MAJOR char 20 所在专业

SEX int 4 性别:0表示男,1表示女BIRTHDAY datetime 8 生日

HOMETOWN varchar 50 籍贯

ADDRESS varchar 50 现在住址

PHONE char 20 个人电话号码

RACE char 10 民族

PARTY int 4 政治面貌:0表示党员,1表示预

备党员,2表示团员,3表示其他DIRECTION varchar 50 其他信息

具体实现步骤:

(一)登陆模块设计

1、当刚进入系统时候,用户点击“进入系统”菜单项后系统界面如下:

示:

从上图中也可以看出,我们为该登陆对话框建立了个新类:CLoginDlg,它的具体创建过程就不介绍了。

2、因为登陆对话框要使用SQL数据库中的USERS表,所以需要在程序中添加类CLoginSet,步骤如下:

【步骤1】在项目名“学生成绩管理系统”上单击鼠标右键,在弹出的New

Class对话框中的Name文本框中输入CLoginSet,在Base class下拉文本框中选择CRecordset。

【步骤2】单击OK按钮,弹出Database Option对话框,在ODBC下拉文

本框中选择“学生成绩管理系统”数据库,单击OK按钮,弹出Select Database

Tables对话框,选择https://www.doczj.com/doc/d010745871.html,ERS选项,单击OK按钮。这样就建立了一个CRecordset的对象,就可以对数据库中的USERS表进行操作了。

3、在LoginDlg.cpp中引入头文件LoginSet.h,将CRecordSet对象CLoginSet 引入登陆对话框:

#include “LoginSet.h”

4、声明全局变量。在学生成绩管理系统.cpp文件中添加如下代码:

// CDatabase型变量,用于连接数据库

CDatabase m_database;

//学生登陆后在系统中的唯一ID值

CString m_ID;

在LoginDlg.cpp添加如下语句,使用已经声明过的全局变量(记得在以后的每个模块中都要添加):

extern CDatabase m_database;

extern CString m_ID;

5、为登陆对话框的“确定”按钮添加消息代码,如下:

void CLoginDlg::OnOK()

{

BOOL bLogin=FALSE;

CLoginSet *m_recordset=new CLoginSet(&m_database);

CString strSQL;

UpdateData(TRUE);

if(m_https://www.doczj.com/doc/d010745871.html,pare("学生")==0)

type=1;

else

if(m_https://www.doczj.com/doc/d010745871.html,pare("教师")==0)

type=2;

else

if(m_https://www.doczj.com/doc/d010745871.html,pare("管理员")==0)

type=3;

strSQL.Format("select * from USERS where USER_ID='%s' AND USER_PASSWORD='%s' AND USER_TYPE='%d'",

m_useID,m_usepassword,type);

m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);

if(m_recordset->GetRecordCount()==0)

{

if(count<3)

{

MessageBox("用户名或密码不正确!");

m_useID="";

m_usepassword="";

U pdateData(FALSE); //没有这条语句就不能实现使账号和密

码文本框为空,很多人会忘记写这条语句。

count++;

}

else

{

MessageBox("错误次数达三次以上,本窗口即将关闭!");

EndDialog(IDCANCEL);

}

}

else

{

m_recordset->GetFieldValue("USER_ID",m_ID);

bLogin=TRUE;

}

if(bLogin)

{

MessageBox("欢迎进入学生成绩管理系统!");

EndDialog(IDOK);

CMainFrame *mainfrm=new CMainFrame();

mainfrm->SetMenuSta(type);

}

else

m_database.Close();

// CDialog::OnOK();

}

6、为登陆菜单下的“进入系统”添加响应函数,此函数是在CMainFrame 类中添加的,代码如下:

void CMainFrame::OnLogin()

{

// TODO: Add your command handler code here

CLoginDlg login;

login.DoModal();

}

(二)学生成绩查询模块设计

1、如果用户类型是1,即学生时,用户可以查询自己的成绩。

在其中用户可以根据课程号或者课程名查询自己的成绩。按上面的学生成绩查询对话框摆放好控件,其中各个控件ID及对应变量如下图所示:

从上图中也可以看出,我们为该学生成绩查询对话框建立了个新类:CStuCheckScoreDlg,它的具体创建过程就不介绍了。

2、因为学生成绩查询对话框要使用SQL数据库中的COURSE_SCORE表,所以

需要在程序中添加类CCourseScoreSet,步骤如下:

【步骤1】在项目名“学生成绩管理系统”上单击鼠标右键,在弹出的New Class对话框中的Name文本框中输入CCourseScoreSet,在Base class下拉文本框中选择CRecordset。

【步骤2】单击OK按钮,弹出Database Option对话框,在ODBC下拉文本框中选择“学生成绩管理系统”数据库,单击OK按钮,弹出Select Database Tables对话框,选择dbo. COURSE_SCORE选项,单击OK按钮。这样就建立了一个CRecordset的对象,就可以对数据库中的COURSE_SCORE表进行操作了。

3、在StuCheckScoreDlg.cpp中引入头文件CourseScoreSet.h,将CRecordSet对象CCourseScoreSet引入登陆对话框:

#include “CourseScoreSet.h”

4、在StuCheckScoreDlg.cpp添加如下语句,使用已经声明过的全局变量(记得在以后的每个模块中都要添加):

extern CDatabase m_database;

extern CString m_ID;

5、为学生成绩查询模块的“查询”按钮添加响应事件:

void CStuCheckScoreDlg::OnCheckButton()

{

CString strSQL;

CDBVariant varValue;

UpdateData(TRUE);

if(m_https://www.doczj.com/doc/d010745871.html,pare("课程号")==0)

strSQL.Format("select * from COURSE_SCORE where COURSE_ID='%s'",m_cost);

else

strSQL.Format("select * from COURSE_SCORE where COURSE_NAME='%s'",m_cost);

CCourseScoreSet *m_recordset=new CCourseScoreSet(&m_database);

m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);

if(m_recordset->GetRecordCount()==0)

{

MessageBox("对不起,没有您所需要的结果,请核对后重新输入!");

}

else

{

int temp=0;

m_stuID=m_recordset->m_STU_ID;

m_courseID=m_recordset->m_COURSE_ID;

m_coursename=m_recordset->m_COURSE_NAME;

m_score=m_recordset->m_SCORE;

}

m_recordset->Close();

UpdateData(FALSE);

}

注意:在上面我们对对话框中各个文本框对应的变量进行赋值时,并不是使用m_recordset->GetFieldValue(3,varValue);

m_coursename=varValue.m_pstring->GetBuffer(1);

不用这么麻烦的写法,直接用m_recordset中的变量就行了,m_recordset中的变量对应这数据库表中的各个字段,且和表中字段类型都一致。

(三)教师操作学生成绩信息模块设计

1、如果用户类型是2,即教师时,用户可以查询学生的成绩,还可以对学生成绩进行增、改、删操作。查询学生成绩和上个模块差不多,就不做了。而对学生成绩的增、改、删操作就是通过这个模板实现的。界面如下:

在其中的列表控件中显示COURSE_SCORE中所有的信息,并且当用户点击其中一行时,可以在上面的文本框中进行显示。按上面的对话框摆放好控件,其中各个控件ID及对应变量如下图所示:

从上图中也可以看出,我们为该教师操作学生成绩对话框建立了个新类:COperateScore,它的具体创建过程就不介绍了。

2、因为教师操作学生成绩对话框也要使用SQL数据库中的COURSE_SCORE 表,所以需要在OperateScore.cpp中引入在前面创建的COURSE_SCORE表所对应的记录集对象的头文件CourseScoreSet.h,将CRecordSet对象CCourseScoreSet 引入登陆对话框:

#include “CourseScoreSet.h”

3、在OperateScore.cpp添加如下语句,使用已经声明过的全局变量(记得在以后的每个模块中都要添加):

extern CDatabase m_database;

extern CString m_ID;

4、因为该对话框中含有列表控件,我们需要对其进行初始化,让列表控件一开始就显示COURSE_SCORE表中的所有记录,并且把列表控件中的第一条记录显示在上面的文本框中。

【步骤1】右键点击COperateScore,在弹出的菜单中选择“Add windows message handle”项,然后在弹出的对话框的“新建windows消息/事件”中选择“WM_INITDIALOG”,然后点击“Add Handle”按钮,最后点击“Edit Existing”按钮,编写代码如下:

BOOL COperateScore::OnInitDialog()

{

CDialog::OnInitDialog();

m_listscore.InsertColumn(0,"学号");

m_listscore.InsertColumn(1,"课程号");

m_listscore.InsertColumn(2,"课程名");

m_listscore.InsertColumn(3,"成绩");

RECT rect;

m_listscore.GetWindowRect(&rect);

int width=rect.right-rect.left;

m_listscore.SetColumnWidth(0,width/4);

m_listscore.SetColumnWidth(1,width/4);

m_listscore.SetColumnWidth(2,width/4);

m_listscore.SetColumnWidth(3,width/4);

m_listscore.SetExtendedStyle(LVS_EX_FULLROWSELECT);

initial();

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE

}

【步骤2】在上面的OnInitDialog()函数中我们设置了列表控件的表头和每列的间距,并在最后调用了initial()函数。initial()是我自定义的一个函数,用来将COURSE_SCORE表中的数据全部在该列表控件中显示出来。该函数是自定义函数,添加过程比较简单,不介绍。代码如下:

void COperateScore::initial()

{

m_listscore.DeleteAllItems();

CDBVariant varValue[20][4];

CCourseScoreSet m_recordset;

int j=m_recordset.GetDatebase(varValue);

int k;

int i=0;

char buf[20];

for(k=0;k

{

////用来处理数据表中的字符型字段

m_listscore.InsertItem(i,varValue[k][0].m_pstring->GetBuffer(1));

m_listscore.SetItemText(i,1,varValue[k][1].m_pstring->GetBuffer(1));

m_listscore.SetItemText(i,2,varValue[k][2].m_pstring->GetBuffer(1));

//用来处理数据表中的整型字段

sprintf(buf,"%d",varValue[k][3].m_iVal);

m_listscore.SetItemText(i,3,buf);

}

i=0;

settext(0);

}

varValue[20][4]是CDBVariant型的,该类型的变量可以用来存储数据表中任意类型的字段,所在在数据库操作时用该变量比较方便。变量j表示COURSE_SCORE 数据表中的行数,通过for循环把该数据表中的所有记录全部显示出来。数据表中的前3个字段我都是用varValue[k][0].m_pstring->GetBuffer(1)来显示在列表控件中,是因为数据表中前3个字段都是字符型的,而最后一个字段是用来显示分数的,该字段在数据表中我定义为了整型,所有用sprintf(buf,"%d",varValue[k][3].m_iVal); m_listscore.SetItemText(i,3,buf);来显示。

【步骤3】在上面的initial()函数中我调用了GetDatebase(varValue)函数,该函数返回COURSE_SCORE数据表中的记录条数,我们将其赋给了j。并且该函数把COURSE_SCORE表中所有记录都存储在二维数组varValue中。在前面两个模块中我对数据库操作都是直接在该模块中操作的,但现在我要换种方法。我把对数据库的操作封装在了记录集类CCourseScoreSet中,这样避免混乱。在记录集类CCourseScoreSet中添加GetDatebase(varValue)函数,注意:因为我们要在类COperateScore调用该函数,所有我们必须要把该函数定义为public型。其代码如下:

int CCourseScoreSet::GetDatebase(CDBVariant varValue[][4])

{

CCourseScoreSet m_recordset(&m_database);

CString strSQL;

strSQL.Format("select *from COURSE_SCORE");

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);

if(m_recordset.GetRecordCount()!=0)

m_recordset.MoveFirst();

int j=0;

while(!m_recordset.IsEOF())

{

for(int i=0;i<4;i++)

{

m_recordset.GetFieldValue(i,varValue[j][i]);

}

j++;

m_recordset.MoveNext();

}

m_recordset.Close();

return j;

}

【步骤4】在步骤2的initial()函数最后我们调用了settext(int index)函数,该函数也是一个自定义函数,用来将列表控件中的指定索引的记录显示在上面的文本框中。自定义函数的添加方法不做介绍,代码如下:

void COperateScore::settext(int index)

{

m_stuID=m_listscore.GetItemText(index,0);

m_courseID=m_listscore.GetItemText(index,1);

m_coursename=m_listscore.GetItemText(index,2);

m_score=m_listscore.GetItemText(index,3);

UpdateData(FALSE);

}

【步骤5】因为我还需要实现:当点击列表控件中的一行时,对应的记录能够显示在上面的文本框中,所以还需要为列表控件添加单击事件。添加方法如下:首先:

切换都ResourceView,在Dialog下双击IDD_OPERATE_SCORE_DIALOG,在该对话框中选中列表控件,右击,选择“建立类向导”。

然后:

在弹出的MFC ClassWizard对话框中的“Object IDs”下选择列表控件的ID:ID_LIST_SCORE,在“Messages”下选择“NM_CLICK”,单击“Add Function”按钮,最后单击“Edit Code”按钮,添加代码如下:

void COperateScore::OnClickListScore(NMHDR* pNMHDR, LRESULT* pResult) {

// TODO: Add your control notification handler code here

int i=m_listscore.GetSelectionMark();

settext(i);

*pResult = 0;

}

至此,对该模块的初始化工作全部完成,接下来对该模块中的4个按钮分别添加消息响应函数。

5、为该模块中的“录入成绩”按钮添加消息响应函数,双击该按钮,添加代码如下:

void COperateScore::OnInputScoreButton()

{

// TODO: Add your control notification handler code here

CCourseScoreSet *m_recordset=new CCourseScoreSet(&m_database);

CString strSQL;

UpdateData(TRUE);

int m_int_score;

m_int_score = atoi(m_score);

strSQL.Format("insert into COURSE_SCORE(STU_ID,

COURSE_ID,COURSE_NAME,SCORE) values('%s','%s','%s','%d') ",

m_stuID,m_courseID,m_coursename,m_int_score);

m_database.ExecuteSQL(strSQL);

initial();

MessageBox("录入成绩成功!");

}

函数中的int m_int_score; m_int_score = atoi(m_score);两条语句是将m_score转换为int型,因为m_score是与文本框“成绩”相关联的变量,我将其定义为了字

符型,但SQL数据表中成绩字段是int型,所以必须先进行转化。调用initial()函数是将插入操作完成,数据表中记录发生更新后的记录重新在列表控件中显示出来,实现一种动态的效果。

6、为“修改成绩”按钮添加消息响应函数,双击该按钮,添加代码如下:

void COperateScore::OnModifyScoreButton()

{

// TODO: Add your control notification handler code here

CCourseScoreSet *m_recordset=new CCourseScoreSet(&m_database);

CString strSQL;

UpdateData(TRUE);

int m_int_score;

m_int_score = atoi(m_score);

strSQL.Format(" update COURSE_SCORE set SCORE='%d' whereSTU_ID='%s' and COURSE_ID='%s' ",m_int_score,m_stuID,m_courseID);

m_database.ExecuteSQL(strSQL);

initial();

MessageBox("修改成绩成功!");

}

7、为“删除成绩”按钮添加消息响应函数,双击该按钮,添加代码如下:

void COperateScore::OnDeleteScoreButton()

{

// TODO: Add your control notification handler code here

CCourseScoreSet *m_recordset=new CCourseScoreSet(&m_database);

CString strSQL;

UpdateData(TRUE);

strSQL.Format(" delete from COURSE_SCORE where STU_ID='%s' and COURSE_ID='%s' ",m_stuID,m_courseID);

m_database.ExecuteSQL(strSQL);

initial();

MessageBox("删除成绩成功!");

}

8、为“取消”按钮添加消息响应函数,双击该按钮,添加代码如下:

void COperateScore::OnCancelButton()

{

// TODO: Add your control notification handler code here

EndDialog(IDCANCEL);

}

(四)学生信息管理模块设计

1、如果用户类型是3,即管理员时,管理员可以对学生的信息进行管理,也可以对教师的信息进行管理。对教师的信息进行管理模块和对学生的信息进行管理

模块差不多,就不做了。而对学生信息进行管理包括对学生信息的查询和增改删操作,界面如下所示:

在其中的列表控件中显示STUDENT_INFO表中所有的信息,并且当用户点击其中一行时,可以在上面的文本框中进行显示。对于查询操作,管理员可以根据姓名进行查询,也可以根据学号进行查询。按上面的对话框摆放好控件,其中各个控件ID及对应变量如下图所示:

由于对话框中控件太多,还有几个变量如下:

重复了几个变量,大家见谅,本来只想把那剩下的几个变量截图给大家看看的,可以截下来后粘贴不上,只好又整体截图了。

从上图中也可以看出,我们为该对话框建立了个新类:CManageStuDlg,它的具体创建过程就不介绍了。

2、因为学生信息管理对话框要使用SQL数据库中的STUDENT_INFO表,所以需要在程序中添加类CStudentInfoSet,步骤如下:

【步骤1】在项目名“学生成绩管理系统”上单击鼠标右键,在弹出的New Class对话框中的Name文本框中输入CStudentInfoSet,在Base class下拉文本框中选择CRecordset。

【步骤2】单击OK按钮,弹出Database Option对话框,在ODBC下拉文本框中选择“学生成绩管理系统”数据库,单击OK按钮,弹出Select Database Tables对话框,选择dbo. STUDENT_INFO选项,单击OK按钮。这样就建立了一个CRecordset的对象,就可以对数据库中的STUDENT_INFO表进行操作了。

3、在ManageStuDlg.cpp中引入在前面创建的STUDENT_INFO表所对应的记录集对象的头文件StudentInfoSet.h,将CRecordSet对象CStudentInfoSet引入登陆对话框:

#include “StudentInfoSet.h”

4、在ManageStuDlg.cpp添加如下语句,使用已经声明过的全局变量(记得在以后的每个模块中都要添加):

extern CDatabase m_database;

extern CString m_ID;

5、因为该对话框中含有列表控件,我们需要对其进行初始化,让列表控件一开始就显示STUDENT_INFO表中的所有记录,并且把列表控件中的第一条记录显示在上面的文本框中。

【步骤1】右键点击CManageStuDlg,在弹出的菜单中选择“Add windows message handle”项,然后在弹出的对话框的“新建windows消息/事件”中选择“WM_INITDIALOG”,然后点击“Add Handle”按钮,最后点击“Edit Existing”按钮,编写代码如下:

BOOL CManageStuDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

m_student_list.InsertColumn(0,"学号");

m_student_list.InsertColumn(1,"姓名");

m_student_list.InsertColumn(2,"入学时间");

m_student_list.InsertColumn(3,"所在学院");

m_student_list.InsertColumn(4,"专业");

m_student_list.InsertColumn(5,"性别");

m_student_list.InsertColumn(6,"出生日期");

m_student_list.InsertColumn(7,"籍贯");

m_student_list.InsertColumn(8,"现在住址");

m_student_list.InsertColumn(9,"电话号码");

m_student_list.InsertColumn(10,"民族");

m_student_list.InsertColumn(11,"政治面貌");

m_student_list.InsertColumn(12,"其他");

RECT rect;

m_student_list.GetWindowRect(&rect);

int width=rect.right-rect.left;

m_student_list.SetColumnWidth(0,width/7);

m_student_list.SetColumnWidth(1,width/7);

m_student_list.SetColumnWidth(2,width/7);

m_student_list.SetColumnWidth(3,width/7);

m_student_list.SetColumnWidth(4,width/7);

m_student_list.SetColumnWidth(5,width/7);

m_student_list.SetColumnWidth(6,width/7);

m_student_list.SetColumnWidth(7,width/7);

m_student_list.SetColumnWidth(8,width/7);

m_student_list.SetColumnWidth(9,width/7);

m_student_list.SetColumnWidth(10,width/7);

m_student_list.SetColumnWidth(11,width/7);

m_student_list.SetColumnWidth(12,width/7);

m_student_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);

initial();

settext(0);

return TRUE;

}

【步骤2】在上面的OnInitDialog()函数中我们设置了列表控件的表头和每列的间距,并在最后调用了initial()函数。initial()是我自定义的一个函数,用来将STUDENT_INFO表中的数据全部在该列表控件中显示出来。而settext(0)是将列表控件的第一条记录显示在上面对应的文本框中。initial()该函数是自定义函数,添加过程比较简单,不介绍。代码如下:

void CManageStuDlg::initial()

{

m_student_list.DeleteAllItems();

CDBVariant varValue[20][13];

CStudentInfoSet m_recordset;

int j=m_recordset.GetDatebase(varValue);

int k;

int i=0;

char buf[20];

for(k=0;k

{

m_student_list.InsertItem(i,varValue[k][0].m_pstring->GetBuffer(1));

m_student_list.SetItemText(i,1,varValue[k][1].m_pstring->GetBuffer(1));

//对数据表中的datatime型数据进行操作

sprintf(buf,"%d-%d-%d",varValue[k][2].m_pdate->year,varValue[k][2].m_pd

ate- >month,varValue[k][2].m_pdate->day);

m_student_list.SetItemText(i,2,buf);

m_student_list.SetItemText(i,3,varValue[k][3].m_pstring->GetBuffer(1));

m_student_list.SetItemText(i,4,varValue[k][4].m_pstring->GetBuffer(1));

//对数据表中int型数据进行操作

sprintf(buf,"%d",varValue[k][5].m_iVal);

m_student_list.SetItemText(i,5,buf);

//对数据表中的datatime型数据进行操作

sprintf(buf,"%d-%d-%d",varValue[k][6].m_pdate->year,varValue[k][6].m_pd

ate->month,varValue[k][6].m_pdate->day);

m_student_list.SetItemText(i,6,buf);

m_student_list.SetItemText(i,7,varValue[k][7].m_pstring->GetBuffer(1));

m_student_list.SetItemText(i,8,varValue[k][8].m_pstring->GetBuffer(1));

m_student_list.SetItemText(i,9,varValue[k][9].m_pstring->GetBuffer(1));

m_student_list.SetItemText(i,10,varValue[k][10].m_pstring->GetBuffer(1));

//对数据表中int型数据进行操作

sprintf(buf,"%d",varValue[k][11].m_iVal);

m_student_list.SetItemText(i,11,buf);

m_student_list.SetItemText(i,12,varValue[k][12].m_pstring->GetBuffer(1));

}

i=0;

}

变量j表示STUDENT_INFO数据表中的行数,通过for循环把该数据表中的所有记录全部显示出来。

【步骤3】在上面的initial()函数中我调用了GetDatebase(varValue)函数,该函数返回STUDENT_INFO数据表中的记录条数,我们将其赋给了j。并且该函数把STUDENT_INFO表中所有记录都存储在二维数组varValue中。我把对数据库的操作封装在了记录集类CStudentInfoSet中,这样避免混乱。在记录集类CStudentInfoSet中添加GetDatebase(varValue)函数,注意:因为我们要在类CManageStuDlg调用该函数,所有我们必须要把该函数定义为public型。其代码如下:

int CStudentInfoSet::GetDatebase(CDBVariant varValue[][13])

{

CStudentInfoSet m_recordset(&m_database);

CString strSQL;

strSQL.Format("select * from STUDENT_INFO");

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);

if(m_recordset.GetRecordCount()!=0)

m_recordset.MoveFirst();

int j=0;

while(!m_recordset.IsEOF())

{

for(int i=0;i<13;i++)

{

m_recordset.GetFieldValue(i,varValue[j][i]);

}

j++;

m_recordset.MoveNext();

}

m_recordset.Close();

return j;

}

【步骤4】在步骤2的initial()函数最后我们调用了settext(int index)函数,该函数也是一个自定义函数,用来将列表控件中的指定索引的记录显示在上面的文本框中。自定义函数的添加方法不做介绍,代码如下:

void CManageStuDlg::settext(int index)

{

m_ID=m_student_list.GetItemText(index,0);

m_name=m_student_list.GetItemText(index,1);

m_enrollment_time=m_student_list.GetItemText(index,2);

m_department=m_student_list.GetItemText(index,3);

m_major=m_student_list.GetItemText(index,4);

int selected1=atoi(m_student_list.GetItemText(index,5));

m_c_sex.SetCurSel(selected1);

m_birthday=m_student_list.GetItemText(index,6);

m_hometown=m_student_list.GetItemText(index,7);

m_address=m_student_list.GetItemText(index,8);

m_phone=m_student_list.GetItemText(index,9);

m_race=m_student_list.GetItemText(index,10);

int selected2=atoi(m_student_list.GetItemText(index,11));

m_c_party.SetCurSel(selected2);

m_direction=m_student_list.GetItemText(index,12);

UpdateData(FALSE);

}

其实上面的所有变量都应该设置成CString型,要不通过GetItemText不好赋值,例如我之前把m_enrollment_time和m_birthday都设置成了COleDataTime 型,结果半天没解决赋值问题。但我下面的m_c_sex和m_c_party都是控件型,其实是自己找麻烦。

【步骤5】因为我还需要实现:当点击列表控件中的一行时,对应的记录能够显示在上面的文本框中,所以还需要为列表控件添加单击事件。添加方法如下:首先:

切换都ResourceView,在Dialog下双击IDD_MANAGE_STU_DIALOG,在该对话框中选中列表控件,右击,选择“建立类向导”。

然后:

在弹出的MFC ClassWizard对话框中的“Object IDs”下选择列表控件的ID:IDC_LIST_STUDENT,在“Messages”下选择“NM_CLICK”,单击“Add Function”按钮,最后单击“Edit Code”按钮,添加代码如下:

学生成绩管理系统需求分析说明书

学生成绩管理系统 第一章引言 (1) 1.1 目的: (1) 1.2 背景 (1) 1.3 定义 (2) 1.4 参考资料 (2) 第二章任务概述 (2) 2.1 目标 (2) 2.2 运行环境 (2) 第三章数据描述 (2) 3.1 静态数据 (3) 3.2 动态数据 (3) 3.3 数据库描述 (3) 3.4 数据字典 (4) 3.5 数据采集 (4) 第四章功能需求 (5) 4.1 功能划分 (5) 4.2 功能简述 (5) 第五章性能需求 (5) 5.1 数据精确度 (5) 5.2 时间特性 (5) 5.3 适应性 (5) 第六章运行需求 (5) 6.1用户界面 (5) 6.2硬件接口 (5) 6.3软件接口 (5) 6.4故障处理 (5) 第七章其他需求 (6) 第一章引言 1.1 目的: 运用软件对学生的成绩进行管理,科学而有效,不仅可以减少教师的工作量,方便学校对于所有学生的成绩进行系统的管理,而且便于学生适时的查询自己的成绩。一款优秀的学生成绩管理软件,正好可以满足当前的市场需求,取得一定的经济效益。本软件就是针对此种情况和客户需求而开发。本说明书明确了客户的各项需求,为程序开发人员明确了所开发软件应具有的功能和注意事项。 1.2 背景 ?开发软件名称:学生成绩管理系统。 ?项目开发者:山东艾仪嘉软件技术有限公司开发小组: 张钊锋(组长),杨廷婷,黄婷,林德伟,屠伟,张旭松,张杰

?用户单位: 1.3 定义 VB 是Visual Basic的简写,是可视化的编程语言。是一种简单、高效地开发应用软件的工具。 SQL (Structured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 数据流图简称DFD,就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。 E-R图(Entire and Relation)为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。 数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。 静态数据系统内部有关的数据结构和操作规程。 动态数据程序运行时输入和输出的数据。 数据采集又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。 1.4 参考资料 文档引用的规范: 《软件工程导论》张海藩主编清华大学出版社2005年8月出版 《软件生命周期质量保证与测试》张向宏主编电子工业出版社2009年5月出版技术资料参考: 《数据库原理与应用案例教程》郑玲利主编清华大学出版社2008年9月出版 《Visual Basic完全自学手册》俞磊等编著机械工业出版社2009年1月出版 第二章任务概述 2.1 目标 使点菜信息更加系统化,信息更加精确化。使管理人员管理更加方便,能够改动部分信息,最大化的满足客户的需求。系统能自动保存信息,给查找数据留下依据。 2.2 运行环境 硬件环境:计算机(含键盘、鼠标等),打印机等外围设备。 软件环境: 建议配置:操作系统windows 2000/XP/Vista CPU PentiumⅣ以上 内存128M以上 硬盘空间100M以上 第三章数据描述

学生成绩管理系统设计说明书

设计说明 一.本程序的设计思路与体系简述: (1)设计思路: Ⅰ.设计程序预期功能;Ⅱ.确定程序语言与运行环境;Ⅲ.设计程序的整体结构;Ⅳ.用模块化的理念对各个小的功能进行编写并进行初期调试;Ⅴ.将各个小的模块集合成整体,形成真正的功能全面的程序;Ⅵ.对程序进行总的调试修改;Ⅶ.后期完善,修复bug等,以及对新功能的引入,外包处理,最终完成整个程序的设计。 (2)本程序的体系: 二.相关代码 (1)初始化窗口代码: #pragma once #include"StuMan.h" namespace StudentManagement { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; ///

/// Form1 摘要 /// /// 警告: 如果更改此类的名称,则需要更改 /// 与此类所依赖的所有 .resx 文件关联的托管资源编译器工具的 /// “资源文件名”属性。否则, /// 设计器将不能与此窗体的关联

/// 本地化资源正确交互。 ///

public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: 在此处添加构造函数代码 // } protected: /// /// 清理所有正在使用的资源。 /// ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::Button^ button1; protected: private: System::Windows::Forms::ListView^ listView1; private: System::Windows::Forms::Label^ label1; private: /// /// 必需的设计器变量。 /// System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 /// void InitializeComponent(void) { System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid)); this->button1 = (gcnew System::Windows::Forms::Button()); this->listView1 = (gcnew System::Windows::Forms::ListView()); this->label1 = (gcnew System::Windows::Forms::Label());

学生成绩管理系统测试用例

大连东软信息学院项目文档 学生成绩管理系统测试用例 测试用例 教师服务子系统测试用例测试负责人:王哲一级模块模块名称教师服务系统 二级模块模块名称插入成绩 用例描述用例起始于教师要插入学生成绩 测试序号C1 测试过程及数据用例编号 U1 登录教师管理系统,选择1插入成绩,回车;输入成 绩100,输入-1,回车结束输入; 用例编号 U2 登录教师管理系统,选择1插入成绩,回车;输入成 绩65,87,90,73,60,输入-1,回车结束输入; 预期结果U1 系统提示插入成绩失败,成绩必须为[0,100]之间的数 字 U2 系统提示插入学生成绩成功 测试结果通过 二级模块模块名称查询成绩 用例描述用例起始于教师要查询学生成绩 测试序号C2 测试过程及数据用例编号 U3 登录教师管理系统,选择2查询成绩,回车;输入未 插入的成绩100,回车; 用例编号 U4 登录教师管理系统,选择2查询成绩,回车;输入已 插入的成绩90,回车; 预期结果U3 系统提示要查询的成绩不存在 U4 系统显示成绩为90的学生的相关信息 测试结果通过 二级模块模块名称成绩排序 用例描述用例起始于教师要对学生成绩进行排序 测试序号C3 测试过程及数据用例编号 U5 在未插入任何成绩的情况下,直接选择3成绩排序, 回车; 用例编号 U6 登录教师管理系统(系统中已插入成绩65,87, 90,73,60),选择3成绩排序,回车; 预期结果U5 系统提示对不起,尚无数据 U6 系统将学生成绩按90,87,73,65,60降序排序 测试结果通过

学生服务子系统测试用例测试负责人:顾赛一级模块模块名称学生服务 二级模块模块名称成绩查询 用例描述用例起始于一名学生想查看自己的成绩 测试序号C5 测试过程及数据用例编号 U7 选择功能2,回车,输入正确课程名称:软件工程用例编号 U8 选择功能2,回车,输入错误课程名称:地理 用例编号 U9 选择功能2,回车,输入正确课程编号:03 用例编号 U10 选择功能2,回车,输入错误课程编号:009 预期结果U7 输出包括,学生姓名,学号,课程号,课程名称,成 绩。 U8 提示你输入的课程名称存在,请重新输入 U9 输出包括,学生姓名,学号,课程号,课程名称,成 绩。 U10 提示你输入的课程编号不存在,请重新输入 测试结果通过 二级模块模块名称成绩排序 用例描述用例起始于一名学生想对成绩进行排序 测试序号C6 测试过程及数据用例编号 U11 选择功能3,回车,显示所有科目包括,学生姓名, 学号,课程号,课程名称,成绩,输入:成绩升序 用例编号 U12 选择功能3,回车,显示所有科目包括,学生姓名, 学号,课程号,课程名称,成绩,输入:数子 用例编号 U13 选择功能3,回车,显示所有科目包括,学生姓名, 学号,课程号,课程名称,成绩,输入:成绩降序 用例编号 U14 选择功能3,回车,显示所有科目包括,学生姓名, 学号,课程号,课程名称,成绩,不输入,回车。 预期结果U11 按成绩升序排列。 U12 提示你输入的提示不正确。U13 按成绩降序排列。 U14 显示你输入的提示不正确。 1

毕业设计论文学生成绩管理系统(数据结构)

大连科技学院 数据结构毕业设计 题目单链表的基本操作- 建立和遍历 学生成绩管理系统- 排列排序问题- 选择排序, 直接插入排序 学生姓名李易霖专业班级计算机10-1 指导教师宋丽芳职称副教授所在单位信息科学系软件教研室系主任王立娟 完成日期2012 年1 月6 日

大连科技学院 数据结构毕业设计成绩考核表 计算机 学生姓名李易霖专业班级学号1001020112 10-1 单链表的基本操作,学生成绩管理系统,排序问题 题目 注:总评标准采用优良制:优秀( 90 分以上)、良好( 80-90 )、中等( 70-80 )、及格( 60-70 )、不 及格( 60 分以下) 指导教师签字:

毕业设计任务书 一、任务及要求 1. 设计(研究)内容和要求研究内容:单链表的基本操作,学生成绩管理系统,二叉树的 运算任务和要求: (1)学习数据结构基础知识,掌握数据结构典型的算法的使用。 (2)对指导教师下达的题目进行任务分析。 (3)根据分析结果完成设计。 (4)编程:在计算机上实现题目的代码实现。 (5)完成对程序的测试和调试。 (6)提交毕业设计报告(约二十页),含程序代码及运行结果。 2. 原始依据 结合数据结构毕业中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。 二、工作量 2 周( 10 个工作日)时间。 三、计划安排 第 1 个工作日-第 2 个工作日:查找相关资料、书籍,阅读示例文档,选择题目。 第 3 个工作日:题目分析,设计算法。 第 4 个工作日 -5 个工作日 : 功能模块的划分和设计。 第 6 个工作日:实现具体数据结构和模块。 第 7 个工作日-第 8 个工作日:程序设计与调试,编写毕业设计报告。 第 9 个工作日:上交毕业设计报告。 第 10 个工作日:软件验收、答辩,成绩评定。 指导教师签字: 2011 年12月26日

学生成绩管理系统分析报告

学生成绩管理系统分析报告 ■建立新系统的必要性 随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生各门课程的成绩的各种信息量也成倍增长,学生成绩管理操作重复工作较多,工作量大,因此,建立学生成绩管理系统来提高工作的效率。基于互联网的学生成绩管理系统,在学生成绩的规范管理、科学统计和快速查询方面具有较大的实用意义,提高了信息的开放性和快速性。使学生信息更加系统化,信息更加精确化。使管理人员管理更加方便,能够改动部分信息,最大化的满足工作的需求。 学生成绩管理系统的建立,在学生查询成绩的规范管理、科学统计和快速查询方面具有较大的实用意义,它提高了信息的开放性,大大改善了学生对其最新信息查询的准确性。成绩管理系统有查找方便、可靠性高、存储量大、易操作、保密性好、信息保存时间长等优点,它能极大的提高老师和学生成绩信息管理的效率。 ■业务流程分析 通过对学生成绩管理业务的调查分析,弄清了学生成绩管理系统的业务流程和管理功能,系统的业务流程如下图所示: 业务流程图部分: 登录教师 管理页面 学 生信息 录入教 师 管 理 信 息 输 出 系 统 控 制 信 息 登录查询 信息反馈 信息反馈 学生 管理员 学生成绩管理系统教师

管理功能部分: 从业务流程图可以看出,学生成绩管理系统中分为大的三个方面:系统管理员模块、教师模块、学生模块,其主要管理功能有: 1、系统管理员功能 系统管理员进入学生成绩管理系统的主要功能是:实现管理员用户的添加、修改和删除,以及对教师添加、教师修该、教师删除、教师查询、学生的添加、学生的修改、学生的查询等基本功能,并且参与开设课程、选择课程的管理,安排教师的任课和学生的选课工作,管理元为每门课程设置一个学分,没门课程可以是必修或选修,如果学生及格,学生将获得该课程学分。 2 、教师功能 教师进入学生成绩管理系统的主要功能是:各科教师登录系统后查询和修改个人信息、修改自己的账号密码,查询自己的授课课程,实现对选秀了自己课程的学生的成绩进行查询、录入和修改,各科老师可以对自己学生选修课程结束后给与分数,同时可以对自己所带课程的成绩优秀人数、及格人数和不及格人数的分布信息进行查询。 3 、学生功能 学生进入学生成绩管理系统的主要功能是:每个学生登录系统后可以查询和修改个人信息、修改自己的账号密码,以及自己所选课程任课老师的个人信息,同时在课程结束后可以查询在校期间各个时间段选修课程的成绩与学分,以及对单科成绩和总分的排名查询。 录入学生信息 录入课程信息 录入成绩信息 查询成绩 查询个人信息 管理员 学生表 成绩表 课程表 验证信息 学生

学生信息管理系统课程设计说明书

宜春学院数学与计算机科学学院 课程设计说明书 课程名称:课程设计 课程代码: 题目:学生信息管理系统设计说明书 年级/专业/班:12软件工程 学生姓名: 学号: 指导教师: 开题时间: 2014 年 12 月 08 日 完成时间: 2014 年 12 月 27

目录 一、引言............................................................................................... 错误!未指定书签。 二、设计目的与任务............................................................................... 错误!未指定书签。 三、设计方案........................................................................................... 错误!未指定书签。 四、结论............................................................................................... 错误!未指定书签。 五、致谢............................................................................................... 错误!未指定书签。 六、参考文献........................................................................................... 错误!未指定书签。

最新学生成绩管理系统测试计划(1)

《学生成绩管理系统测试计划》 一.引言 1编写目的 为了保证学生成绩管理各项功能可靠实现,特编写此测试计划,对所有功能模块及总系统进行测试。 此测试计划供程序员在程序高度阶段参考,在系统测试阶段提供测试依据。本测试计划主要用于发现系统开发过程中出现的各种不妥之处,发现软件中的错误。 2背景 1)待开发系统软件名称:学生成绩管理系统; 2)本项目的任务提出者是学校信息管理系统的各位老师,由本小组负责开发,用于江西农业大学广大师生成绩查询及管理; 3)开发背景:本系统属于江西农业大学大学网络管理系统的学生成绩管理模块,实现的是网络管理系统中关于学生成绩管理的子功能,通过此软件,提高用软件工程分析问题、解决问题的能力,同时增强对数据库和VC#的使用能力。 3定义 成绩管理:所谓成绩管理,是指以学校中的学生为对象,根据学生的成绩来做记录,将学生的成绩进行有关操作和分配。并对学生的成绩进行总和与管理。 4参考资料 [1] 张海藩,《软件工程导论》,清华大学出版社,2008 [2] 陆丽娜,《软件工程》,经济科学出版社,2008 [3] 萨师煊,《数据库系统概论》,高等教育出版社,2006 [4]薛华成,《管理信息系统》,清华大学出版社,2007 二. 计划 1软件说明

2 测试内容 2.1 登录模块 2.3学生成绩查询模块

2.4管理学生成绩信息模块 2.5 分析统计信息管理模块

三.测试设计 1用户登录(01) 本测试考虑到:未注册用户名的处理,用户名与密码不匹配处理 1.1控制 利用白盒测试和黑盒测试相结合的方式。 2学生成绩管理模块(02 ) 本测试考虑到:输入信息格式的合法性,学生编号是否注册。 2.1控制 利用白盒测试和黑盒测试相结合的方式。(成绩默认为整数)

学生成绩管理系统数据流图.doc

.3.3.1 创建实体关系图 (1)在需求收集的过程中,要求客户列出应用软件或业务过程涉及到的"事物",将其演化成数据对象; (2)一次考虑一个对象,分析员和客户定义这个对象和其他对象之间是否存在连接; (3)如果存在连接,应创建一个或多个关系; (4)对每一个关系,确定其关联类型; (5)重复步骤(2)到步骤(4),直到定义了所有关系。 (6)定义每个实体的属性; (7)形式化并复审实体关系图; (8)重复步骤(1)到(7),直到数据建模完成。 举例分析: * 实体:学生、课程、成绩。 * 实体属性定义: 学生:学号、姓名、性别、出生日期、入学年月 课程:课程编号、课程名称、课程学分、课程描述 成绩:学号、课程编号、分数、考核日期 * 实体关系图: 首先分析"学生成绩管理系统"的用户要求,找出该系统应该包括的实体。显然,学生、课程和成绩都是系统的实体,并且可以初步定义它们的属性(见上)。教务人员虽然是系统的用户,但其信息与系统处理无关,因此不用作为实体。那么,学生的选课信息是否需要成为实体呢?由于成绩信息包含了选课信息,因此选课信息不用单独记录。最终,确定系统的实体是学生、课程和成绩。 接着,我们分析这些实体之间的关联关系。从实际情况得知,一个学生可以选多门课程,一门课程也可以有多个学生选修,但每个学生选一门课程必须有一个成绩。根据上述分析,我们得到如图所示的实体关系图。 3.3.3.2 创建数据流模型 通常,数据流图是分层绘制的,整个过程反映了自顶向下进行功能分解和细化的分析过程。顶层(也称第0层)DFD用于表示系统的开发范围,以及该系统与周围环境的数据交换关系;最底层DFD代表了那些不可进一步分解的"原子加工";中间层DFD是对上一层父图的细化,其中的每一个加工可以继续细化,中间层次的多少由系统的复杂程度决定。 (1)第0层DFD将整个系统表示成一个加工; (2)确定并标记主要的输入和输出; (3)分离出下一层中的加工、数据对象和存储,并对其进行细化,一次细化一个加工; (4)标记所有加工和箭头; (5)重复步骤(3)和(4),直到所有的加工只执行一个简单的操作,可以很容易地用程序实现。举例分析: * 第0层DFD图

学生成绩管理系统设计毕业论文

学生成绩管理系统设 计毕业论文 目录 一、系统功能简介------------------------------------------------------------------2 二、小组成员完成的工作--------------------------------------------------------3 三、系统设计分析------------------------------------------------------------------3 四、系统的调试过程---------------------------------------------------------------6

五、工程总结-------------------------------------------------------------------------12 六、附录(源程序代码)--------------------------------------------------------13 共22页 一、系统功能简介 1、进入主界面按系统提示选择相应的功能。 2、输入功能:将学生的、学号、性别、联系方式以及本学期各 门课的成绩都输入进系统。

3、排序功能:所有学生的本学期成绩进行比较,然后按照分数 从高到低进行排序。 4、查询功能:可以分为按学号和按两种方式进行查询出学生本 学期的成绩以及其他有关的信息。 5、修改功能:可以根据学生学号查找到需要修改的学生的所有 信息,然后可以对学生的信息做一个重置。 6、删除功能:通过学号定位,然后删除该学生的所有信息。 7、成绩保存:将学生的成绩信息以文件的形式保存下来。 8、成绩统计:统计每门课的最高、最低成绩以及不及格人数。 二、工作 三、系统设计分析 1、系统功能模块结构图: 本系统是由成绩输入、成绩排序、成绩查询、信息修改、信息删除、成绩保存、成绩统计以及退出程序这8个功能模块组成,其总体结构图如下: 学生成绩管理系统

学生成绩管理系统需求说明书

学生成绩管理系统 需求说明书 V1.0(版本号) 拟制人 审核人______________________ 批准人______________________ ] 二零一一年六月十五日[ 1.引言 随着计算机的普及,人们对计算机的认识及需求有了明显的增加。计算机对于大量信息的管理的优势更是显而易见。对于一个学校来说,这方面的需要尤其重要。有了这个学生成绩管理系统,管理员的工作任务就可能会事半功倍。 1.1 编写目的:

本需求的编写目的在于学生成绩管理系统软件的开发途径和应用方法,为以后的开发工作提供可靠的依据。 1.2背景及范围: 本项目的名称:学生成绩管理系统。 本项目的任务提出者:金超 本项目的任务开发者:金超小组成员 项目与其他软件或其他系统的关系:该系统在WIN98﹑WIN2000、WIN XP系统中都能很好的运行,具有很好的兼容性。同时,需要对数据库软件Access的支持。 1.3名词定义: 实体:客观世界中存在的且可互相区别的事物。 联系:客观事物中的彼此之间的关系。 属性:实体或者联系所具有的性质。 1.4参考资料: [1] 王珊、萨师煊.数据库系统概论. 北京.高等教育出版社.2006. [2] 王珊等. 数据仓库技术与联机分析处理. 北京.科学出版社.1998. [3] Kimball R等.数据仓库工具箱. 北京. 电子工业出版社,2003. [4] 张奇李律松等. Visual C#数据库项目案例导航. 北京. 清华大学出版社,2005.6 [5] 王石. Visual C#2005语音基础. 北京. 人民邮电出版社,2007 2.任务概述 2.1目标 意在解决当今的庞大信息与人力学生成绩管理系统是针对高等院校的学生成绩的管理, 资源不匹配的矛盾。因此本系统的用户包括系统管理员、教师和学生。使用应户可以在局域网中运行。要求系统有如下意图: (1)用计算机程序实现系统流程。 (2)人机界面友好,对用户的输入要进行判断和约束。 (3)系统稳定性好,对关键程序进行保护。 (4)系统不要求用户配置,安装完数据库和应用程序后即可使用。 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。对于学校而言,实现学生学籍管理的信息化就显得尤为重要,因此,开发一套能够为用户提供充足的信息和快捷的查询手段的学生成绩管理系统,将是非常必要的。 作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、保密性好等。这些优点能够极大地提高学生成绩管理的效率,也是学校向科学化、正规化管理发展的必要条件。 本系统是基于windows 系列操作系统环境以及数据库技术(主要是Access)开发的一个针对高等院校学生成绩管理的管理软件。 2.2用户的特点 本系统的用户主要的应户群是教师、学生和管理员,根据这些用户的特点,我们经调查得出用户有以下要求: (1)管理员、教师和学生登录后可以改自己的密码。 (2)管理员、教师和学生可以查询课程信息。 (3)管理员可以删除学生信息、教师信息、登录用户信息,还可以查询和删除学生成绩,添加、

软件测试《学生成绩管理系统》测试报告

软 件 测 试 实 训 报 告 班级:软件测试1406班姓名:贺勇游 学号:2014180182

目录 第一部分学生成绩管理系统需求分析 (1) 一.项目概述 (2) 二.项目背景 (2) 三.系统详细需求 (5) 第二部分学生成绩管理系统测试计划 (8) 一.概述 (9) 二.测试摘要 (9) 三.测试风险 (10) 四.缺陷等级分类和优先级描述 (10) 五.测试策略 (12) 六.暂停标准和再启动标准 (13) 七.测试任务和进度 (14) 八.测试提交物 (15) 第三部分学生成绩管理系统测试用例设计 (15) 一. 测试用例目的 (16) 二. 功能测试用例设计 (16) 2.1 系统登录功能模块用例设计 (16) 2.2 “系统功能模块用例设计 (17) 2.3 档案管理功能模块用例设计 (17) 2.4 成绩管理功能模块用例设计 (18) 第四部分学生成绩管理系统缺陷记录 (20) 一. 说明 (21) 二. 缺陷记录 (21) 第五部分学生成绩管理系统总结报告 (22) 一.引言 (23) 二. 测试用例简介 (24) 三. 测试结果及分析 (24) 四. 综合评价 (24) 五. 心得体会 (24)

学生成绩管理系统需求分析

一.项目概述 软件项目名称:《生成绩管理系统》 软件版本:6.62 开发团队:阿林软件设计室 项目特点:《学生成绩管理系统》单机/网络版(V6.52)操作简单,功能齐全,适合于各中、小学校及教育局。该系统主要有以下几方面的特点: ●即可单机使用,又可在局域网下多用户共享使用。 ●所有数据即可从Excel表中导入,也可导出到Excel表,方便 地与Excel交换。支持读卡机。 ●可多台电脑同时输入成绩,输入时有语音提示,突破输入瓶 颈。 成绩排名详尽,成绩分析到位。 二.项目背景 学生成绩管理是所有院校学生管理事务中的一项重要工作,几年前,各个学校的学生成绩管理基本上都是靠手工进行,随着各个学校的规模增大,有关学生学籍工作管理所涉及的数据量越来越大,有的学校不得不增加人力丶物力来进行学生成绩管理。但手工管理具有效率低丶出错率高的缺点。为了解决学生成绩管理问题,学生成绩管理系统应运而生。高等院校成绩管理涉及学生成绩的录入、查询、操作。建立学生成绩管理系统,采用计算机对学生成绩进行管理,进行进一步

基于Web的学生成绩管理系统的设计和实现

论文评定 指导教师意见: 指导教师:___________(签名) 年月日

原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律结果由本人承担。 论文作者签名:*** 日期:2009 年10 月30 日

基于Web的学生成绩管理系统的设计和实现 摘要 进入21世纪后,科学技术突飞猛进,信息时代的来临不仅让计算机在科技上得到应用,更让计算机在生活上得到了更广泛的应用,对如今的学校来说,实现电子信息化的办公是必然趋势,学校中的信息量主要体现在学生成绩的管理上面,因此学生成绩管理系统是一个教育单位不可缺少的部分。 本毕业设计所描述的学生成绩管理系统是采用https://www.doczj.com/doc/d010745871.html,作为网络编程框架,SQL Server 2005作为数据库编写的一个B/S模式的系统。系统主要实现了:用户管理、成绩查询、成绩管理和科目管理等功能。本文详细介绍了学生成绩管理系统的需求分析、功能设计和系统设计,在系统设计中给出数据库的设计和本系统的总体设计方案,在系统实现中具体介绍了各个功能的所能实现的情况和主要代码,同时附有运行界面图。 关键字:成绩管理,成绩录入,成绩查询,.NET , B/S

STUDENTS’ PERFORMANNCE MANAGEMENT SYSTEM ABSTRACT After entering the 21st century, science and technology advance by leaps and bounds, the advent of the information age is not only make the computer is widely used in science and technology, more make the computer in life has been more widely, for now, the school of electronic information office is an inevitable trend, the school of information are mainly embodied in the management of students' grades above, education management system is a indispensable part of the unit. The graduation design of student achievement management system is described using https://www.doczj.com/doc/d010745871.html, is a network programming framework, SQL Server 2005 as a database of writing a B/s-based mode of the system. System is mainly realized: user management, scores query, performance management and management of subject etc. Function. This paper introduces the student performance management system requirements analysis, functional design and system design, system design in database design and the overall design scheme of the system, in the system are introduced in details of each function can realize the situation and the main operation interface with code. Key words:Grade Management,Achievements recorded scores query,.NET ,B/S

学生成绩管理系统需求分析报告

《学生成绩管理系统》 需求分析报告 报告名称学生成绩管理系统 专业计算机信息管理 班级信息管理GZ1301 姓名 xxx xx xxx xxx xxx xxx 指导教师任xx

学生成绩管理系统需求分析 1引言 编写目的 学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加、修改、删除、查询等操作同时一样的方面学生对自己各科成绩查询,学习的交流。 项目背景 作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样的一套成绩管理系统成为很有必要的事情。 参考资料

《软件工程案例教程》…毕硕本卢桂香编著北京大学出版社易语言新版学习教材《中文编程—学习进阶》海洋大学出版社运行环境 (1)硬件环境 台式机或笔记本电脑 运行时所需内存:500MB; (2)软件环境 Windows操作系统 性能需求 1 数据的准确性 查询时应保证此学生的所有信息都是正确的。 2 时间特点 操作响应时间不能太长,数据的输入也该在一定时间内完成。故障处理 正常运行时不应出错,若时出错的话,应该有恢复系统的功能,并且必须保护数据的准确性。

软件属性需求 1 正确性 要求所开发的软件要达到用户的需求,运行时基本无误 2 可靠性 一般条件下,不应该出现故障. 3 效率 对用户的要求要有极快的响应 4 易使用性 要求能尽量为用户的使用提供方便 5 可维护性 当软件出错时可以尽快的进行修改 6 可移植性 要求本软件能在Windows系统上进行移植 7 互联性 要求提供数据的导入和导出接口,以易于同其他系统的连接

毕业论文-学生成绩管理系统

一、作品内容介绍 学生成绩管理系统的背景分析: 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化,正规化管理,与世界接轨的重要条件。因此,开发这样的一套成绩管理系统成为很有必要的事情。学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加、修改,打印等操作,同时一样的方面学生对自己各科成绩查询,学习的交流。 开发一个学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高了办学效益和现代化水平。为广大51教a师s和p学x生提高工作效率,实现学生成绩信息管理工作流程的系统化,规范化和自动化。现在我国的大中专院校的学生成绩档案管理水平普遍都不是很高,有的还停留在全用纸介质基础上,这种管理方式已不能适应时代的发展,社会的需求,因为它浪费了大量的人力物力,也存在着许多不足的因素。在今天信息时代这种传统的管理方法必然会被计算机为基础的信息管理系统所代替,一个高效的学生成绩管理系统可以存储历届的学生成绩档案,不需要大量的人力,只需要几名专门录入员即可操作系统,节省大量人力,可以迅速查到所需信息、高效、安全、学生在能方便的查看自己的成绩。 二、开发环境 1、页面开发环境:VS2005集成开发环境 2、开发语言:https://www.doczj.com/doc/d010745871.html, +C# 3、后台数据库:SQL Server2000 4、开发环境运行平台:XP(SP2) 三、系统的结构说明 “学生成绩管理系统”包括三个模块:学生登陆、教师登陆、管理员登陆。这三个模块既相互联系又相互独立。

软件测试学生成绩管理系统测试报告完整版

软件测试学生成绩管理 系统测试报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

软 件 测 试 实 训 报 告 班级:软件测试1406班 姓名:贺勇游 目录 第一部分学生成绩管理系统需求分析 (1) 一.项目概 述································ (2) 二.项目背 景································ (2)

三.系统详细需 求································ (5) 第二部分学生成绩管理系统测试计划 (8) 一.概 述 (9) 二.测试摘 要 (9) 三.测试风 险 (10) 四.缺陷等级分类和优先级描 述 (10) 五.测试策 略 (12) 六.暂停标准和再启动标 准 (13) 七.测试任务和进 度 (14) 八.测试提交 物 (15) 第三部分学生成绩管理系统测试用例设计 (15) 一. 测试用例目的 (16) 二. 功能测试用例设计····································

系统登录功能模块用例设计 (16) “系统功能模块用例设计 (17) 档案管理功能模块用例设计 (17) 成绩管理功能模块用例设计 (18) 第四部分学生成绩管理系统缺陷记录 (20) 一. 说明 (21) 二. 缺陷记录 (21) 第五部分学生成绩管理系统总结报告 (22) 一.引言 (23) 二. 测试用例简介 (24) 三. 测试结果及分析 (24) 四. 综合评价 (24) 五. 心得体会 (24) 学

学生成绩管理系统数据流图

学生成绩管理系统数据流图-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

.3.3.1 创建实体关系图 (1)在需求收集的过程中,要求客户列出应用软件或业务过程涉及到的"事物",将其演化成数据对象; (2)一次考虑一个对象,分析员和客户定义这个对象和其他对象之间是否存在连接; (3)如果存在连接,应创建一个或多个关系; (4)对每一个关系,确定其关联类型; (5)重复步骤(2)到步骤(4),直到定义了所有关系。 (6)定义每个实体的属性; (7)形式化并复审实体关系图; (8)重复步骤(1)到(7),直到数据建模完成。 举例分析: * 实体:学生、课程、成绩。 * 实体属性定义: 学生:学号、姓名、性别、出生日期、入学年月 课程:课程编号、课程名称、课程学分、课程描述 成绩:学号、课程编号、分数、考核日期 * 实体关系图: 首先分析"学生成绩管理系统"的用户要求,找出该系统应该包括的实体。显然,学生、课程和成绩都是系统的实体,并且可以初步定义它们的属性(见上)。教务人员虽然是系统的用户,但其信息与系统处理无关,因此不用作为实体。那么,学生的选课信息是否需要成为实体呢?由于成绩信息包含了选课信息,因此选课信息不用单独记录。最终,确定系统的实体是学生、课程和成绩。

接着,我们分析这些实体之间的关联关系。从实际情况得知,一个学生可以选多门课程,一门课程也可以有多个学生选修,但每个学生选一门课程必须有一个成绩。根据上述分析,我们得到如图所示的实体关系图。 3.3.3.2 创建数据流模型 通常,数据流图是分层绘制的,整个过程反映了自顶向下进行功能分解和细化的分析过程。顶层(也称第0层)DFD用于表示系统的开发范围,以及该系统与周围环境的数据交换关系;最底层DFD代表了那些不可进一步分解的"原子加工";中间层DFD是对上一层父图的细化,其中的每一个加工可以继续细化,中间层次的多少由系统的复杂程度决定。 (1)第0层DFD将整个系统表示成一个加工; (2)确定并标记主要的输入和输出; (3)分离出下一层中的加工、数据对象和存储,并对其进行细化,一次细化一个加工; (4)标记所有加工和箭头; (5)重复步骤(3)和(4),直到所有的加工只执行一个简单的操作,可以很容易地用程序实现。 举例分析: * 第0层DFD图 教务人员维护学生信息和课程信息,并登录学生的选课成绩; 学生查询自己的成绩单。 * 第1层DFD图 对第0层DFD图中的一个加工"学生成绩管理"进行展开。

学生成绩管理系统实验报告

洛阳理工学院 课程设计报告课程名称数据库课程设计 设计题目学生成绩查询系统 专业计算机科学与技术 班级 B100506 学号 姓名孙帅杰 完成日期 2013年1月6号

课程设计任务书 设计题目:学生成绩管理系统 设计内容与要求: 设计内容: 教务员可以输入学生、教师、班级、课程信息,一个班级只属于一个专业,一个学生只属于一个班级。教务员负责输入每个专业、每个班级需要学习哪些课程,指定课程的任课教师。一个教师可以教授多个班的多门课程。 教师可以查看学习该课程的学生名单。课程结束后,教师可以录入课程成绩。 课程分两类,必修课和选修课。学生可以选修课程,每学期几门。学生可以查看自己各门课程的成绩。学生还可以进行评教,给老师打分。 系统管理员可以输入教室信息,并结合班级、课程、教室信息实现自动排课。 设计要求: 要求完成需求分析,写出功能需求和数据需求描述; 在需求分析的基础上完成数据库的概念结构设计、逻辑结构设计、物理结构设计; 用C#语言,完成管理系统的部分程序模块的界面设计。 指导教师:陶荣 2012年12月28日 课程设计评语 成绩: 指导教师: 年月日

目录

1.绪论 设计目的 随着学生的数量的日益增多,学校对学生成绩管理的要求也越来越高,因此学校对学生信息的管理也更系统化,数字化,为了提高学生的实际应用数据库的能力,使学生锻炼简单的数据库开发能力,因此决定设计一个简单的学生成绩管理系统,包括学生信息,课程信息,以及成绩信息和任课教师信息,能够存储相应学生评教信息,和课程安排提供的学生成绩管理各种功能分为面向学生,教师和教务员三部分,其中教务员可以录入学生,教师,班级,课程信息,每个专业、每个班级需要学习哪些课程,指定课程的任课教师,给每个班的每门课程安排指定的认课老师。教师可以查看学习该课程的学生名单。课程结束后,教师可以录入课程成绩。课程分两类,必修课和选修课。学生可以选修课程,每学期几门。学生可以查看自己各门课程的成绩,进行评教,给老师打分。该学生成绩管理系统类似于简单的学校教务系统,能对学校日常事务进行简单的管理。 本课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和的应用,希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。 开发工具选择 本系统后台数据库采用Microsoft SQL Server 数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft 公司的Visual Studio 2010作为主要开发工具,可与SQL Server 2008数据库无缝链接。开发环境 系统开发平台:Microsoft Visual Studio2010 系统开发语言:C# 数据库管理软件:SQL Server 2008 本报告的主要内容 本报告详细的介绍了学生成绩管理系统的开发过程,主要涉及到的工作如下:系统的需求分析、系统的总体设计、系统的概念设计、系统部分模块的详细设计。 2.需求分析 进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。求分析是整个设计过程的基础,作为“地基”的需求分析是否做得充分与准确,决定了在其上构建

相关主题
文本预览
相关文档 最新文档