教学管理系统Word格式文档下载.docx
《教学管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《教学管理系统Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
(2)系基本信息管理:
系的基本信息输入、修改、删除
(3)课程信息管理:
课程信息的输入、修改、删除
(4)教职工信息管理:
教职工信息的输入、修改、删除
(5)选课管理:
每学期所选课程的学分不能超过15分。
(创建触发器)
学生可以同时选修一门或多门课程。
可以同时为多个学生选修某一门或某几门课程。
删除和修改选课信息。
(6)成绩管理(视图)
按课程输入和修改成绩。
(查询选该门课程的学生)
按学生输入和修改成绩。
(查询该学生所选的课程)
(7)信息查询
按学号、姓名、系号查询学生基本信息。
按职工号、姓名、系号查询教职工基本信息。
按系号、系名称查询系的基本信息。
按课程号、课程名称、上课教师姓名查询课程基本信息。
按学号、学生姓名、课程号、课程名称、上课教师姓名、系号查询学生成绩,内容包括课程基本情况。
若查询涉及多门课程,则按课程分组。
每门课程按总评成绩从高分到低分给出选修该门课程的所有学生的成绩(平时成绩、考试成绩和总评成绩)。
(8)统计报表
成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)、选课学生名单(学号、姓名、性别),每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:
顺序输出所有课程的成绩登记表。
按课程号、课程名称、教师姓名输出对应课程的成绩登记表。
**按系号输出对应课程的成绩登记表(本系所有教师担任的课程)。
成绩报表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间),选课学生名单(学号、姓名、性别),每个学生的平时成绩、考试成绩和总评成绩,>
=90分、>
=80分、、>
=70分、>
=60分及不及格学生的人数及比例,按学号排序:
顺序输出所有课程的成绩报表。
(报表格式自己订制,可以参考学校的系统的输出格式)
按课程号、课程名称、教师姓名输出对应课程的成绩报表。
**按系号输出对应课程的成绩报表(本系所有教师担任的课程)
概念结构设计
表的设计
课程(课程号,课程名,职工号,学时,学分,上课时间,上课地点,考试时间)
主码:
课程号外码:
职工号
Course(Cno,Cname,Tno,Cperiod,Ccredit,Cbeigan,Caddress,Cexamtime)
系(系号,系名,系简介)
系号
Dept(Dno,Dname,Dintro)
学生(学号,姓名,性别,出生日期,入学成绩,系号)
学号外码:
系号
Student(Sno,Sname,Ssex,Sbirth,Senrolgrade,Dno)
教职工(职工号,姓名,性别,出生日期,职称,专业级教学方向,系号)
职工号外码:
Teacher(Tno,Tname,Tsex,Tbirth,Tjodtitle,Tprofession,Dno)
选课(学号,课程号,平时成绩,考试成绩,总成绩)
学号,课程号外码:
学号,课程号.
SC(Sno,Cno,Gordinary,Gexam,Gsum)
表的关系图
数据库结构:
课程表:
CREATETABLECourse(
Cnovarchar(12)NOTNULLPRIMARYKEY
CHECK(CnoLIKE'
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
),
Cnamevarchar(10)NULL,
CperiodsmallintNULL,
CcreditsmallintNULL,
Cbeiganvarchar(10)NULL
CHECK(CbeiganLIKE'
[0-9][0-9][-][0-9][0-9][0-9][0-9][-][0-9][0-9]'
Caddressvarchar(20)NULL,
Cexamtimevarchar
(2)NULL,
Tnovarchar(12)NULLREFERENCESTeacher(Tno)
ONUPDATECASCADEONDELETECASCADE,
)
系表:
CREATETABLEDept(
Dnovarchar(12)NOTNULLPRIMARYKEY
CHECK(DnoLIKE'
Dnamevarchar(20)NULL,
DintrontextNULL,
学生表:
CREATETABLEStudent(
Snovarchar(12)NOTNULLPRIMARYKEY
CHECK(SnoLIKE'
Snamevarchar(10)NULL,
Ssexchar
(2)NULL
CHECK(Ssex='
男'
ORSsex='
女'
SbirthDATETIMENULL,
SenrolgradesmallintNULL,
CHECK(Senrolgrade>
=0),
Dnovarchar(12)NULLREFERENCESDept(Dno)
职工表:
CREATETABLETeacher(
Tnovarchar(12)NOTNULLPRIMARYKEY
CHECK(TnoLIKE'
Tnamevarchar(10)NULL,
Tsexchar
(2)NULL
CHECK(Tsex='
ORTsex='
TbirthDATETIMENULL,
Tjobtitlevarchar(20)NULL,
Tprofessionvarchar(20)NULL,
学课和成绩表:
CREATETABLESC(
Snovarchar(12)NOTNULLREFERENCESStudent(Sno),
Cnovarchar(12)NOTNULLREFERENCESCourse(Cno),
GordinarysmallintNULLCHECK(Gordinary>
=0ANDGordinary<
=100),
GexamsmallintNULLCHECK(Gexam>
=0ANDGexam<
GsumAS(Gordinary*+Gexam*,
PRIMARYKEY(Sno,Cno),
创建的存储过程:
对Dept、Student、Teacher、Course表的删除
CREATEPROCdeleteByNo
@Novarchar(12),
@typesmallint=1
AS
begintransaction
IF@type=1
BEGIN
DELETEFROMDept
WHEREDno=@No;
END
IF@type=2
DELETEFROMTeacher
WHERETno=@No
END
IF@type=3
DELETEFROMStudent
WHERESno=@No
IF@type=4
DELETEFROMCourse
WHERECno=@No
COMMIT
添加系信息:
CREATEPROCInsertDept
@Dnovarchar(12),@Dnamevarchar(20),@Dintrontext
BEGINTRANSACTION
INSERTINTODept
VALUES(@Dno,@Dname,@Dintro)
添加学生信息:
CREATEPROCInsertStudent
@Snovarchar(12),@Snamevarchar(10),@Ssexchar
(2),@Sbirthdatetime,
@Senrolgradesmallint=0,@Dnovarchar(12)
INSERTINTOStudent
VALUES(@Sno,@Sname,@Ssex,@Sbirth,@Senrolgrade,@Dno)
添加课程信息:
CREATEPROCInsertCourse
@Cnovarchar(12),@Cnamevarchar(20),@Cperiodsmallint=0,@Ccredit
Smallint=0,@Cbeiganvarchar(10),@Caddressvarchar(20),@Cexamtimevarchar
(2),@Tnovarchar(12)
INSERTINTOCourse
VALUES(@Cno,@Cname,@Cperiod,@Ccredit,@Cbeigan,@Caddress,@Cexamtime,@Tno)
添加职工信息:
CREATEPROCInsertTeacher
@Tnovarchar(12),@Tnamevarchar(10),@Tsexchar
(2),@Tbirthdatetime,
@Tjobtitlevarchar(20),@Tprofessionvarchar(20),@Dnovarchar(12)
INSERTINTOTeacher
VALUES(@Tno,@Tname,@Tsex,@Tbirth,@Tjobtitle,@Tprofession,@Dno)
创建的视图:
CREATEVIEWChooseCourse(Sno,Sname,Cno,Cname,Ccredit)
SELECT,,,,
FROMStudent,Course,SC
WHERE=AND=
CREATEVIEWScore(Sno,Sname,Cno,Cname,Gordinary,Gexam,Gsum)
Select,Sname,,Cname,Gordinary,Gexam,Gsum
FromStudent,Course,SC
Where=AND=
创建的触发器
Createtriggerinsertchoose
onSC
FORinsert
as
declare@iint,@Snovarchar(12)
select@Sno=Sno
Frominserted
select@i=sum(Ccredit)
fromChooseCourse
where=@Sno
if(@i>
15)
begin
ROLLBACKTRANSACTION
RAISERROR('
你选修的学分大于15学分,请确认后选课'
16,1)
程序的详细设计
一、数据库操作类ADOCoon
enumType{CSTRING,INT1,};
classADOConn
{
public:
ADOConn();
virtual~ADOConn();
voidOnInitDBConnect();
_RecordsetPtr&
GetRecordSet(_bstr_tbstrSQL);
ExcuteStoreProc(CStringProcNmae,CString*Parameters,CString*Values,Type*type);
BOOLExecuteSQL(_bstr_tbstrSQL);
voidExitConect();
_ConnectionPtrGetConnection();
private:
_ConnectionPtrm_PConnection;
_RecordsetPtrm_PRecordPtr;
};
ADOConn:
:
ADOConn()
OnInitDBConnect();
}
~ADOConn()
ADOConn:
ExitConect();
voidADOConn:
OnInitDBConnect()
:
CoInitialize(NULL);
try
{
("
"
);
_bstr_tstrConnect="
Provider=SQLOLEDB;
IntegratedSecurity=SSPI;
PersistSecurityInfo=False;
InitialCatalog=ljx;
DataSource=(local)"
;
m_PConnection->
Open(strConnect,"
"
adModeUnknown);
}
catch(_com_errore)
AfxMessageBox());
_RecordsetPtr&
GetRecordSet(_bstr_tbstrSQL)
if(m_PConnection==NULL)
{
OnInitDBConnect();
}
(__uuidof(Recordset));
m_PRecordPtr->
Open(bstrSQL,(),adOpenDynamic,adLockOptimistic,adCmdText);
returnm_PRecordPtr;
BOOLADOConn:
ExecuteSQL(_bstr_tbstrSQL)
m_PConnection->
Execute(bstrSQL,NULL,adCmdText);
returnTRUE;
returnFALSE;
ExitConect()
if(m_PRecordPtr!
=NULL)
();
m_PConnection->
Close();
CoUninitialize();
ExcuteStoreProc(CStringProcNmae,CString*Parameters,CString*Values,Type*type)
_CommandPtrpCmd=NULL;
(__uuidof(Command));
pCmd->
ActiveConnection=m_PConnection;
CommandType=adCmdStoredProc;
CommandText=_bstr_t(ProcNmae);
Parameters->
Refresh();
while(*Parameters!
="
\0"
switch(*type)
{
caseCSTRING:
pCmd->
Item[_variant_t(_bstr_t(*Parameters))]->
Value=_variant_t(*Values);
Parameters++;
Values++;
type++;
break;
caseINT1:
{
CStringstr=*Values;
intmm=atoi(str);
Value=_variant_t((long)mm);
}
default:
}
m_PRecordPtr=pCmd->
Execute(NULL,NULL,adCmdStoredProc);
_ConnectionPtrADOConn:
GetConnection()
if(m_PConnection==NULL)
OnInitDBConnect();
returnm_PConnection;
二、登陆界面
响应登陆按钮的消息:
voidCMyDlg:
OnLogin()
ormat("
%d"
m_Grade);
type[4]=INT1;
str[5]=m_Dno;
type[5]=CSTRING;
voidCAddStudent:
GetString(CString*str)
str[0]=m_Sno;
str[1]=m_Name;
str[2]=Sex;
str[3]=m_Sbirth;
str[4].Format("
SetWindowCString(CString*Info)
if(Info==NULL)
return;
GetDlgItem(IDC_SNO)->
SetWindowText(Info[0]);
GetDlgItem(IDC_SNAME)->
SetWindowText(Info[1]);
if(Info[2]=="
男"
(1);
((CButton*)GetDlgItem(IDC_SEX2))->
SetCheck(0);
Sex="
else
(0);
SetCheck
(1);
女"
GetDlgItem(IDC_SBIRTH)->
SetWindowText(Info[3]);
GetDlgItem(IDC_GRADE)->
SetWindowText(Info[4]);
GetDlgItem(IDC_DNO)->
SetWindowText(Info[5]);
this->
Info=NULL;
SetCString(CString*info)
Info=info;
主程序添加功能的实现:
voidCAdminStudent:
OnAdd()
strVal;
str+="
\r\n"
str+="
性别"
str+=m_Rec->
GetCollect(_T("
Ssex"
)).bstrVal;
出生日期:
data=m_Rec->
Sbirth"
));
birth=COleDateTime(data);
(_T("
%d-%d-%d"
),(),(),());
str+=Sno;
入学成绩:
("
m_Rec->
Senrolgrade"
)).bstrVal);
所在系号:
Dno"
MessageBox(str);
(一)修改功能(UPDA