数据库学生成绩管理系统课程设计报告文档格式.docx
- 文档编号:20486885
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:12
- 大小:111.09KB
数据库学生成绩管理系统课程设计报告文档格式.docx
《数据库学生成绩管理系统课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《数据库学生成绩管理系统课程设计报告文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
(1)
能提供管理员及普通用户(除删除和修改)录入、注销、显示当前用户、修改、删除、查询、输出,学生的档案信息,这些信息包括学生的成绩、课程、个人信息等。
(2)触发器,索引,存储过程的建立及使用。
2.概念设计
(1)(E-R图)
(2)物理结构设计
Student
Column
Name
Date
Type
Width
空值情况
Sno
nchar
10
主关键字
Sname
nchar
不为空
Sex
Birthday
numeric
可为空
Address
Grade
Po;
itic
Cuture
Tel
Nchar
Cource
Type
Sno
Cno
Score
User
User_name
20
User_Pswd
User_Type
int
(3)分析关系模式
对于关系模式Student(Sno|Sname|Sex|Age|Address|Grade|class|Tel|Politic|Cuture)假定姓名也具有唯一性,那么Student
就有两个码,这两个码都由单个属性组成,彼此不相交。
其它属性不存在对码的传递依赖与部分依赖,又因为Student中除学号、姓名外没有其它的因素,所以Student属于BCNF。
对于关系模式Cource(|Sno|Cno|Score|)有两个码,这两个码都由单个属性组成,彼此不相交,其它属性不存在对码的传递依赖与部分依赖,又因为成绩中除学号、课程号外没有其它的决定因素,所以成绩属于BCNF。
对于关系模式User(|UserName|UserType|UserPswd|)中,它只有一个码,这里没有任何属性对课程号部分依赖或传递依赖,同时用户名是唯一的决定因素,所以课程属于BCNF。
它和学生信息和成绩没有直接的联系,因此它是一张单独的表。
3.SQL语句
3.1创建表
学生表
createtableStudent
(
Snonchar(10)primarykey,
Snamenchar(10)notnull
Sexnchar(10)notnull
Agenumeric(10)
Addressnchar(10)
Classnchar(10)notnull
Gradenchar(10)notnull
Telnchar(10)notnull
Politicnchar(10)notnull
Cuturenchar(10)notnull
)
成绩表
createtableExam
Snonchar(10)primarykey//主键约束
Cnonchar(10)Notnull
Scorenchar(10)
foreignkey(Cno)referencesCourse//外键约束
check(Score>
=0)//完整性约束
用户表
createtableTeacher
Usernamenchar(10)notnull
UserPswdnchar(10)notnull
UserTypenchar(10)notnull
3.2数据初始化
将学生类别加入表Student中
insertintoStudent
values('
000’,’张明’,’M’,’’,’哈尔滨’,’计科一班’,’大一’,’15880000’,
’无’,’群众’)
values('
001’,’李三’,’M’,’’,’长春’,’计科二班’,’大三’’15233000’.’无’,
’群众’)
002’,’王强’,’M’,’’,’哈尔滨’,’软件二班’,’大二’’15850040’.’无’,
003’,’张雪’,’F’,’’,’哈尔滨’,’软件一班’,’大一’’156809802’.’无’,
004’,’李力’,’M’,’’,’大连’,’软件一班’,’大三’’15980000’.’无’,
005’,’张小’,’M’,’’,’哈尔滨’,’软件三班’,’大一’’15884444’.’无’,
将考试类别加入Cource表中
insertintoCource
000'
'
A-123'
85'
)
001'
B-123'
77'
002'
C-123'
91'
003'
80'
insertintoCource
004'
75'
005'
89'
将课程加入User表中
insertintoUser
阿生'
921'
0'
insertintoUser
光光'
111'
1'
甜甜'
索引的使用
usestudent
createuniquenonclusteredindexindex_snoonStudent
(sno)
触发器
createtriggerreminder
onstudent
afterinsert,update
asraiserror('
你在插入或修改学生的数据'
16,10)
droptrigger‘reminder’
select*
fromStudent
wheresno=002
存储过程
createprocedureusp_getStudent
@namenchar(40)
as
select*fromStudentwhereSname=@name
执行存储过程
executeusp_getStudent'
张明'
4、SQL与C++结合(可视化的界面管理)
1、准备创建好的数据库,创建数据源
在创建数据库的应用程序之前,必须有一个可供应用程序使用的数据库。
2、
(1)建立了数据库之后,必须配备ODBC数据源,使其指向刚刚建立的数据库。
选择“控制面板”中“管理工具”下的“数据源(ODBC)”项。
双击ODBC图标,弹出“ODBC数据源管理器”对话框。
在这里用户可以设置ODBC数据源的一些信息,其中的“用户DSN”选项卡是用户定义的在本地计算机上使用的数据源名(DSN),
(2)为新的数据源选择数据库驱动程序。
由于使用的是Access数据库,所以选择Driver
doMicrosoftAccess(*.mdb)选项,并单击“完成”按钮。
(3)“ODBCMicrosoftAccess安装”对话框中,为该数据源起一
个简短的名称。
本例为TeacherDB,可以在下一个编辑框中输入对该数据库的说明。
(4)指定数据库的位置。
单击“选择”按钮,然后指定所创建的Access数据库。
(5)单击“确定”按钮,刚才创建的用户数据源被添加在“用户DSN”选项卡的“用
户数据源”列表框中。
3.创建MFCAppWizard应用程序
用MFCAppWizard(exe)创建一个对话框应用程序TeacherMIS。
为了使程序能支持数据库对象,在头文件stdafx.h中加入#include<
afxdb.h>
。
4.用ClassWizard为数据库中的每一个表映射一个记录集类
首先为表Users映射记录集类CUserSet。
打开项目工作区的ClassView选项卡,
选择项目名称,右击,弹出快捷菜单,选择NewClass命令弹出的NewClass对话框,输入记录集类名称CUserSet,并为其选择基类CRecordset,单击OK按钮,弹出的DatabaseOptions对话框,为记录集类选择ODBC数据源TeacherDB,单击OK按钮,弹出SelectDatabaseTables对话框,为记录集类选择数据库表Users,单击OK按钮,即完成记录集类CUserSet的定义。
5、根据类属性之间的关系添加如下类:
6、C++中实现对数据库的管理(及增加、删除、修改、查找、退出)
(1)增加:
voidCScore:
:
OnBUTTONAdd()
strSQL.Format("
insertintoScoreVALUES('
%s'
)"
m_sno,m_cno,m_score);
DoExecuteSQL(strSQL);
(2)删除:
CScore:
OnBUTTONDel()
deletefromScorewhereSNO='
andCNO='
"
m_sno,m_cno);
DoExecuteSQL(strSQL);
(3)修改:
OnBUTTONEdit()
UpdateScoreSETCNO='
SCORE='
wheresno='
andcno='
andscore='
m_cno,m_score,save_sno,save_cno,save_score);
(4)查找:
voidCSore:
OnBUTTONFind()
select*fromteacherswhere%s='
"
strField,
m_FieldValue);
(5)退出:
OnCancel()
CDialog:
OnCancel();
(6)显示当前用户:
m_corr_user=login.GetUserNm();
(7)注销:
voidCTeacherMISDlg:
OnLogout()
m_score.Close();
CDialog:
CLoginDlglogin;
login.SetUser();
login.DoModal();
7、运行截图
(1)用户登录:
(2)学生信息管理系统:
3、成绩管理系统:
5、设计中遇到的问题及心得
在设计中遇到的几个问题:
1、关系图的连接:
当数据库创建的时候没把他们的关系图连接起来,导致在投影时出问题,查询的时候也出现了错误
2、删除时错误:
在删除操作的时候,由于没考虑表之间的关系,和删除次序。
导致了一张表的数据元素删除了,而另外一张的任然存在。
3、对同一学生插入同一课程号:
刚开始的思想是使用notin进行判断该记录是否存在,再插入我用的下面的这句语句strSQL.Format("
insertintoSCVALUES('
)where'
notin(selectcnofromSCwhere'
=SNO)"
m_sno,m_cno,m_score,m_cno,m_sno);
结果未能实现禁止对对统一学生插入统一课程号。
几番周折后还是没能看出问题的所在。
一是我便自己写了一个判断的FindScore函数,来判断是否表中又该记录决定插入与否。
通过此函数也能解决这个问题。
这个学生成绩管理系统实现了管理的基本功能,此外我还添加了一些小的功能。
但是这个系统任然有些不足和漏洞,比如软件代码交冗余、效率不高等等随着学习的深入讲不断地完善它。
【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 学生 成绩管理系统 课程设计 报告