学生信息管理系统分析毕业论文Word下载.docx
《学生信息管理系统分析毕业论文Word下载.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统分析毕业论文Word下载.docx(23页珍藏版)》请在冰点文库上搜索。
据库完整性,其关系模式中对每个实体定义的属性如下:
年级表
年级:
(年级名,年级主任、年级人数)
班级表
班级:
(班级名,年级名,班主任、班级人数)
课程表
课程:
(课程号,课程名,任课教师,学分)
学生表
学生:
(学号性别,班号名、年级名)
成绩表
成绩:
(学号,课程号,考试成绩、平时成绩、总评成绩、补考)
用户表:
用户:
(用户名,密码)
(三)物理设计:
定义每个表的数据类型以及字段限制,使数据库达到一定的完整性。
1、每个表的物理设计如下:
字段名
类型
长度
主码
学号
int
4
是
Char
20
性别
2
班级名
15
年级名
10
课程号
考试成绩
float
8
平时成绩
总评成绩
补考
bit
1
课程
课程名
任课老师
学分
班级
班主任
班级人数
Sinailint
年级
年级主任
年级人数
用户
用户名
密码
2、数据库概要说明
表26个项目
名称#
所有若
类型创連日期
class
course
dtpropertiesgrate
sc
student
bbbbbb1IQIQIdJ
2012-8-815:
52:
472012-9-815:
45:
06
2012-9-815:
31:
40
50:
252012-9-815:
41:
562012-9-815:
34:
51
Qnnn«
Q-c1•qh■iq
新建一个数据库,名字为score中包括course,student,sc,class,grate5个数据表。
下图所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。
可以清晰地反应数据库信息。
3、数据关系图:
如图所示,student表中的学号与sc表中的学号存在约束关系,sc表中的课程号与course中的课程号也存在约束关系,class中的年级名与grate中的年级名也存在约束关系。
(4)部分功能实现代码
1、VC应用程序连接数据库
BOOLCMvDlg:
:
OninitDialog()
CDialog:
:
OiiInitDialog();
CoInitialize(NULL);
CMenu*pSysMenu=GetSystemMenu(FALSE);
SetIcon(m_hIcorLTRUE);
Sctlcon(nchlcon,FALSE);
try{
m^DBCnt・CrcatelnstanceC_uuidof(Connection));
m_DBCnt->
ConncctionString=
"
driver二{SQLServer};
server=(local);
H
UID=teacher;
PWD="
;
”database二score"
_variant_tvs;
vs.vt=VT_BSTR;
vs.bstrVal=Sys?
\llocString(LuProinptH);
.variant.tvl;
vl.vt=VT.I2;
vl.iVal=adPromptAlways;
HLDBCnt->
Propcrtics->
GetItcm(vs)->
Value=vl;
m_DBCnt->
0pcn("
-1);
}
catch(_errore)
{
AfxMcssagcBox(n无法连接数据库!
”);
this->
EndDialog(0);
_bstr.tsti•二m_DBCnt->
ConncctionString;
2、査询学生资料
voidCMyDlg:
RcadstudentO
{nulist.DelcteAllItcms();
_RccordsetPtrprst=NULL;
-bstr_tstrsql(uselect*fromv_studcntORDERBY学号DESC1);
inti=0;
try
prst・CrcatcInstancc(_uuidof(Recordset));
if(key)prst二m_DBCnt->
Exccutc(_bstr_t(ZSQL),NULL,adCindText);
elseprst=m_DBCnt->
Execute(strsq1,NULL,adCindText);
^variant_tholder;
if(prst->
adoEOF)
{AfxMessagcBox(,r没有相关记录「);
key=false;
return;
}
while(!
prst->
{holdcr=prst->
GctCollcct("
学号"
);
if(holder.vt!
=VT_NULL)
m.list.InsertItem(i>
(char*)Gbstr_t)holder):
holder=prst->
GctCollect(HH);
m」ist・SctltemTcxtCi,L(char*)(_bstr_t)holder);
GctCollect(H性别"
m.list.SctItcmTcxt(i,2,(char*)(_bstr_t)ho1dcr);
GetCollectC1年龄”);
m」ist・SetltcmTcxtCi,3,(char*)(_bstr_t)holdcr);
holdcr=prst->
GetCollcct("
班级名”);
m」ist・SetItemText(i>
4,(char*)(_bstr.t)ho1der);
hoidcr=prst->
GetCollect(n年级名”);
m」ist・SctItcmText(i»
5,(char*)(_bstr.t)ho1der);
MoveNext();
Close();
{AfxMcssagcBox("
操作异常!
}}
3、修改学生资料信息
uixiatestuO
{UpdateDataO;
POSITIONpos=m_list.GetFirstSc1ccted11cniPosition();
if(pos==NULL){AfxMcssagcBox("
没有选中记录!
}if(m_stu_xh=="
)
{return;
CStringstrSql,stuxh,stuxm,stuxb,stunl,stuclass,stugratc;
m_STU_XH.GetWindowText(stuxh);
m„STU_XM.GetWindowTcxt(stuxm);
m^STU^XB.GctWindowText(stuxb);
m_STU_ML・GetWindowTcxt(stun1);
m.STU.CLVSSNAME.GctWindowText(stuclass);
m_STU_NIJINME.GetWindowText(stugrate);
try{strSql.Format(Mupdatev.studentset二'
%s,性别二'
%s,年龄二%d,班级名二'
%s"
年级名
='
%s'
where学号=%d\
stuxm,stuxb,atoi(stunl),stuclass,stugrate,atoi(stuxh));
一RccordsctPtr
prst=NULL:
prst・CreateInstance(_uuidof(Rccordsct));
prst=in_DBCnt->
Excciitc(_bstr_t(strSql),NULL,adCuidTcxt);
RcadstudcntO;
MessageBoxC*修改成功!
}catch(_errore){AfxMessagcBox(n操作异常或者是你所在的
用户组无此权限!
'
4、补考通知单
Rcadbukaotongzhi()
{m」ist・DclctcAl1ItcmsO;
_RccordsctPtrprst=NULL;
_bstr_tstrsqlC1select*fromv_bukaotongzhin);
inti=0;
{prst.CreateInstanccC_uuidof(Recordset)):
//McssagcBox(11D;
prst=m_DBCnt->
Execute(strsq1,NULL,adCmdTcxt);
.variantsholder;
whilc(!
{holder=prst->
GetCollect(,r学号八);
if(holder.vt!
m_list.Insertltem(i,(char*)(.bstr_t)holder);
holder=prst->
GetCollect('
rH);
if(holdcr.vt!
m^list.SetItemText(i,1,(char*)(_bstr.t)holdcr);
ho1der=prst->
GetCo11ectC班级名”);
if(holdcr.vt!
in_list・SctItcmText(i,2,(char*)(_bstr.t)holdcr);
GetCollect(n年级名"
m_list・SetItemText(i,3,(char*)(_bstr.t)holdcr);
ho1der=prst->
GetCollectC1课程号”);
m_list・SctltcmTextCi,4,(char*)(_bstr_t)holder);
GetCollectC1课程名”);
m_list・SctltcmTextCi,5,(char*)(_bstr_t)holder);
r学分八);
if(holder.vt!
=VTJULL)
m_list・SetItemText(i,6,(char*)(_bstr_t)holdcr);
GetCollect(n总评成绩”);
m_list・SctltcmTextCi,7,(char*)(_bstr_t)ho1dcr);
}prst->
catch(_errore){AfxMessagcBoxC1操作异常!
}}voidCMyDlg:
upbukaotongzhiO
{UpdatcDataO;
_RccordsetPtrprst=NULL;
prst.CreateInstance(_uuidof(Recordset));
POSITIONpos二GetFirstSelectcdltcniPosition();
if(pos==NULL){2\fxMessagcBox(n没有选中记录「);
CStringstrSql,xh,xm,classname,nijinamc,kch,kcni,xf,zpcj;
m_STU一XM.GetWindowText(xm);
m__STU.CLASSNAME.GctWindowText(classnamc);
m_STU_NIJINAME.GetWindowText(nijinanie);
m_KC_KCH.GctWindowText(kch);
m_KC_KCM・GctWindowText(kcin);
m_KC_XF.GetWindowTcxt(xf);
m_XXQK_XH・GetWindowText(xh);
m^XXQK_KCH.GetWindowTcxt(kch);
trylstrSql.FormatC1updatev^bukaotongzhiset二'
%s'
班级名二'
%s,年级名二'
%s,课程名二'
%s,学分=%f,where学号=%dand课程号=%s"
xin,classnaine,nijiname,kcm,atof(xf),atoi(xh),kch);
prst=m_DBCnt->
Execute(^bstr.t(strS<
il),NULL,adCmdTcxt);
Readbukaotongzhi();
MessageBox(n修改成功!
11);
{AfxMcssagcBoxC操作异常或者是你所在的用户组无此权限!
0nDel()
{CStringlb;
m_LB・GetLBTcxt(m_LB.GetCurSclO,lb);
if(lb==n学生资料"
)delstu();
if(lb==n课程表"
)delcourse();
if(lb=="
成绩表*'
)delsc();
班级资料"
)delclass();
if(lb==h年级资料n)delgrate();
if(lb==n补考通知单"
)de1bukaotongzhi();
5、删除学生信息
delstuO
{CStringslD,strsQL;
intitem;
^RccordsetPtrprst=NULL;
prst・CreateInstance(_uuidof(Rccordsct));
{_bstr_tstrsql(nselect*fromstudent"
);
if(!
B0F)
prst->
\lovcFirstO;
else
{AIxMcssageBoxC1表数扌居为空"
return;
POSITIONpos二m_list・GctFirstSe1ectcdItcinPosition();
if(pos=NULL)
{/\fxMessageBox(n没有选中记录F);
}elsewhile(pos){
itcnrm_1ist.GetNextSclcctcdltcm(pos);
slD二m_list・GctItcinTcxt(itcm,0);
if(Afx\lcssagcBoxC是否刪
除?
MB_YESNO)==IDYES)strsQL.Format("
deletefromv.studentwhere学号='
+sID+"
prst二m_DBCnt-〉Execute(一bstr_t(strsQL),NULL,adCindText);
}ReadstudentO;
}}
catch(_crrore){
AfxMessageBox(M^作异常或者是你所在的用户组无此权限!
dclsc()
{CStringsID,strsQL;
prst・CreateInstancc(_uuidof(Recordset));
{_bstr_tstrsql(nsclect*fromv_scf);
Execute(strsq1>
NULL,adCmdTcxt);
if(!
BOF)
MovcFirst();
e1se{AfxMessageBoxC11表数据为空”);
POSITIONpos=m„list.GctFirstSclectedIteinPositionO;
if(pos==NULL){AfxMcssagcBoxC没有选中记录!
{item二m_list・GetNextSc1ectedItcm(pos):
sID=m」ist.GetItcmText(itcm,0);
if(AfxMcssagcBoxC'
是否刪除?
”,MB_YESNO)==IDYES)
{strsQL.Format("
deletefromv_scwhere学号=%s\sID);
prst二m_DBCnt-〉Execute(一bstr_t(strsQL),NULL,adCmdText);
catch(_errore){
AfxMessagcBoxC撫作异常或者是你所在的用户组无此权限「);
ClcanO
m_LB.GctLBTcxt(m_LB.GetCurSclO,lb);
m_STU_XH.SetWindowTextC"
m_STU_XM.SetWindowTextC'
m_STU_XB.SetWindowTextC"
m_STU_NL.SetWindowTextC"
m_STU_CLASSN.\ME.SetWindowTextC"
m_STU_NIJINAME.SetWindowTextC*"
m_KC_KCH.SetWindowTextC'
}elsewhile(pos)
}RcadSCO;
}}
m_KC_KCM・SetWindowText(uH);
m_KC_RKLS.SctWindowTcxtC"
m_KC_XF.SetWindowText(,M,);
m_CLA_N/\ME.SctWindowTextC'
”);
m_CLVNIJINAME.SctWindowTextC"
m_CLA_NUM.SctWindowTextC*'
m_CLA_HEAD.SctWindowTextC'
m_XUQK_KSCJ.SctWindowTextC"
m_XXQK_XH.SctWindowTextC*'
m_XXQK_KCH.SctWindowTextC'
”);
m_XXQK_PSCJ.SctWindowTextC"
m_XXQK_BK.SetCheck(O);
m_GRATE_NAME.SctWindowText(nn);
m.G^TE.NUM.SctWindowTextC'
n);
m_GRATEJHEAD.SctWindowTextC1"
cxinitCCStrings)
m_LB.GetLBText(m_LB.GetCurSelO,lb);
LONG1Style=m_list.SendMessage
(LVM_GETEXTENDEDLISTVIEWSTYLE);
IStyle|=LVS_EX_FULLROWSELECTILVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDRO