教学管理系统.docx

上传人:b****6 文档编号:5591232 上传时间:2022-12-28 格式:DOCX 页数:20 大小:88.63KB
下载 相关 举报
教学管理系统.docx_第1页
第1页 / 共20页
教学管理系统.docx_第2页
第2页 / 共20页
教学管理系统.docx_第3页
第3页 / 共20页
教学管理系统.docx_第4页
第4页 / 共20页
教学管理系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

教学管理系统.docx

《教学管理系统.docx》由会员分享,可在线阅读,更多相关《教学管理系统.docx(20页珍藏版)》请在冰豆网上搜索。

教学管理系统.docx

教学管理系统

教学管理系统

系统设计

设计目标

减轻教学日常信息管理的负担,方便学生、教师查询信息和学校对所有信息的管理。

以简单便捷的操作获取详尽的信息。

设计思路

在日常的教学管理活动中主要涉及:

1、教职工和学生的信息管理

2、学生的成绩管理、查询、统计

3、教师查询自己教授学生的信息和成绩的录入修改

4、各门课程的安排和信息查询

对日常教学管理活动的分析后,对各种信息统一规范整理,实现各种信息的自动管理。

为便于信息的查询,找出各种信息的关联性,根据各种需求设计出合理的报表。

在管理上详细区分学生、教师、管理员三者各自拥有的权限,和他们不同的需求,仔细考虑他们的不同点,合理整理信息,确保各自的需求得到最大化满足

功能模块

主要分为四大模块:

1、用户账户的区分和管理

2、学生系统

3、教师系统

4、管理员系统

其详细功能如图:

 

数据库设计

数据库需求分析

1)信息需求:

(1)学生信息:

学号、姓名、性别、出生日期、入学成绩、所在系号。

(2)教职工信息:

职工号、姓名、性别、出身年月、所在系号、职称、专业及教学方向。

(3)系的基本信息:

系号、系名称、系的简介。

(4)课程信息:

课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间。

(5)成绩信息:

学号、课程号、平时成绩、考试成绩、总评成绩。

2)处理需求:

(1)学生基本信息管理

新生信息录入。

学生信息修改:

按学号查询出某学生的信息并做信息修改。

**学生转学(转入和转出),学生毕业等。

毕业和转学的学生有关信息存储到历史库中。

(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'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),

Dnamevarchar(20)NULL,

DintrontextNULL,

学生表:

CREATETABLEStudent(

Snovarchar(12)NOTNULLPRIMARYKEY

CHECK(SnoLIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),

Snamevarchar(10)NULL,

Ssexchar

(2)NULL

CHECK(Ssex='男'ORSsex='女'),

SbirthDATETIMENULL,

SenrolgradesmallintNULL,

CHECK(Senrolgrade>=0),

Dnovarchar(12)NULLREFERENCESDept(Dno)

ONUPDATECASCADEONDELETECASCADE,

职工表:

CREATETABLETeacher(

Tnovarchar(12)NOTNULLPRIMARYKEY

CHECK(TnoLIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),

Tnamevarchar(10)NULL,

Tsexchar

(2)NULL

CHECK(Tsex='男'ORTsex='女'),

TbirthDATETIMENULL,

Tjobtitlevarchar(20)NULL,

Tprofessionvarchar(20)NULL,

Dnovarchar(12)NULLREFERENCESDept(Dno)

ONUPDATECASCADEONDELETECASCADE,

学课和成绩表:

CREATETABLESC(

Snovarchar(12)NOTNULLREFERENCESStudent(Sno),

Cnovarchar(12)NOTNULLREFERENCESCourse(Cno),

GordinarysmallintNULLCHECK(Gordinary>=0ANDGordinary<=100),

GexamsmallintNULLCHECK(Gexam>=0ANDGexam<=100),

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

BEGIN

DELETEFROMTeacher

WHERETno=@No

END

IF@type=3

BEGIN

DELETEFROMStudent

WHERESno=@No

END

IF@type=4

BEGIN

DELETEFROMCourse

WHERECno=@No

END

COMMIT

添加系信息:

CREATEPROCInsertDept

@Dnovarchar(12),@Dnamevarchar(20),@Dintrontext

AS

BEGINTRANSACTION

INSERTINTODept

VALUES(@Dno,@Dname,@Dintro)

COMMIT

添加学生信息:

CREATEPROCInsertStudent

@Snovarchar(12),@Snamevarchar(10),@Ssexchar

(2),@Sbirthdatetime,

@Senrolgradesmallint=0,@Dnovarchar(12)

AS

BEGINTRANSACTION

INSERTINTOStudent

VALUES(@Sno,@Sname,@Ssex,@Sbirth,@Senrolgrade,@Dno)

COMMIT

添加课程信息:

CREATEPROCInsertCourse

@Cnovarchar(12),@Cnamevarchar(20),@Cperiodsmallint=0,@Ccredit

Smallint=0,@Cbeiganvarchar(10),@Caddressvarchar(20),@Cexamtimevarchar

(2),@Tnovarchar(12)

AS

BEGINTRANSACTION

INSERTINTOCourse

VALUES(@Cno,@Cname,@Cperiod,@Ccredit,@Cbeigan,@Caddress,@Cexamtime,@Tno)

COMMIT

添加职工信息:

CREATEPROCInsertTeacher

@Tnovarchar(12),@Tnamevarchar(10),@Tsexchar

(2),@Tbirthdatetime,

@Tjobtitlevarchar(20),@Tprofessionvarchar(20),@Dnovarchar(12)

AS

BEGINTRANSACTION

INSERTINTOTeacher

VALUES(@Tno,@Tname,@Tsex,@Tbirth,@Tjobtitle,@Tprofession,@Dno)

COMMIT

创建的视图:

CREATEVIEWChooseCourse(Sno,Sname,Cno,Cname,Ccredit)

AS

SELECT,,,,

FROMStudent,Course,SC

WHERE=AND=

CREATEVIEWScore(Sno,Sname,Cno,Cname,Gordinary,Gexam,Gsum)

AS

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)

END

程序的详细设计

一、数据库操作类ADOCoon

enumType{CSTRING,INT1,};

classADOConn

{

public:

ADOConn();

virtual~ADOConn();

voidOnInitDBConnect();

_RecordsetPtr&GetRecordSet(_bstr_tbstrSQL);

_RecordsetPtr&ExcuteStoreProc(CStringProcNmae,CString*Parameters,CString*Values,Type*type);

BOOLExecuteSQL(_bstr_tbstrSQL);

voidExitConect();

_ConnectionPtrGetConnection();

private:

_ConnectionPtrm_PConnection;

_RecordsetPtrm_PRecordPtr;

};

ADOConn:

:

ADOConn()

{

OnInitDBConnect();

}

ADOConn:

:

~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&ADOConn:

:

GetRecordSet(_bstr_tbstrSQL)

{

try

{

if(m_PConnection==NULL)

{

OnInitDBConnect();

}

(__uuidof(Recordset));

m_PRecordPtr->Open(bstrSQL,(),adOpenDynamic,adLockOptimistic,adCmdText);

}

catch(_com_errore)

{

AfxMessageBox());

}

returnm_PRecordPtr;

}

BOOLADOConn:

:

ExecuteSQL(_bstr_tbstrSQL)

{

try

{

if(m_PConnection==NULL)

{

OnInitDBConnect();

}

m_PConnection->Execute(bstrSQL,NULL,adCmdText);

returnTRUE;

}

catch(_com_errore)

{

AfxMessageBox());

returnFALSE;

}

}

voidADOConn:

:

ExitConect()

{

if(m_PRecordPtr!

=NULL)

{

();

}

m_PConnection->Close();

:

:

CoUninitialize();

}

_RecordsetPtr&ADOConn:

:

ExcuteStoreProc(CStringProcNmae,CString*Parameters,CString*Values,Type*type)

{

_CommandPtrpCmd=NULL;

try

{

if(m_PConnection==NULL)

{

OnInitDBConnect();

}

(__uuidof(Command));

(__uuidof(Recordset));

pCmd->ActiveConnection=m_PConnection;

pCmd->CommandType=adCmdStoredProc;

pCmd->CommandText=_bstr_t(ProcNmae);

pCmd->Parameters->Refresh();

while(*Parameters!

="\0")

{

switch(*type)

{

caseCSTRING:

pCmd->Parameters->Item[_variant_t(_bstr_t(*Parameters))]->Value=_variant_t(*Values);

Parameters++;

Values++;

type++;

break;

caseINT1:

{

CStringstr=*Values;

intmm=atoi(str);

pCmd->Parameters->Item[_variant_t(_bstr_t(*Parameters))]->Value=_variant_t((long)mm);

Parameters++;

Values++;

type++;

break;

}

default:

break;

}

}

m_PRecordPtr=pCmd->Execute(NULL,NULL,adCmdStoredProc);

}

catch(_com_errore)

{

AfxMessageBox());

}

();

returnm_PRecordPtr;

}

_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("%d",m_Grade);

str[5]=m_Dno;

}

voidCAddStudent:

:

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);

((CButton*)GetDlgItem(IDC_SEX2))->SetCheck

(1);

Sex="女";

}

GetDlgItem(IDC_SBIRTH)->SetWindowText(Info[3]);

GetDlgItem(IDC_GRADE)->SetWindowText(Info[4]);

GetDlgItem(IDC_DNO)->SetWindowText(Info[5]);

this->Info=NULL;

}

voidCAddStudent:

:

SetCString(CString*info)

{

this->Info=info;

}

主程序添加功能的实现:

voidCAdminStudent:

:

OnAdd()

{

strVal;

str+="\r\n";

str+="性别";

str+=m_Rec->GetCollect(_T("Ssex")).bstrVal;

str+="\r\n";

str+="出生日期:

";

data=m_Rec->GetCollect(_T("Sbirth"));

birth=COleDateTime(data);

(_T("%d-%d-%d"),(),(),());

str+=Sno;

str+="\r\n";

str+="入学成绩:

";

("%d",m_Rec->GetCollect(_T("Senrolgrade")).bstrVal);

str+=Sno;

str+="\r\n";

str+="所在系号:

";

str+=m_Rec->GetCollect(_T("Dno")).bstrVal;

MessageBox(str);

}

}

}

(一)修改功能(UPDA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1