1、数据库选课管理系统课程设计学 生 选 课 管 理 系 统设计报告信息1420学号:1130502142029姓名:*课题:学生选课管理系统一概要分析数据库设计是指对于一个给定的应用环境,构造最优的数据库模式。1.数据库设计的目标目标是在DBMS支持下,按照应用的要求,为某一应用设计一个结构合理、使用方便、效率较高的数据库及其应用系统。2.数据库设计的特点数据库建设是硬件、软件和干件的结合。数据库设计过程是结构设计和行为设计的密切结合。3.数据库设计的过程 需求分析阶段:可行性分析报告 系统需求 用户的需求具体体现在选课信息和用户信息的提供、保存、更新和查询的方面。这就要求数据库的设计必须合理,
2、使之能够充分满足各种信息的输入和输出,保证数据存储的可靠性,并且能够快速取出和存入。而前台显示部分,应具有人性化的界面,方便用户操作。 功能需求 概念模型设计阶段:ER模型 局部概念模式设计 步骤:选择局部应用:选择一个适当层次的数据流图。逐一设计局部ER模型:定义实体、联系、分配属性、确定实体标识符。 全局概念模式设计步骤:合并:集成为一个整体的数据概念模型即全局ER模型。消除冲突:属性冲突、命名冲突、结构冲突。 优化消除冗余:合并相关类型实体,消除冗余属性、冗余联系。消除冗余的方法:数据字典中数据项间逻辑关系的说明,规范化理论。 逻辑模型设计阶段:关系模型 ER模型向关系模型的转换 学生(
3、学号,姓名,性别,班级,出生日期,地址,电话,email) 课程(课程号,课程名 ,学分) 选课(课程号,学号,成绩) 数据模型的优化和规范处理 数据库物理设计阶段:数据库 数据库实施阶段:程序调试 数据库运行和维护阶段:程序运行二数据库设计使用工具:SQL Server 2000目的要求:掌握SQL Server 2000数据库、表的创建操作步骤:1.建立数据库(1) 启动数据库服务管理器。(2) 启动企业管理器。(3) 以登录账户sa注册数据库服务器“59.74.104.180”,密码为sa。(4) 使用SQL-EM:SQL-EM数据库右键新建数据库:数据库名xx1420,设计数据库文件
4、.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
5、惟一完整性约束。(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、tiny
6、int,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_
7、29_sc”。 SELECT * FROM s INTO xx1420_29_s SELECT * FROM c INTO xx1420_29_c SELECT * FROM sc INTO xx1420_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) 删除注册的数据库服务器,以登录账户“xx1
8、420_29”注册数据库服务器,测试其权限。 三软件设计使用工具:PowerBuilder 9.0目的要求:掌握PowerScript程序设计方法操作步骤:1. 创建应用程序并连接数据库(1) 启动数据库服务管理器。(2) 注册数据库服务器:服务器名 59.74.104.180用户名 sa 密码 sa(3) 启动PowerBuilder 9.0开始程序SybasePowerBuilder 9.0PowerBuilder 9.0(4) 创建工作区,工作区名为“xx1420_29” FileNewWorkspace:xx1420_29(5) 创建应用对象、应用库和目标,应用对象、应用库及目标名均为
9、“xx1420_29”,并存放在D盘“xx1420_29”文件夹中。工作区右键NewTargetApplication:应用对象名xx1420_29、目标名xx1420_29、应用库名xx1420_29(6) 创建数据库配置。(7) 连接数据库服务器。(8) 将数据库配置代码复制到应用对象Open事件中。Profile Name右键PropertiesPreview:copy 应用对象名右键Editopen事件:Ctrl+V然后使用嵌入式SQL语句CONNECT建立连接,书写脚本:connect using sqlca;if sqlca.sqlcode=-1 then messagebox(”
10、xx1420_29警告”,”连接失败!”) returnelse messagebox(”xx1420_29提示”,”连接成功!”)end if(9) 编写连接数据库以及显示连接数据库结果的脚本, messagebox对话框标题为“xx1420_29”。(10) 运行应用程序。2. 主窗口和主菜单设计(1) 启动PowerBuilder 9.0,打开工作区,配置并连接数据库。(2) 创建登录窗口 (File)NewPB ObjectWindow保存:通常窗口命名为“w_”。(3) 设计登录窗口。 I 窗口的构成: 使用控件: 图片按钮“p_1“图片xx1420_29.JPEG 静态文本”st_
11、”账号、密码; 单行编辑框“sle_1, sle_2“账号和密码输入框 命令按钮“cb_“确定、退出 属性: p_1 PictureName下拉列表中指定图片为“文件路径xx1420_29.JPG ” sle_1,sle_2 password属性 事件: 设置全局变量 string g_uno 设置实例变量 Int i_n=0 “确定”按钮触发事件脚本select uno into:g_unofrom xx1420_29_uwhere uno=:sle_1.text and password=:sle_2.text;i_n=i_n+1if sqlca.sqlcode=0 then open(w
12、_main) close(parent)elseif i_n=3 then messagebox(xx1420_29,对不起您是非法用户!) close(parent)else messagebox(xx1420_29,账号或密码错误,请重新输入!) sle_1.text= sle_2.text=end if “退出”按钮触发事件脚本close(parent)(4) 修改应用对象脚本,将应用对象与登录窗口连接。/ Profile xx1420_29SQLCA.DBMS = MSS Microsoft SQL ServerSQLCA.Database = xx1420SQLCA.LogPass
13、= 123456SQLCA.ServerName = 59.74.104.180SQLCA.LogId = xx1420_29SQLCA.AutoCommit = FalseSQLCA.DBParm = connect using SQLCA;if SQLCA.SQLCode=-1 THEN MessageBox(xx1420_29,连接失败!) returnend ifopen(w_login)(5) 运行应用程序。(6) 菜单的创建i. 创建菜单(File)NewPB ObjectMenu:右击Untitled,Insert Submenu Item建菜单项,右击菜单,Insert Sub
14、menu Item建命令项,通常菜单命名为“m_”。ii. 修改菜单指定窗口单击右键Edit 或 双击指定菜单。iii. 删除指定菜单单击右键Delete。(7) 设计主菜单。 菜单的属性:1 定义菜单外观General选项卡:Name(名称)、MicroHelp(微帮助)、Enabled(可用性)等。2 定义菜单项快捷键General选项卡:Shortcut key(快捷键,包括组合键:Alt、Ctrl、Shift)。3 定义菜单工具栏中 修改密码、帮助、退出系统的显示图片Toolbar选项卡:ToolBarItemText(指向该图标时文字提示)、ToolBarItemName(图标所显示
15、图片)、ToolBarItemDownName(按住图标所显示图片)、ToolBarItemOrder(图标在工具栏中位置)等。(8) 设计主窗口并捆绑主菜单。创建窗口w_main,在“MenuName”框中指定捆绑的菜单名m_main,在“WindowType”下拉列表选中 “mdihelp!”,在“WindowState”下拉列表选中“maximized!”。(9) 编写主菜单菜单项“退出”脚本。. close(parent)(10) 编写登录窗口clicked事件脚本,将登录窗口与主窗口连接。(11) 运行应用程序。3.系统维护菜单各项的设计与实现(1)修改密码项1.1修改密码窗口设计1
16、.2事件脚本 确定脚本int retSELECT uno INTO :g_uno FROM xx1420_29_u WHERE uno=:g_uno and password=:sle_1.text;IF SQLCA.SQLCode=0 THEN IF sle_2.text=sle_3.text THEN UPDATE xx1420_29_u SET password=:sle_2.text WHERE uno=:g_uno; COMMIT USING SQLCA; MessageBox(xx1420_29,保存成功!) Close(PARENT) RETURN ELSE ret=Messag
17、eBox(xx1420_29,新密码有误,继续吗?,Question!,YesNo!,2) IF ret=1 THEN sle_1.text= sle_2.text= sle_3.text= ELSE Close(PARENT) RETURN END IF END IFELSE ret=MessageBox(xx1420_29,旧密码有误,继续吗?,Question!,YesNo!,2) IF ret=1 THEN sle_1.text= sle_2.text= sle_3.text= ELSE Close(PARENT) RETURN END IFEND IF 关闭脚本close(paren
18、t) “系统维护”菜单标题下“修改密码”项的触发事件脚本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. “学生选课管理系统”数据窗口的设计与实现“课程管理”菜单栏中的“课程
19、查询”项1 创建数据窗口对象1 选择显示风格 (File)NewDataWindow:选择显示Grid风格。2 定义数据源 OK:定义数据源。3 控制数据 Next选择xx1420_29_cOpen选择列:单击列名。指定排序:单击Sort选项卡,拖动xx1420_29_o列至右部,复选框Ascending表示升序。4 保存 对象名:d_c_locate5 数据对象2 设计课程查询窗口 (1) 创建窗口事件脚本:Open事件脚本dw_1.SetTransObject(sqlca)dw_1.Retrieve()检索事件脚本string cxIF Trim(sle_1.text)= then cx=
20、ELSE cx=cname like %+Trim(sle_1.text)+%END IFdw_1.SetSort(cno a)dw_1.Sort()dw_1.SetFilter(cx)dw_1.Filter()关闭事件脚本Close(parent)(2) 系统主菜单中响应 “课程查询”窗口的脚本。Open(w_c_locate)(3) 运行应用程序。“课程管理”菜单栏中的“课程删除”项 1.创建数据窗口对象6 选择显示风格 (File)NewDataWindow:选择显示Grid风格。7 定义数据源SQL selectOK:定义数据源。8 控制数据Next选择xx1420_29_cOpen选
21、择列:单击列名。指定排序:单击Sort选项卡,拖动xx1420_29_o列至右部,复选框Ascending表示升序。9 保存 对象名:d_c_delete10 数据对象3 设计课程删除窗口 (4) 创建窗口事件脚本:Open事件脚本:dw_1.SetTransObject(sqlca)dw_1.Retrieve()检索脚本:string cxcx=cno=+sle_1.text+ and cno0 then messagebox(xx1420_29警告,该课程在选课表中已存在,不能删除!)elsedw_1.deleterow(0)end if确定脚本:int ret,ret1IF dw_1.D
22、eletedCount()0 THEN ret=MessageBox(xx1420_29提示,数据已更新,是否保存?,Question!,YesNo!) IF ret=1 THEN ret1=dw_1.Update() IF ret1=1 THEN COMMIT USING SQLCA; MessageBox(xx1420_29提示,保存成功!) ELSE ROLLBACK USING SQLCA; MessageBox(xx1420_29错误,保存失败!) END IFEND IFEND IF关闭脚本:Close(PARENT)(5) 系统主菜单中响应 “课程删除”窗口脚本。Open(w_c
23、_delete)(6) 运行应用程序。“课程管理”菜单栏中的“课程修改”项4 创建数据窗口对象11 选择显示风格 (File)NewDataWindow:选择显示Grid风格。12 定义数据源OK:定义数据源。13 控制数据 Next选择一个或多个表Open选择列:单击列名。指定排序:单击Sort选项卡,拖动xx1420_29_o列至右部,复选框Ascending表示升序。14 保存 对象名:d_c_edit15 数据对象5 设计课程修改窗口 (7) 创建窗口事件脚本:Open事件脚本 :dw_1.SetTransObject(sqlca)dw_1.Retrieve()closequery事件
24、:int ret,ret1dw_1.AcceptText()IF dw_1.ModifiedCount()0 THEN ret=MessageBox(xx1420_29提示,数据已更新,是否保存?,Question!,YesNoCancel!,3) IF ret=1 THEN ret1=dw_1.Update() IF ret1=1 THEN COMMIT USING SQLCA; MessageBox(xx1420_29提示,保存成功!) ELSE ROLLBACK USING SQLCA; MessageBox(xx1420_29错误,保存失败!) END IF ELSEIF ret=3
25、THEN RETURN 1 END IFEND IFClose(THIS)检索脚本:string cxcx=cno=+sle_1.text+ and cno0 THEN ret=MessageBox(xx1420_29提示,数据已更新,是否保存?,Question!,YesNoCancel!,3) IF ret=1 THEN ret1=dw_1.Update() IF ret1=1 THEN COMMIT USING SQLCA; MessageBox(xx1420_29提示,保存成功!) ELSE ROLLBACK USING SQLCA; MessageBox(xx1420_29错误,保存
26、失败!) END IF ELSEIF ret=3 THEN RETURN 1 END IFEND IF取消脚本:dw_1.Retrieve()关闭脚本:Close(parent)(8) 系统主菜单中响应 “课程修改”窗口脚本。Open(w_c_edit)(9) 运行应用程序。“课程管理”菜单栏中的“课程增加”项6 创建数据窗口对象16 选择显示风格 (File)NewDataWindow:选择显示Grid风格。17 定义数据源OK:定义数据源。18 控制数据Next选择一个或多个表Open选择列:单击列名。指定排序:单击Sort选项卡,拖动xx1420_29_o列至右部,复选框Ascendin
27、g表示升序。19 保存对象名:d_c_insert20 数据对象7 设计课程增加窗口 (10) 创建窗口事件脚本:Open事件脚本:dw_1.SetTransObject(sqlca)dw_1.InsertRow(0)closequery事件脚本:int ret,ret1dw_1.AcceptText()IF dw_1.ModifiedCount()0 THEN ret=MessageBox(xx1420_29提示,数据已更新,是否保存?,Question!,YesNoCancel!,3) IF ret=1 THEN ret1=dw_1.Update() IF ret1=1 THEN COMMIT USING SQLCA; MessageBox(xx1420_29提示,保存成功!) ELSE ROLLBACK USING SQLCA; MessageBox(xx1420_29错误,保存失败!) END IF ELSEIF ret=3 THEN RETURN 1 END IFEND IF增加脚本:int ii=dw_1.GetRow()dw_1.AcceptText()IF IsNull(dw_oi) or Trim(dw_oi)= THEN messagebox(xx1420_29警告,课程编号不能为空!)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1