数据库选课管理系统课程设计.docx
- 文档编号:11054262
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:102
- 大小:2.49MB
数据库选课管理系统课程设计.docx
《数据库选课管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库选课管理系统课程设计.docx(102页珍藏版)》请在冰豆网上搜索。
数据库选课管理系统课程设计
学生选课管理系统
设
计
报
告
信息1420
学号:
1130502142029
姓名:
***
课题:
学生选课管理系统
一.概要分析
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式。
1.数据库设计的目标
目标是在DBMS支持下,按照应用的要求,为某一应用设计一个结构合理、使用方便、效率较高的数据库及其应用系统。
2.数据库设计的特点
·数据库建设是硬件、软件和干件的结合。
·数据库设计过程是结构设计和行为设计的密切结合。
3.数据库设计的过程
Ø需求分析阶段:
可行性分析报告
系统需求用户的需求具体体现在选课信息和用户信息的提供、保存、更新和查询的方面。
这就要求数据库的设计必须合理,使之能够充分满足各种信息的输入和输出,保证数据存储的可靠性,并且能够快速取出和存入。
而前台显示部分,应具有人性化的界面,方便用户操作。
功能需求
Ø概念模型设计阶段:
ER模型
局部概念模式设计
步骤:
·选择局部应用:
选择一个适当层次的数据流图。
·逐一设计局部ER模型:
定义实体、联系、分配属性、确定实体标识符。
全局概念模式设计
步骤:
·合并:
集成为一个整体的数据概念模型即全局ER模型。
·消除冲突:
属性冲突、命名冲突、结构冲突。
优化
·消除冗余:
合并相关类型实体,消除冗余属性、冗余联系。
·消除冗余的方法:
数据字典中数据项间逻辑关系的说明,规范化理论。
Ø逻辑模型设计阶段:
关系模型
⏹ER模型向关系模型的转换
学生(学号,姓名,性别,班级,出生日期,地址,电话,email)
课程(课程号,课程名,学分)
选课(课程号,学号,成绩)
⏹数据模型的优化和规范处理
Ø数据库物理设计阶段:
数据库
Ø数据库实施阶段:
程序调试
Ø数据库运行和维护阶段:
程序运行
二.数据库设计
使用工具:
SQLServer2000
目的要求:
掌握SQLServer2000数据库、表的创建
操作步骤:
1.建立数据库
(1)启动数据库服务管理器。
(2)启动企业管理器。
(3)以登录账户sa注册数据库服务器“59.74.104.180”,密码为sa。
(4)使用SQL-EM:
SQL-EM→数据库→右键→新建数据库:
数据库名xx1420,设计数据库文件.MDF和.ndf文件
2.建立表结构
(5)启动数据库服务管理器。
(6)启动企业管理器。
(7)以登录账户sa注册数据库服务器“59.74.104.180”,密码为zzj。
(8)在“xx1420”数据库中创建学生表,表名为“xx1420_29_s”,包括列:
sno、char(4),class、char(20),sname、char(8),sex、char
(2),birthday、datatime,address、varchar(50),telephone、char(20),email、char(40)。
其中,sno为主键,要求class、sname非空,sex默认值为“男”,email惟一完整性约束。
(9)在“xx1420”数据库中创建课程表,表名为“xx1420_29_c”,包括列:
cno、char(4),cname、char(20),credit、tinyint。
其中,cno为主键。
(10)在“xx1420”数据库中创建选课表,表名为“xx1420_29_sc”,包括列:
sno、char(4),cno、char(4),score、smallint。
其中,sno、cno为主键。
(11)在“xx1420”数据库中创建选课表,表名为“xx1420_29_u”,包括列:
uno、char(10),uname、char(10),password、char(6),u、tinyint,s、tinyint,c、tinyint,sc、tinyint。
其中,sno、cno为主键。
(12)在“xx1420”数据库中创建选课表,表名为“xx1420_29_tj”,包括列:
cno、char(4),fsd、char(10),rs、smallint。
其中,sno、cno为主键。
(13)新建数据库关系图,指定选课表sno为外键参照学生表的sno,指定选课表cno为外键参照课程表的cno,数据库关系图名要求为“xx1420_29”。
(14)启动查询分析器,使用insert语句将表s、c、sc中的数据分别插入表“xx1420_29_s”、“xx1420_29_c”、“xx1420_29_sc”。
SELECT*FROMsINTOxx1420_29_s
SELECT*FROMcINTOxx1420_29_c
SELECT*FROMscINTOxx1420_29_sc
(15)创建登录账户“xx1420_29”,密码自行设定。
(16)将登录账户“xx1420_29”指定为“xx1420”数据库用户。
(17)设置数据库用户“xx1420_29”对表“xx1420_29_s”、“xx1420_29_c”、“xx1420_29_sc”的select、insert、delete、update权限。
(18)删除注册的数据库服务器,以登录账户“xx1420_29”注册数据库服务器,测试其权限。
三.软件设计
使用工具:
PowerBuilder9.0
目的要求:
掌握PowerScript程序设计方法
操作步骤:
1.创建应用程序并连接数据库
(1)启动数据库服务管理器。
(2)注册数据库服务器:
服务器名59.74.104.180
用户名sa密码sa
(3)启动PowerBuilder9.0
开始→程序→Sybase→PowerBuilder9.0→PowerBuilder9.0
(4)创建工作区,工作区名为“xx1420_29”
File→New→Workspace:
xx1420_29
(5)创建应用对象、应用库和目标,应用对象、应用库及目标名均为“xx1420_29”,并存放在D盘“xx1420_29”文件夹中。
工作区→右键→New→Target→Application:
应用对象名xx1420_29、目标名xx1420_29、应用库名xx1420_29
(6)创建数据库配置。
(7)连接数据库服务器。
(8)将数据库配置代码复制到应用对象Open事件中。
ProfileName→右键→Properties→Preview:
copy
应用对象名→右键→Edit→open事件:
Ctrl+V
然后使用嵌入式SQL语句CONNECT建立连接,书写脚本:
connectusingsqlca;
ifsqlca.sqlcode=-1then
messagebox(”xx1420_29警告”,”连接失败!
”)
return
else
messagebox(”xx1420_29提示”,”连接成功!
”)
endif
(9)编写连接数据库以及显示连接数据库结果的脚本,messagebox对话框标题为“xx1420_29”。
(10)运行应用程序。
2.主窗口和主菜单设计
(1)启动PowerBuilder9.0,打开工作区,配置并连接数据库。
(2)创建登录窗口
(File→)New→PBObject→Window→保存:
通常窗口命名为“w_<窗口名>”。
(3)设计登录窗口。
I窗口的构成:
使用控件:
图片按钮“p_1“——图片xx1420_29.JPEG
静态文本”st_”——账号、密码;
单行编辑框“sle_1,sle_2“——账号和密码输入框
命令按钮“cb_“——确定、退出
属性:
p_1PictureName下拉列表中指定图片为“文件路径\xx1420_29.JPG”
sle_1,sle_2password属性
事件:
设置全局变量
stringg_uno
设置实例变量
Inti_n=0
“确定”按钮触发事件脚本
selectunointo:
g_uno
fromxx1420_29_u
whereuno=:
sle_1.textandpassword=:
sle_2.text;
i_n=i_n+1
ifsqlca.sqlcode=0then
open(w_main)
close(parent)
elseifi_n=3then
messagebox("xx1420_29","对不起您是非法用户!
")
close(parent)
else
messagebox("xx1420_29","账号或密码错误,请重新输入!
")
sle_1.text=""
sle_2.text=""
endif
“退出”按钮触发事件脚本
close(parent)
(4)修改应用对象脚本,将应用对象与登录窗口连接。
//Profilexx1420_29
SQLCA.DBMS="MSSMicrosoftSQLServer"
SQLCA.Database="xx1420"
SQLCA.LogPass="123456"
SQLCA.ServerName="59.74.104.180"
SQLCA.LogId="xx1420_29"
SQLCA.AutoCommit=False
SQLCA.DBParm=""
connectusingSQLCA;
ifSQLCA.SQLCode=-1THEN
MessageBox("xx1420_29","连接失败!
")
return
endif
open(w_login)
(5)运行应用程序。
(6)菜单的创建
i.创建菜单
(File→)New→PBObject→Menu:
右击Untitled,InsertSubmenuItem建菜单项,右击菜单,InsertSubmenuItem建命令项,通常菜单命名为“m_<菜单名>”。
ii.修改菜单
指定窗口→单击右键→Edit或双击指定菜单。
iii.删除
指定菜单→单击右键→Delete。
(7)设计主菜单。
菜单的属性:
1定义菜单外观
General选项卡:
Name(名称)、MicroHelp(微帮助)、Enabled(可用性)等。
2定义菜单项快捷键
General选项卡:
Shortcutkey(快捷键,包括组合键:
Alt、Ctrl、Shift)。
3定义菜单工具栏中修改密码、帮助、退出系统的显示图片
Toolbar选项卡:
ToolBarItemText(指向该图标时文字提示)、ToolBarItemName(图标所显示图片)、ToolBarItemDownName(按住图标所显示图片)、ToolBarItemOrder(图标在工具栏中位置)等。
(8)设计主窗口并捆绑主菜单。
创建窗口w_main,在“MenuName”框中指定捆绑的菜单名m_main,在“WindowType”下拉列表选中“mdihelp!
”,在“WindowState”下拉列表选中“maximized!
”。
(9)编写主菜单菜单项“退出”脚本。
.
close(parent)
(10)编写登录窗口clicked事件脚本,将登录窗口与主窗口连接。
(11)运行应用程序。
3.系统维护菜单各项的设计与实现
(1)修改密码项
1.1修改密码窗口设计
1.2事件脚本
⏹确定脚本
intret
SELECTunoINTO:
g_unoFROMxx1420_29_uWHEREuno=:
g_unoandpassword=:
sle_1.text;
IFSQLCA.SQLCode=0THEN
IFsle_2.text=sle_3.textTHEN
UPDATExx1420_29_uSETpassword=:
sle_2.textWHEREuno=:
g_uno;
COMMITUSINGSQLCA;
MessageBox("xx1420_29","保存成功!
")
Close(PARENT)
RETURN
ELSE
ret=MessageBox("xx1420_29","新密码有误,继续吗?
",Question!
YesNo!
2)
IFret=1THEN
sle_1.text=""
sle_2.text=""
sle_3.text=""
ELSE
Close(PARENT)
RETURN
ENDIF
ENDIF
ELSE
ret=MessageBox("xx1420_29","旧密码有误,继续吗?
",Question!
YesNo!
2)
IFret=1THEN
sle_1.text=""
sle_2.text=""
sle_3.text=""
ELSE
Close(PARENT)
RETURN
ENDIF
ENDIF
⏹关闭脚本
close(parent)
⏹“系统维护”菜单标题下“修改密码”项的触发事件脚本
Open(w_password)
1.3运行应用程序
(2)帮助项
2.1系统帮助窗口设计
窗口属性:
Title中输入“帮助”,在“WindowType”下拉列表选中“main!
”,在“WindowState”下拉列表选中“normal!
”。
工具栏—OLE控件,设置“帮助”。
2.2事件脚本
“系统维护”菜单标题下“帮助”项的触发事件脚本
Open(w_help)
2.3运行应用程序
(3)退出系统项
“系统维护”菜单标题下“退出”项的“关闭”事件脚本
Close(w_main)
4.“学生选课管理系统”数据窗口的设计与实现
<1>“课程管理”菜单栏中的“课程查询”项
1.创建数据窗口对象
1选择显示风格
(File→)New→DataWindow:
选择显示Grid风格。
2定义数据源
OK:
定义数据源。
3控制数据
Next→选择xx1420_29_c→Open
·选择列:
单击列名。
·指定排序:
单击Sort选项卡,拖动xx1420_29_o列至右部,复选框Ascending表示升序。
4保存
对象名:
d_c_locate
5数据对象
2.设计课程查询窗口
(1)创建窗口
事件脚本:
Open事件脚本
dw_1.SetTransObject(sqlca)
dw_1.Retrieve()
检索事件脚本
stringcx
IFTrim(sle_1.text)=""then
cx=""
ELSE
cx="cnamelike'%"+Trim(sle_1.text)+"%'"
ENDIF
dw_1.SetSort("cnoa")
dw_1.Sort()
dw_1.SetFilter(cx)
dw_1.Filter()
关闭事件脚本
Close(parent)
(2)系统主菜单中响应“课程查询”窗口的脚本。
Open(w_c_locate)
(3)运行应用程序。
<2>“课程管理”菜单栏中的“课程删除”项
1.创建数据窗口对象
6选择显示风格
(File→)New→DataWindow:
选择显示Grid风格。
7定义数据源SQLselect
OK:
定义数据源。
8控制数据
Next→选择xx1420_29_c→Open
·选择列:
单击列名。
·指定排序:
单击Sort选项卡,拖动xx1420_29_o列至右部,复选框Ascending表示升序。
9保存
对象名:
d_c_delete
10数据对象
3.设计课程删除窗口
(4)创建窗口
事件脚本:
Open事件脚本:
dw_1.SetTransObject(sqlca)
dw_1.Retrieve()
检索脚本:
stringcx
cx="cno>='"+sle_1.text+"'andcno<='"+sle_2.text+"'"
dw_1.SetSort("snoa")
dw_1.Sort()
dw_1.SetFilter(cx)
dw_1.Filter()
删除脚本:
longn
stringcno,s
cno=dw_o[dw_1.GetRow()]
selectcount(*)into:
nfromxx1420_29_scwherecno=:
cno;
ifn>0then
messagebox("xx1420_29警告","该课程在选课表中已存在,不能删除!
")
else
dw_1.deleterow(0)
endif
确定脚本:
intret,ret1
IFdw_1.DeletedCount()>0THEN
ret=MessageBox("xx1420_29提示","数据已更新,是否保存?
",Question!
YesNo!
)
IFret=1THEN
ret1=dw_1.Update()
IFret1=1THEN
COMMITUSINGSQLCA;
MessageBox("xx1420_29提示","保存成功!
")
ELSE
ROLLBACKUSINGSQLCA;
MessageBox("xx1420_29错误","保存失败!
")
ENDIF
ENDIF
ENDIF
关闭脚本:
Close(PARENT)
(5)系统主菜单中响应“课程删除”窗口脚本。
Open(w_c_delete)
(6)运行应用程序。
<3>“课程管理”菜单栏中的“课程修改”项
4.创建数据窗口对象
11选择显示风格
(File→)New→DataWindow:
选择显示Grid风格。
12定义数据源
OK:
定义数据源。
13控制数据
Next→选择一个或多个表→Open
·选择列:
单击列名。
·指定排序:
单击Sort选项卡,拖动xx1420_29_o列至右部,复选框Ascending表示升序。
14保存
对象名:
d_c_edit
15数据对象
5.设计课程修改窗口
(7)创建窗口
事件脚本:
Open事件脚本:
dw_1.SetTransObject(sqlca)
dw_1.Retrieve()
closequery事件:
intret,ret1
dw_1.AcceptText()
IFdw_1.ModifiedCount()>0THEN
ret=MessageBox("xx1420_29提示","数据已更新,是否保存?
",Question!
YesNoCancel!
3)
IFret=1THEN
ret1=dw_1.Update()
IFret1=1THEN
COMMITUSINGSQLCA;
MessageBox("xx1420_29提示","保存成功!
")
ELSE
ROLLBACKUSINGSQLCA;
MessageBox("xx1420_29错误","保存失败!
")
ENDIF
ELSEIFret=3THEN
RETURN1
ENDIF
ENDIF
Close(THIS)
检索脚本:
stringcx
cx="cno>='"+sle_1.text+"'andcno<='"+sle_2.text+"'"
dw_1.SetSort("snoa")
dw_1.Sort()
dw_1.SetFilter(cx)
dw_1.Filter()
确定脚本:
intret,ret1
dw_1.AcceptText()
IFdw_1.ModifiedCount()>0THEN
ret=MessageBox("xx1420_29提示","数据已更新,是否保存?
",Question!
YesNoCancel!
3)
IFret=1THEN
ret1=dw_1.Update()
IFret1=1THEN
COMMITUSINGSQLCA;
MessageBox("xx1420_29提示","保存成功!
")
ELSE
ROLLBACKUSINGSQLCA;
MessageBox("xx1420_29错误","保存失败!
")
ENDIF
ELSEIFret=3THEN
RETURN1
ENDIF
ENDIF
取消脚本:
dw_1.Retrieve()
关闭脚本:
Close(parent)
(8)系统主菜单中响应“课程修改”窗口脚本。
Open(w_c_edit)
(9)运行应用程序。
<4>“课程管理”菜单栏中的“课程增加”项
6.创建数据窗口对象
16选择显示风格
(File→)New→DataWindow:
选择显示Grid风格。
17定义数据源
OK:
定义数据源。
18控制数据
Next→选择一个或多个表→Open
·选择列:
单击列名。
·指定排序:
单击Sort选项卡,拖动xx1420_29_o列至右部,复选框Ascending表示升序。
19保存
对象名:
d_c_insert
20数据对象
7.设计课程增加窗口
(10)创建窗口
事件脚本:
Open事件脚本:
dw_1.SetTransObject(sqlca)
dw_1.InsertRow(0)
closequery事件脚本:
intret,ret1
dw_1.AcceptText()
IFdw_1.ModifiedCount()>0THEN
ret=MessageBox("xx1420_29提示","数据已更新,是否保存?
",Question!
YesNoCancel!
3)
IFret=1THEN
ret1=dw_1.Update()
IFret1=1THEN
COMMITUSINGSQLCA;
MessageBox("xx1420_29提示","保存成功!
")
ELSE
ROLLBACKUSINGSQLCA;
MessageBox("xx1420_29错误","保存失败!
")
ENDIF
ELSEIFret=3THEN
RETURN1
ENDIF
ENDIF
增加脚本:
inti
i=dw_1.GetRow()
dw_1.AcceptText()
IFIsNull(dw_o[i])orTrim(dw_o[i])=""THEN
messagebox("xx1420_29警告","课程编号不能为空!
")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 选课 管理 系统 课程设计