学生成绩管理系统数据库Word格式文档下载.docx
- 文档编号:18753598
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:19
- 大小:222.83KB
学生成绩管理系统数据库Word格式文档下载.docx
《学生成绩管理系统数据库Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据库Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
姓名
char(10)
ssex
性别
char
(2)
sage
年龄
int
(2)
sdept
系别
3.教师表(teacher)信息数据表,结构如下:
属性
tno
教师号
tsex
教师性别
tdept
教室系别
4.成绩表(grade)信息数据表,结构如下:
外部键
score
成绩
二.概念结构设计阶段
概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
设计成绩管理数据库包括学生、成绩、课程、教师四个关系。
因此可以得出E-R图如下所示:
三.逻辑结构设计阶段
逻辑结构是独立于任何一种数据模型的信息结构。
逻辑结构的任务是把概念结构设
计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。
E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模
式,如何确定这些关系模式的属性和码。
设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系,由系统E—R图
转化而得到的关系模式如下:
课程信息表
course:
(课程号,课程名,教师名,学分,学时)其中主关键字为课程号;
学生信息表
student:
(学号,姓名,性别,年龄,系别)其主关键字为学号;
教师表
teacher:
(教师号,教师名,教师性别,教师系别)其中主关键字为教师号;
成绩表
grade:
(学号,课程号,成绩)其中主关键字为学号和课程号。
四.物理设计阶段
数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。
数据库物理设计内容包括记录存储结构的设计,存储路径的设计。
4.1确定关系模型的存取方法
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。
可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。
在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:
在经常需要搜索的列上建立索引;
在主关键字上建立索引;
在经常用于连接的列上建立索引,即在外键上建立索引;
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。
才能充分利用索引的作用避免因索引引起的负面作用。
4.2确定数据库的存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
因为该成绩管理系统的数据量小,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排。
(1)创建学生基本信息表:
createtablestudent(
snochar(9)primarykey,
snamechar(10)notnull,
ssexchar
(2)notnull,
sageintnotnull,
sdeptchar(10)notnull,
)
(2)创建课程表:
createtablecourse(
cnochar(10)primarykey,
cnamechar(10)notnull,
tnamechar(10)notnull,
creditintnotnull,
ctimeintnotnull,
(3)创建成绩表:
createtablegrade(
snochar(9),
cnochar(10),
scoreint,
)
(4)创建教师表:
createtableteacher(
tnochar(10)primarykey,
tnamechar(10)notnull,
tsexchar
(2)notnull,
tdeptchar(10)notnull,
执行上述SQL语句即可创建成绩表相关表格
学生信息相关表格
090261001
张三
男
22
工商
090261002
李四
女
23
090361003
王五
男
数学系
093821004
赵六
女
计算机系
090021005
田七
20
人文系
课程信息相关表格
Cno
0301
数据库
001
1
24
0302
计算机网络
002
3
18
0303
系统结构
003
36
0304
组成原理
004
2
32
0305
数据结构
005
4
30
0306
操作系统
006
0307
数据库原理
007
5
0308
专业英语
008
45
0309
高数
009
35
成绩信息表
0306
85
90
86
82
84
81
93
79
94
74
教师信息表
卢亚君
财管
李昌明
张富强
刘翠杰
数统
王庆石
黄立明
王纲
计算机
徐伟丽
刘书霞
下图显示了学生,课程和成绩三个关系的物理设计其中课程号与学号号分别为关系的主码。
五.数据库实施和维护阶段
5.1数据库的连接:
此阶段主要任务包括创建数据库,加载初始数据,数据库试运行,数据库的安全性和完整性控制数据库的备份与恢复,数据库性能的监督分析和改仅,数据库的重组和重构等。
首先在数据库中建立一个学生成绩管理系统数据库,然后新建一个数据源。
主要代码如下:
#include"
stdafx.h"
StudentScore.h"
Course.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
//CCourse
IMPLEMENT_DYNAMIC(CCourse,CRecordset)
CCourse:
:
CCourse(CDatabase*pdb)
:
CRecordset(pdb)
{//{{AFX_FIELD_INIT(CCourse)
//}}AFX_FIELD_INIT
m_nDefaultType=snapshot;
CStringCCourse:
GetDefaultConnect()
{return_T("
ODBC;
DSN="
);
}
GetDefaultSQL()
"
voidCCourse:
DoFieldExchange(CFieldExchange*pFX)
{
//{{AFX_FIELD_MAP(CCourse)
pFX->
SetFieldType(CFieldExchange:
outputColumn);
//}}AFX_FIELD_MAP
//CCoursediagnostics
AssertValid()const
{CRecordset:
AssertValid();
Dump(CDumpContext&
dc)const
Dump(dc);
//MainFrm.h:
interfaceoftheCMainFrameclass
classCMainFrame:
publicCFrameWnd
{protected:
//createfromserializationonly
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
//Attributes
public:
//Operations
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CMainFrame)
virtualBOOLPreCreateWindow(CREATESTRUCT&
cs);
//}}AFX_VIRTUAL
//Implementation
virtual~CMainFrame();
protected:
//controlbarembeddedmembers
//CStatusBarm_wndStatusBar;
//CToolBarm_wndToolBar;
//Generatedmessagemapfunctions
//{{AFX_MSG(CMainFrame)
afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
afx_msgvoidOnPassword();
afx_msgvoidOnUser();
afx_msgvoidOnStudent();
afx_msgvoidOnTeach();
afx_msgvoidOnTeacher();
afx_msgvoidOnScore();
afx_msgvoidOnQueryTeach();
afx_msgvoidOnQueryScore();
afx_msgvoidOnCourse();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
//CScoreAddDlgdialog
CScoreAddDlg:
CScoreAddDlg(CWnd*pParent/*=NULL*/)
CDialog(CScoreAddDlg:
IDD,pParent)
{/{{AFX_DATA_INIT(CScoreAddDlg)
//}}AFX_DATA_INIT
voidCScoreAddDlg:
DoDataExchange(CDataExchange*pDX)
CDialog:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CScoreAddDlg)
DDX_Control(pDX,IDC_SCORE_STUDENT,m_cStudent);
DDX_Control(pDX,IDC_SCORE_SCORE,m_cScore);
DDX_Control(pDX,IDC_SCORE_COURSE,m_cCourse);
//}}AFX_DATA_MAP
BEGIN_MESSAGE_MAP(CScoreAddDlg,CDialog)
//{{AFX_MSG_MAP(CScoreAddDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
OnOK()
CStringstudent,course,score,student_no,course_no;
m_cStudent.GetWindowText(student);
m_cCourse.GetWindowText(course);
m_cScore.GetWindowText(score);
else//成绩不为空
{
CStringstrSQL;
//查出该学生的学号
strSQL.Format("
select*fromstudentwhereactive_status='
Y'
andstudent_name='
%s'
student);
CRecordsetm_recordSet=&
m_database;
m_recordSet.Open(CRecordset:
forwardOnly,strSQL);
m_recordSet.GetFieldValue("
student_no"
student_no);
m_recordSet.Close();
//查出该课程的课程号
strSQL.Format("
select*fromcoursewhereactive_status='
andcourse_name='
course);
course_no"
course_no);
;
BOOLCScoreAddDlg:
OnInitDialog()
OnInitDialog();
CRecordsetm_recordSet;
if(!
m_database.IsOpen())
m_database.Open(_T("
student"
));
m_recordSet.m_pDatabase=&
}
CStringstrSQL;
selectcourse_namefromcoursewhereactive_status='
m_recordSet.Open(CRecordset:
for(inti=0;
i<
m_recordSet.GetRecordCount();
i++){
CStringtemp;
m_recordSet.GetFieldValue("
course_name"
temp);
m_cCourse.AddString(temp);
m_recordSet.MoveNext();
m_recordSet.Close();
m_cCourse.SetCurSel
(1);
selectstudent_namefromstudentwhereactive_status='
for(intj=0;
j<
j++){
student_name"
m_cStudent.AddString(temp);
m_cStudent.SetCurSel
(1);
this->
SetWindowText("
成绩窗口"
returntrue;
OnCancel()
//TODO:
Addextracleanuphere
OnCancel();
5.2部分操作截图:
下图显示了学生登陆系统进行查询时界面:
下图显示了进行课程查询时界面:
5.3数据操作
5.3.1.数据库查询操作
A.单表查询:
(1)查询sno为090261001学生的sname
selectsname
fromstudent1
wheresno='
090261001'
(2)查询ssex为’女’并且sdept为’工商’的sname
fromstudent
wheressex='
女'
and
sdept='
工商'
(3)查询所有学生的姓名和系别。
selectsname,sdept
(4)查询系别为数学系的sname。
wheresdept='
数学系'
(5)查询所有学生所在院系名称
selectdistinctsdept
fromstudent
(6)查询学生信息表中年龄小于23和年龄大于21的学生的姓名和系别
selectsname,sdept
fromstudent
wheresage>
21orsage<
(7)查询所有学生的平均年龄
selectavg(sage)as平均年龄
fromStudent
B.连接查询
(1)学生的学号、姓名,所选课程的课程号、课程名和成绩、任课教师名
Selectstudent.sno,student.sname,o,ame,
course.score,teacher.tname
fromstudent,coure,grade,teacher
Wherestudent.sno=grade.snoando=oand
teacher.tno=course.tno
(2)找出教授数据库原理的老师的教师名
selectteacher.tname
fromcourse,teacher
Wherecourse.tno=teacher.tnoandame='
数据库原理'
C.操作结果集查询
查询090261002号同学和090261003号同学共同选修的课程
Selectcno
Fromgrade
Wheresno='
090261002'
Intersect
090261003'
D.嵌套查询
查询选修了0306这门课的所有学生的学号、姓名、年龄、院系
Selectsno,sname,sage,sdept
Fromstudent
Wheresnoin
(selectsno
Fromgrade
Wherecno=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 数据库