《数据库系统概论》课程设计.docx
- 文档编号:9900537
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:22
- 大小:265.78KB
《数据库系统概论》课程设计.docx
《《数据库系统概论》课程设计.docx》由会员分享,可在线阅读,更多相关《《数据库系统概论》课程设计.docx(22页珍藏版)》请在冰豆网上搜索。
《数据库系统概论》课程设计
《数据库系统概论》课程设计
姓名:
学号:
学院:
班级:
指导老师:
1、绪论
2、系统需求分析与设计
3、系统实施
4、总结
5、代码
1绪论
1.1概述
通过数据库概论这门课程的学习,开发一个简单具有使用意义的学生成绩管理系统来对学校日常教学管理中的课程、选课、学生、教师、成绩等相关内容进行分析,完成具有学生管理、成绩管理、课程管理等相关功能的小型数据库管理应用系统。
1.2开发环境
(1)本系统采用MicrosoftVisualC++6.0作为开发工具,C++为开发语言,采用Oracle9i版本数据库管理系统建立数据库,先在Oracle中设计并制作各部分需要调用的数据库,并进行初始数据的输入,再进行界面的设计和事件代码的编写。
(2)学生成绩管理系统研究意义
随着学校的扩大和发展,学生成绩管理系统是一个教育单位不可缺少的部分,它对于学校的学生和管理者来说都是至关重要的,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理成绩系统,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化、正规化管理,是与世界接轨的重要条件。
2系统需求分析与设计
2.1用户需求分析
2.1.1用户需求
要求不同的实体(学生、教师和管理员)登录系统后,能够进行合理范围的内的对数据库中的数据进行操作。
2.1.2系统功能需求
1.学生:
查询每一门课程的成绩;查询所有课程的平均成绩;查询所有选课信息;修改密码。
2.教师:
添加学生成绩;修改学生成绩;查询学生成绩(按条件查询);查询所有授课信息;修改密码。
3:
管理员:
增删改查学生信息;增删改查教师信息;增删改查课程信息。
2.1.3数据分析
学生表:
学号,姓名,性别,年龄,班级,电话,学院,登录初始密码;
教师表:
教师号,姓名,性别,年龄,职称,电话,登录初始密码;
课程表:
课程号,课程名;
学生选课表:
学号,课程号,教师号,成绩;
教师授课表:
教师号,课程号,教室,时间;
2.2实验设计
·2.2.1实验要求
基本操作(数据的增删查改)的实现方式;
界面设计的整体效果;
学生信息\成绩记录等的模糊查询功能;
方便批量输入成绩;
底层架构设计如三层架构(请参考动软自动生成的三层程序模型);
·2.2.2设计思路
1.创建数据库,了解该系统的需求,明白数据库需要建立多少表及各个表之间的联系。
2.创建主体框架,主要分为3个界面,用户登录后分别登录到管理员界面和老师界面和学生界面
3.通过需求的分析,明白各个用户的功能,分别创建不同窗体。
4.建立界面和数据库之间的连接,把各个功能分别绑定到数据库的各个表中。
5.实现增加,删除,修改,查看等功能。
2.3数据库设计
2.3.1系统E-R图
2.3.2数据库逻辑结构设计
学生表:
Student(SNo,SName,SSex,SAge,SClass,SPhone,SDept,SCode);
教师表:
Teacher(TNo,TName,TSex,TAge,TPosition,TPhone,TDept,TCode);
课程表:
Course(CNo,CName,CType,CTime);
学院信息表:
Dept(DName,DPhone);
教师授课表:
Teach(TNo,CNo,TRoom,TTime);
学生选课表:
Score(SNo,CNo,TNo,Score);
3系统实施
3.1建立数据库
Student表
CreatetableStudent(
SNochar(10),
SNamevarchar2(10)notnull,
SSexvarchar2
(2)notnull,
SAgenumber
(2),
SClassvarchar2(10)notnull,
SPhonevarchar2(12),
SDeptvarchar2(20)notnull,
SCodevarchar2(20)notnull,
constraintstudent_pkPRIMARYKEY(SNo),
constraintstudent_SSexCHECK(SSexin('男','女')),
constraintstudent_SAgeCHECK(SAge>=15andSAge<=30),
constraintstudent_SDept_fkFOREIGNKEY(SDept)ReferencesDept(DName)ondeletecascade);
Teacher表
CreatetableTeacher(
TNochar(5),
TNamevarchar2(10)notnull,
TSexvarchar2
(2)notnull,
TAgenumber
(2),
TPositionvarchar2(10),
TPhonevarchar2(12),
TDeptvarchar2(20)notnull,
TCodevarchar2(20)notnull,
constraintteacher_pkPRIMARYKEY(TNo),
constraintteacher_TSexCHECK(TSexin('男','女')),
constraintteacher_TAgeCHECK(TAge>=23andTAge<=70),
constraintteacher_TDept_fkFOREIGNKEY(TDept)ReferencesDept(DName)ondeletecascade);
Course表
CreatetableCourse(
CNochar(10),
CNamevarchar2(40)notnull,
CTypevarchar2(4)notnull,
CTimenumber
(2)notnull,
constraintcourse_pkPRIMARYKEY(CNo),
constraintcourse_CTypeCHECK(CTypein('PUBB','PUBO','PROB','PROO')),
constraintcourse_CTimeCHECK(CTime>=5andCTime<=18));
Teach表
CreatetableTeach(
TNochar(5),
CNochar(10),
TClassRoomvarchar2(12)notnull,
TTimevarchar2(12)notnull,
constraintteach_pkPRIMARYKEY(TNo,CNo),
constraintteach_TNo_fkFOREIGNKEY(TNo)ReferencesTeacher(TNo)ondeletecascade,
constraintteach_CNo_fkFOREIGNKEY(CNo)ReferencesCourse(CNo)ondeletecascade);
Score表
CreatetableScore(
SNochar(10),
CNochar(10),
TNochar(5),
Scorenumber(5,2),
constraintscore_pkPRIMARYKEY(SNo,CNo),
constraintscore_ScoreCHECK(Score>=0andScore<=100),
constraintscore_SNo_fkFOREIGNKEY(SNo)ReferencesStudent(SNo)ondeletecascade,
constraintscore_CNo_fkFOREIGNKEY(CNo)ReferencesCourse(CNo)ondeletecascade,
constraintscore_TNo_fkFOREIGNKEY(TNo)ReferencesTeacher(TNo)ondeletecascade);
3.3主要模块实施
3.3.1学生成绩管理系统各界面
系统登录界面:
学生登录功能:
教师登录功能:
管理员登录功能:
3.4系统测试
学生部分功能实现结果:
教师部分功能实现结果:
管理员部分功能实现结果:
查询学生信息:
修改教师信息:
删除教师信息:
(下图中已经删除教师号为001的教师信息)
4总结
课程设计过程中,基本完成了一下功能:
连接数据库,增加数据库表中的记录,删除数据库表中的记录,修改记录,查询记录(按条件查询)。
此次课程设计让我在数据库编程方面有了一定的认识,并且通过实际动手实验加深了对这一方的认识,了解了数据库应用系统的基本知识和开发步骤:
需求分析、概念模式设计、逻辑结构设计、物理实施和系统测试阶段。
本系统在目前的调试中,基本达到了当初的设计要求,设计上基本合理,能够做到对学生信息的查询,删除,添加,修改等基本功能。
由于各种原因,我们设计的学生信息管理系统只完成了几个主要的功能实现,还存在着一些问题有待解决,系统设计的还不够精致同时也存在着很多的不足与缺陷,这还需要更我们进一步的完善。
首先是老师的录入功能,这个功能应当设计在老师系统管理内部,以保证其安全性,控制其录入范围,因此老师一般是不可以初测的,这就保证了管理系统的安全性、保密性。
其次是学生的信息,在这个部分中信息并不全面,只是最基本的信息,主要是完成了对学生学籍,课程,成绩和其他一些基本信息的操作。
而没有对学生的退学,转学的功能进行考虑。
在这个学生管理系统的页面设计中,也有许多的不足,页面设计很不够精致,这些都需要去完善的。
5部分代码:
登录模块
voidCStudentScoreManageDlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
GetDlgItemText(IDC_EDIT_USERNAME,m_username);
GetDlgItemText(IDC_EDIT_PASSWORD,m_password);
intmatch_flag=0;//用户名匹配标志,0表示不匹配,即数据库中没有找到该用户名
CStringusername;//接受数据库中的相关字段
CStringpassword;
//连接数据库,查询用户名(SNo或TNo)和数据库表中的数据是否匹配
CDatabasedb;
CRecordsetset(&db);
if(!
db.OpenEx("DSN=StuScore;SERVER=FXC;UID=U74115;PWD=fxc123;",0))
{
MessageBox("数据库连接失败!
","错误提示",MB_OK|MB_ICONERROR);
return;
}
//根据选择的登录身份来查找用户,从而和输入的用户名进行匹配
if(1==m_id)
{
set.Open(AFX_DB_USE_DEFAULT_TYPE,"selectrtrim(sno),scodefromSTUDENT");
}
elseif(2==m_id)
{
set.Open(AFX_DB_USE_DEFAULT_TYPE,"selectrtrim(tno),tcodefromTEACHER");
}
elseif(3==m_id)
{
}
else
{
MessageBox("请选择登录身份!
","提示",MB_OK);
return;
}
if(1==m_id||2==m_id)
{
//set.MoveFirst();
while(!
set.IsEOF())
{
set.GetFieldValue((short)0,username);
if(m_username==username)
{
set.GetFieldValue((short)1,password);
match_flag=1;//是否匹配反映在标志变量match_flag上
break;
}
else{}
set.MoveNext();
}
}
if(0==match_flag&&3!
=m_id)
{
MessageBox("没有找到该用户!
",MB_OK);
return;
}
//根据m_id登录不同界面
if(1==m_id)
{
if(m_password==password)
{
//MessageBox("学生登录");
CStudentDlgStuDlg;
StuDlg.m_sno=m_username;//传递用户名和密码
StuDlg.m_scode=m_password;
StuDlg.DoModal();
}
else
{
MessageBox("密码不正确!
","提示",MB_OK);
return;
}
}
elseif(2==m_id)
{
if(m_password==password)
{
//MessageBox("教师登录");
CTeacherDlgTeaDlg;
TeaDlg.m_tno=m_username;
TeaDlg.m_tcode=m_password;
TeaDlg.DoModal();
}
else
{
MessageBox("密码不正确!
","提示",MB_OK);
return;
}
}
elseif("Manager"==m_username)
{
if("temp"==m_password)
{
//MessageBox("管理员登录");
CManagerDlgManagerDlg;
ManagerDlg.DoModal();
}
else
{
MessageBox("管理员名称或密码输入不正确!
","提示",MB_OK);
return;
}
}
else
{
MessageBox("该用户不存在或不是管理员!
","提示",MB_OK);
return;
}
set.Close();
db.Close();
CDialog:
:
OnOK();
}
教师添加学生成绩模块:
voidCTeacherDlg:
:
OnAddSocre()//添加成绩
{
//TODO:
Addyourcontrolnotificationhandlercodehere
GetDlgItemText(IDC_EDIT_SNO,m_sno);
GetDlgItemText(IDC_EDIT_CNO,m_cno);
GetDlgItemText(IDC_EDIT_SCORE,m_score);
//先判断课程号是否正确,即该教师是否教授该门课程
CDatabasedb;
db.OpenEx("DSN=StuScore;Server=FXC;UID=U74115;PWD=fxc123;",0);
CRecordsetset(&db);
CStringptno=m_tno;
ptno+="'";
set.m_strFilter="tno='"+ptno;
//MessageBox(set.m_strFilter);//测试查询条件
set.Open(AFX_DB_USE_DEFAULT_TYPE,"selectrtrim(cno)fromteach");//选出教师号为m_tno的教师所教课程的课程号
intmatch_flag=0;//课程号是否匹配
CStringcno;
set.MoveFirst();
while(!
set.IsEOF())
{
set.GetFieldValue((short)0,cno);
if(cno==m_cno)
{
match_flag=1;
//MessageBox("该课程号满足要求",MB_OK);
break;
}
else
{
set.MoveNext();
}
}
set.Close();//关闭此结果集
if(0==match_flag)//输入课程号不正确,则退出
{
m_list.DeleteAllItems();
MessageBox("您输入的课程号不满足要求,即您没有教授此门课程!
故不能添加此门课程的学生成绩信息!
","提示",MB_OK);
return;
}
//课程号满足过后,则根据输入的学号和成绩来添加记录到Score表中
if(m_sno.IsEmpty())
{
MessageBox("请输入要添加成绩记录的学生学号!
","提示",MB_OK);
GetDlgItemText(IDC_EDIT_SNO,m_sno);
}
//输入学号和课程号后,检测该学生有没有选修其他老师的该门课程,若有,则提示信息并退出
CStringpcno=m_cno;
pcno+="'";
set.m_strFilter="cno='"+pcno;
set.Open(AFX_DB_USE_DEFAULT_TYPE,"Selectrtrim(sno)fromscore");
CStringpsno;
intsno_flag=0;
while(!
set.IsEOF())
{
set.GetFieldValue((short)0,psno);
if(psno==m_sno)
{
sno_flag=1;
break;
}
else
{
set.MoveNext();
}
}
if(1==sno_flag)
{
MessageBox("该学号已经存在成绩记录!
","提示",MB_OK);
return;
}
//利用CScoreSet类来添加记录
CScoreSetScoreSet;
ScoreSet.Open(AFX_DB_USE_DEFAULT_TYPE,"Select*fromscore");
ScoreSet.AddNew();
ScoreSet.m_SNO=m_sno;
ScoreSet.m_CNO=m_cno;
ScoreSet.m_TNO=m_tno;
ScoreSet.m_SCORE=m_score;
if(ScoreSet.Update())
{
MessageBox("添加记录成功!
","提示",MB_OK);
}
//ScoreSet.Requery();
ScoreSet.Close();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库系统概论 数据库 系统 概论 课程设计