UML学生成绩管理系统Word格式.docx
- 文档编号:18837952
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:24
- 大小:834.66KB
UML学生成绩管理系统Word格式.docx
《UML学生成绩管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《UML学生成绩管理系统Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
要求界面颜色搭配合理,不能单调或者过于绚丽;
经济效益:
要求开发周期不能超过半年,合理管理开发过程,不得造成浪费.
第二章面对对象分析
1、静态模型
①用例模型
该系统共有两个用户,学生与教师,其用例模型如下图所示:
②类分析
本系统中的类大体可分为三大类,分别是实体类、界面交互类与数据库类。
在VC++ClassView中分了三个文件夹存放,如下图所示:
◆实体类:
包括学生信息类(CStudentInfo)与学生成绩类(CStudentScores)。
这两个类都是指某一个学生的信息,本来可以划分为一个类,比如说将学生成绩当做学生个人信息类的一个属性,但由于系统是需要对学生个人信息与成绩分别操作,例如删除了学生成绩,但是学生的个人信息还要在,因此将二者割裂开来,这也更加清晰的体现了该学生成绩系统的个人信息与成绩两大模块。
二者类图如下图所示:
◆界面交互类:
各个对话框类,包括欢迎界面类,登陆对话框类,教师管理对话框类以及其产生的查询、添加、修改等子对话框类,学生界面类等。
这些类是用户与系统之间的桥梁与纽带,将系统具体形象的呈现在用户面前,并且根据用户选择对系统中的各种类进行操作。
这些界面类的类图如下所示:
其中虚线表示依赖关系,A类向B类发送消息,从而影响B类发生变化。
图中的学生窗口类是由标签控件和列表控件组合而成,而不是聚合关系,应该是实心菱形,由于种种原因,这里化成了空心的菱形。
◆数据库类:
数据库类是对数据库进行操作的类,包括ADO数据库控件类和ADO数据库对象类,ADO控件类包括AdoDC控件类和DataGrid控件类,用来显示数据库中的数据;
ADO数据库对象类,用来连接数据库,以及对数据库执行SQL语以及存储等操作,我们将其封装在了CDBConnet类中。
其类图如下所示:
◆
所有类之间的关系:
仔细分析总体类图,DBConnect类是底层对数据库进行操作的类,而调用该类的只有两个实体类,对话框类要想改变数据库,必须调用实体类中的方法,这里的实体类中,学生个人信息类封装了对学生个人信息的查询、添加、修改、删除等操作,而学生成绩类中封装了对学生成绩的查询、添加、修改、删除等操作,这样的结构充分体现了面对对象设计的封装特性。
2、动态模型
①教师添加学生个人信息时序图
②教师修改学生个人信息协作图
③学生查询活动图
3、系统包图
第三章面对对象设计
1、人机交互界面设计
本系统的GUI采用VC++MFC编制,界面友好,便于操作。
主要由以下几个界面组成:
1欢迎界面
系统初始化时,要加载很多数据文件,耗时较长,为了避免用户焦急等待,设置欢迎界面。
2登陆界面
选择用户类型,输入用户名与密码,即可登陆,密码错误次数不能超过三次。
3教师管理主窗口
第一个表为学生信息表,下边的表为学生成绩表。
设计理念是直观简洁。
④查询学生个人信息(查询学生成绩与此对话框类似)
输入学号或者姓名均可以查询,查询结果高亮显示在教师管理主窗口的学生个人信息表中。
⑤添加学生个人信息(添加学生成绩与此对话框类似)
⑥修改学生个人信息(修改学生成绩与此对话框类似)
首先在教师管理主窗口中单击某一学生记录,然后单击修改,即可弹出该对话框。
弹出该对话框时,对话框上填充着原有信息。
⑦学生管理主窗口
2、控制驱动设计
由于本系统仅是小型管理系统,数据量不大,功能不复杂,系统结构没有采用C-S、B-S等结构,而是简单的在一台电脑上实现了所有的功能;
程序驱动采用单一进程即可比较完美的实现成绩管理与查询功能,没有划分多线程。
3、数据库设计
本系统数据库共设计了4个表,分别存储了教师登陆用户信息、学生登录用户信息、学生个人信息和学生成绩。
①教师与学生登陆信息的表格式一样,如下所示
②学生个人信息表格式如下所示
③学生成绩表格式如下所示
第四章系统实现代码
本系统采用MicrosoftVisualC++6.0集成开发环境进行开发,数据库由SQLServer2000设计并且提供服务器。
1、实体类CStudentInfo
classCStudentInfo
{
private:
CStringStu_ID;
CStringStu_Name;
CStringStu_Sex;
CStringStu_Birthday;
CStringStu_Address;
public:
CStudentInfo();
virtual~CStudentInfo();
//获取对象属性
CStringGetStu_ID();
CStringGetStu_Name();
CStringGetStu_Sex();
CStringGetStu_Birthday();
CStringGetStu_Address();
//设置对象属性
voidSetStu_ID(CStringtemp);
voidSetStu_Name(CStringtemp);
voidSetStu_Sex(CStringtemp);
voidSetStu_Birthday(CStringtemp);
voidSetStu_Address(CStringtemp);
//若定义了某实例化对象,以下是对其进行数据库操作
voidDB_Insert();
//将该对象实例存储至数据库
voidDB_Delete();
//从数据库中删除该对象实例
intDB_Search();
//从数据库中查询该对象实例
};
CStudentInfo:
:
DB_Insert()向数据库中插入学生个人信息记录
voidCStudentInfo:
DB_Insert()
CDBConnectadoDB;
adoDB.OnInitDBConnect();
CStringstrSQL;
strSQL.Format("
INSERTINTOstudentinfo(学号,姓名,性别,出生日期,家庭住址)VALUES('
%s'
'
)"
Stu_ID,Stu_Name,Stu_Sex,Stu_Birthday,Stu_Address);
adoDB.ExecuteSQL(strSQL);
adoDB.ExitDBConnect();
}
DB_Delete()从数据库中删除学生个人信息记录
DB_Delete()
DELETEFROMstudentinfoWHERE学号='
"
Stu_ID);
DB_Search()在数据库中搜寻学生个人信息记录
intCStudentInfo:
DB_Search()
{
intPosition=0;
_RecordsetPtrppRst=adoDB.GetRecordset("
SELECT*FROMstudentinfo"
);
ppRst->
MoveFirst();
while(!
(ppRst->
rsEOF)&
&
Stu_ID!
=(LPCTSTR)(_bstr_t)ppRst->
GetCollect("
学号"
)&
Stu_Name!
姓名"
))
{
Position++;
ppRst->
MoveNext();
}
if(ppRst->
rsEOF)
return-1;
Stu_ID=(LPCTSTR)(_bstr_t)ppRst->
Stu_Name=(LPCTSTR)(_bstr_t)ppRst->
Stu_Sex=(LPCTSTR)(_bstr_t)ppRst->
性别"
Stu_Birthday=(LPCTSTR)(_bstr_t)ppRst->
出生日期"
Stu_Address=(LPCTSTR)(_bstr_t)ppRst->
家庭住址"
CScoresApp*app=(CScoresApp*)AfxGetApp();
app->
Position=Position;
returnPosition;
2、实体类CStudentScores
其整体构架与CStudentInfo类似,不再赘述。
classCStudentScores
voidSetSco_ID(CStringtemp);
voidSetSco_Name(CStringtemp);
voidSetSco_AI(inttemp);
voidSetSco_DM(inttemp);
voidSetSco_Math(inttemp);
voidSetSco_English(inttemp);
voidSetSco_UML(inttemp);
voidSetSco_SS(inttemp);
CStringGetSco_ID();
CStringGetSco_Name();
intGetSco_AI();
intGetSco_DM();
intGetSco_Math();
intGetSco_English();
intGetSco_UML();
intGetSco_SS();
intDB_Search(CStringtemp="
CStudentScores();
virtual~CStudentScores();
CStringSco_Name;
CStringSco_ID;
intSco_AI;
intSco_DM;
intSco_Math;
intSco_English;
intSco_UML;
intSco_SS;
3、数据库类CDBConnect
用来连接数据库及对数据库进行底层操作。
voidCDBConnect:
OnInitDBConnect()//用m_pConnection对象连接数据库
:
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
//OR"
ADODB.Connection"
CStringConnectionStr="
Provider=SQLOLEDB.1;
Password=123;
"
PersistSecurityInfo=True;
UserID=ytu;
InitialCatalog=scores;
DataSource=PC-20110930WANW\\SQLDB"
;
try
m_pConnection->
Open(_bstr_t(ConnectionStr),"
"
adConnectUnspecified);
catch(_com_errore)
AfxMessageBox(e.ErrorMessage());
_RecordsetPtrCDBConnect:
GetRecordset(CStringstrSQL)//根据传进来的SQL参数,访问数据库,返回记录集
if(m_pConnection==NULL)
OnInitDBConnect();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->
Open((_variant_t)strSQL,_variant_t((IDispatch*)m_pConnection),
adOpenKeyset,adLockOptimistic,adCmdText);
AfxMessageBox(e.Description());
returnm_pRecordset;
BOOLCDBConnect:
ExecuteSQL(CStringstrSQL)
Execute(_bstr_t(strSQL),NULL,adCmdText);
returntrue;
returnfalse;
ExitDBConnect()
if(m_pRecordset!
=NULL)
Close();
m_pRecordset.Release();
m_pConnection->
m_pConnection.Release();
CoUninitialize();
4、欢迎界面类CHelloDlg
BOOLCHelloDlg:
OnInitDialog()
CDialog:
OnInitDialog();
CenterWindow();
//使窗口居中
DWORDdwStyle=0x00080000;
HINSTANCEhInst=LoadLibrary("
User32.DLL"
//导入动态链接库,为了淡入淡出效果
typedefBOOL(WINAPIMYFUNC(HWND,DWORD,DWORD));
MYFUNC*AnimateWindow;
AnimateWindow=(MYFUNC*):
GetProcAddress(hInst,"
AnimateWindow"
AnimateWindow(this->
m_hWnd,750,dwStyle);
FreeLibrary(hInst);
SetTimer(1,2000,NULL);
//结合定时器使用
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
定时器函数
voidCHelloDlg:
OnTimer(UINTnIDEvent)
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
GetSafeHwnd(),750,dwStyle|0x00010000);
KillTimer
(1);
OnOK();
OnTimer(nIDEvent);
5、系统登陆界面类CscoresDlg
响应登录按钮单击事件。
voidCScoresDlg:
OnButtonLogin()
Addyourcontrolnotificationhandlercodehere
UpdateData();
m_IndexSelected=m_List.GetSelectionMark();
_RecordsetPtrpRst;
if(m_IndexSelected==-1)
MessageBox("
请选择用户类型!
注意"
MB_ICONEXCLAMATION|MB_OK);
if(m_IndexSelected==0)
{
strSQL.Format("
SELECT*FROMteacher_userWHERE用户名='
AND密码='
m_username,m_password);
pRst=adoDB.GetRecordset(strSQL);
If(pRst->
RecordCount>
0)
{
CTeacherDlg*teacherDlg=newCTeacherDlg;
teacherDlg->
Create(IDD_DIALOG_TEACHER,this);
ShowWindow(SW_SHOW);
this->
ShowWindow(SW_HIDE);
adoDB.ExitDBConnect();
}
else
if(count<
3)
{
MessageBox("
用户名或者密码错误,请重新输入!
错误"
MB_ICONHAND|MB_OK);
count++;
}
else
{
MessageBox("
错误次数超过3次,请稍后再试..."
CDialog:
OnOK();
if(m_IndexSelected==1)
strSQL.Format("
SELECT*FROMstudent_userWHERE用户名='
AND密码='
pRst=adoDB.GetRecordset(strSQL);
if(pRst->
CStudentDlg*studentDlg=newCStudentDlg;
studentDlg->
m_ID=m_username;
Create(IDD_DIALOG_STUDENT,this);
{MessageBox("
6、教师管理窗口类CTeacherDlg
响应添加按钮单击事件的函数,其他诸如查询、修改等按钮单击事件响应函数与此类似,不再赘述。
voidCTeacherDlg:
OnAddStuInfo()
CAddStuInfoDlgAddDlg;
AddDlg.DoModal();
m_AdoInfo.Refresh();
7、添加学生信息窗口类CAddStuInfoDlg
响应添加按钮单击事件的函数,其他诸如查询、修改窗口的按钮单击事件响应函数与此类似,不再赘述。
voidCAddStuInfoDlg:
OnButtonAdd()
if(m_Name=="
)
MessageBox("
请输入学生姓名!
return;
if(m_ID=="
请输入学生学号!
CStudentInfos
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UML 学生 成绩管理系统