《数据库原理及应用》课程设计报告题目:计算机学院选课管理系统学号:10903060137 姓名朱子奇2011年6月数据库课程设计实验报告系统名称:计算机学院选课管理系统课程名称:数据库课程设计课程设计时间:为期五天(2011.6.20-2011.6.24)课程设计内容:一开发背景1.1 背景1.2 目的二功能描述2.1 系统目的与要求2.2 系统可行性分析三业务流程分析四数据流程分析4.1 数据流程图4.2 数据字典4.3 E-R图五概念模型设计六物理模型设计与优化七课程设计心得体会八参考文献一开发背景1.1 背景:大学的课程按大类来说一般分为必修课和选修课。
必修一般指学校或院系规定学生必须修习某课程,学校对必修课程一般有统一的要求和安排。
选修是指根据学生个人兴趣或专业需要自由选择修习某课程。
简言之,必修就是必须修读,选修就是选择性修读。
一般来说,基础性的知识都作为必修课程。
有些知识不是基础性的,与兴趣和研究方向有关,这部分知识可以选择。
这是大学与中学最大的不同之处。
90年代中期,由于Internet 的迅速普及,使Intranet成为Internet技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代高校管理信息系统提供了充足的条件,用计算机数据库系统的形式来管理选课成为了既方便又快捷的一种方式。
因此开发选课管理系统是十分有前景的工作。
1.2 目的:利用计算机支持学校高效率完成选课操作,是适应现代管理要求、推动企业劳动型治理走向科学化、规范化的必要条件;而选课管理是一项琐碎、复杂而又十分细致的工作,学生的基本资料,所开设的课程条目,选课资料的保存,选课条件的约束,一般不允许出错,假如实行手工操作,须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,而计算机选课操作,不仅能够保证各项信息准确无误、快速输出,同时计算机具有手工治理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校管理的效率,也是学校的科学化、正规化管理,与时代接轨的重要条件。
开发本系统就是为了解决高校在选课操作管理中的一些不规范,使选课信息的治理向着规范化、简单化、有效化的方向发展。
二功能描述2.1 系统目标与要求:建立一个选修课管理系统,统一管理学生、课程以及选课信息,以便快速地提供选课操作。
该系统应具有以下功能目标:1 学生进行选课操作。
已经登记在系统数据库中的学生,可以进行课程信息的查看。
一旦学生找到所欲的课程,就可以提出选课申请。
系统会审核并记录学生的选课信息。
对于每位学生的每次选课操作,系统会生成一条选课信息并将其写入选课信息库中。
2 学生进行选课信息查询操作。
完成选课的学生,可以进行选课信息的查询和确认。
每位学生都可以在任何时间查询选课信息,以进行学生选课后遗忘了所选的课程是什么时的补救。
3 学生对不满意的选课进行更改操作。
当学生对所选课程不满意时,可以向系统提供选课更改的请求。
系统根据学生的请求,允许学生进行选课的更改操作。
2.2 系统可行性分析:系统现阶段的发展过程中,利用现有人力和物力是完全具备能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法简单容易。
本系统开发采用PowerDesigner和SQL SERVER相结合的方法来实现。
要求所有数据信息的储存都由数据库来完成,而这些数据的建模则由PowerDesigner完成。
系统采用数据库进行信息管理模式,与手工管理相比,既能够降低对人工劳动的要求,又能大大减少管理成本,而且在结构上也具有很大的灵活性,在安全上也可以得到充分地保证。
所以本系统在技术上是完全可以实现的。
目前,在高校选课是必须的操作,许多都要求通过数据库进行管理,并且实际中也有系统的使用。
所以本系统的使用前景非常的广阔,易于推广和普及到现实中应用。
所以本系统在实际应用上是完全可行的。
三业务流程分析业务流程图:选课查询and更改四数据流程分析4.1 数据流程图选课查询and更改4.2 数据字典数据流的描述:数据流编号:D1.1数据流名称:登录信息申请简述:学生输入用户名密码请求登录数据流来源:学生数据流去向:系统登录数据流组成:系统编号学生学号登录密码数据流编号:D1.2数据流名称:登录信息简述:学生信息库反馈学生信息数据流来源:学生信息库数据流去向:登录系统数据流组成:学生姓名学生性别学生年龄学生院系数据流编号:D1.3数据流名称:课程信息申请简述:学生查看可选课信息数据流来源:登录系统数据流去向:查看所欲课程数据流组成:学生编号数据流编号:D1.4数据流名称:课程信息简述:课程信息库反馈课程信息数据流来源:课程信息库数据流去向:查看所欲课程数据流组成:课程编号课程名称课程学分课程课时数据流编号:D1.5数据流名称:选课申请单简述:学生根据所欲课程提交申请单数据流来源:查看所欲课程数据流去向:执行选课操作数据流组成:学生编号课程编号数据流编号:D1.6数据流名称:选课完成通知单简述:审核并完成选课操作数据流来源:执行选课操作数据流去向:记录选课信息数据流组成:学生编号课程编号系统编号数据流编号:D1.7数据流名称:选课信息更新单简述:向选课信息库更新选课记录数据流来源:记录选课信息数据流去向:选课信息库数据流组成:学生编号课程编号系统编号数据流编号:D2.1数据流名称:登录信息申请简述:学生输入用户名密码请求登录数据流来源:学生数据流去向:系统登录数据流组成:系统编号学生学号登录密码数据流编号:D2.2数据流名称:登录信息简述:学生信息库反馈学生信息数据流来源:学生信息库数据流去向:登录系统数据流组成:学生姓名学生性别学生年龄学生院系数据流编号:D2.3数据流名称:选课信息申请简述:学生查选课信息数据流来源:登录系统数据流去向:查看已选课信息数据流组成:学生编号数据流编号:D2.4数据流名称:选课信息简述:选课信息库反馈选课信息数据流来源:选课信息库数据流去向:查看已选课信息数据流组成:学生姓名课程名称课程学分课程课时数据流编号:D2.5数据流名称:更改申请单简述:学生根据欲更改课程提交申请单数据流来源:查看已选课信息数据流去向:执行更改操作数据流组成:学生编号课程编号数据流编号:D2.6数据流名称:更改完成通知单简述:审核并完成更改操作数据流来源:执行更改操作数据流去向:更改选课信息数据流组成:学生编号课程编号系统编号数据流编号:D2.7数据流名称:选课信息更新单简述:向选课信息库更新选课记录数据流来源:更改选课信息数据流去向:选课信息库数据流组成:学生编号课程编号系统编号处理逻辑的描述:处理逻辑编号:P1.1处理逻辑名称:登录系统简述:审核学生身份使学生进入系统输入的数据流:登录信息申请登录信息处理描述:接受学生的登录信息申请,处理并请求学生信息库反馈学生信息,将反馈的信息返回给学生,使学生登录输出的数据流:课程信息申请处理逻辑编号:P1.2处理逻辑名称:查看所欲课程简述:向学生展示可选课程输入的数据流:课程信息申请课程信息处理描述:通过学生的学号进行筛选,要求课程数据库反馈课程信息,将反馈信息返回给学生,使其看到可选课程输出的数据流:选课申请单处理逻辑编号:P1.3处理逻辑名称:执行选课操作简述:对选课信息进行审核并生成数据库记录输入的数据流:选课申请单处理描述:根据学生的选课申请单进行审核并生成数据库记录输出的数据流:选课完成通知单处理逻辑编号:P1.4处理逻辑名称:记录选课信息简述:将选课确认信息导入数据库输入的数据流:选课完成通知单处理描述:将数据库记录更新选课数据库输出的数据流:选课信息更新单处理逻辑编号:P2.1处理逻辑名称:登录系统简述:学生输入用户名密码请求登录输入的数据流:登录信息申请登录信息处理描述:接受学生的登录信息申请,处理并请求学生信息库反馈学生信息,将反馈的信息返回给学生,使学生登录输出的数据流:课程信息申请处理逻辑编号:P2.2处理逻辑名称:查看已选课程信息简述:浏览已选过的选课记录输入的数据流:选课信息申请单处理描述:对已经进行过选课的用户现实起选课记录输出的数据流:更改申请单处理逻辑编号:P2.3处理逻辑名称:执行更改操作简述:对选课信息进行审核,并生成数据库记录输入的数据流:更改申请单处理描述:学生提出改申请,系统进行信息审核并生成数据库记录输出的数据流:更改完成通知单处理逻辑编号:P2.4处理逻辑名称:更改选课信息简述:将产生的数据库记录用于更新选课数据库输入的数据流:更改完成通知单处理描述:准备将已经生成的数据库记录用于更新之前的选课信息库,已完成选课的更改操作输出的数据流:选课信息更新单数据存储的描述:数据存储编号:F1.1数据存储名称:学生信息库简述:存储学生基本的信息数据存储组成:学生编号学生姓名学生性别学生年龄学生院系关键字:学生编号学生姓名相关联的处理:P1.1数据存储编号:F1.2数据存储名称:课程信息库简述:存储所有课程信息数据存储组成:课程编号课程名称课程学分课程课时关键字:课程编号课程名称相关联的处理:P1.2数据存储编号:F1.3数据存储名称:选课信息库简述:存储学生的选课信息数据存储组成:学生编号学生姓名课程编号课程名称课程学分课程课时系统编号关键字:学生编号课程编号相关联的处理:P1.4数据存储编号:F2.1数据存储名称:学生信息库简述:存储学生基本信息数据存储组成:学生编号学生姓名学生性别学生年龄学生院系关键字:学生编号学生姓名相关联的处理:P2.1数据存储编号:F2.2数据存储名称:选课信息库简述:存储学生的选课信息数据存储组成:学生编号学生姓名课程编号课程名称课程学分课程课时系统编号关键字:学生编号课程编号相关联的处理:P2.2 P2.4外部实体的描述:外部实体编号:S1.1外部实体名称:学生(选课)简述:从选课系统中选课的人输入的数据流:无输出的数据流:登陆信息申请外部实体编号:S2.1外部实体名称:学生(查询and更改)简述:从选课系统中查询and更改的人输入的数据流:无输出的数据流:登陆信息申请4.3 E-R图五概念模型设计六物理模型设计与优化SQL脚本/*==============================================================*/ /* DBMS name: Sybase SQL Anywhere 11 *//* Created on: 2011/6/24 1:13:38 *//*==============================================================*/ if exists(select 1 from sys.sysforeignkey where role='FK_学生_管理_系统') then alter table 学生delete foreign key FK_学生_管理_系统end if;if exists(select 1 from sys.sysforeignkey where role='FK_更改单_处理(更改单)_系统') thenalter table 更改单delete foreign key FK_更改单_处理(更改单)_系统end if;if exists(select 1 from sys.sysforeignkey where role='FK_查询单_处理(查询单)_系统') thenalter table 查询单delete foreign key FK_查询单_处理(查询单)_系统end if;if exists(select 1 from sys.sysforeignkey where role='FK_选修_选修_课程') then alter table 选修delete foreign key FK_选修_选修_课程end if;if exists(select 1 from sys.sysforeignkey where role='FK_选修_选修2_学生') then alter table 选修delete foreign key FK_选修_选修2_学生end if;if exists(select 1 from sys.sysforeignkey where role='FK_选课单_处理(选课单)_系alter table 选课单delete foreign key FK_选课单_处理(选课单)_系统end if;if exists(select 1 from sys.sysindex i, sys.systable twhere i.table_id=t.table_idand i.index_name='管理_FK'and t.table_name='学生') thendrop index 学生.管理_FKend if;if exists(select 1 from sys.sysindex i, sys.systable twhere i.table_id=t.table_idand i.index_name='学生_PK'and t.table_name='学生') thendrop index 学生.学生_PKend if;if exists(select 1 from sys.systablewhere table_name='学生'and table_type in ('BASE', 'GBL TEMP')) thendrop table 学生end if;if exists(select 1 from sys.sysindex i, sys.systable twhere i.table_id=t.table_idand i.index_name='处理(更改单)_FK'and t.table_name='更改单') thendrop index 更改单.处理(更改单)_FKend if;select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_idand i.index_name='更改单_PK'and t.table_name='更改单') thendrop index 更改单.更改单_PKend if;if exists(select 1 from sys.systablewhere table_name='更改单'and table_type in ('BASE', 'GBL TEMP') ) thendrop table 更改单end if;if exists(select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_idand i.index_name='处理(查询单)_FK'and t.table_name='查询单') thendrop index 查询单.处理(查询单)_FKend if;if exists(select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_idand i.index_name='查询单_PK'and t.table_name='查询单') thendrop index 查询单.查询单_PKend if;if exists(select 1 from sys.systablewhere table_name='查询单'and table_type in ('BASE', 'GBL TEMP') ) thendrop table 查询单end if;if exists(select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_idand i.index_name='系统_PK'and t.table_name='系统') thendrop index 系统.系统_PKend if;if exists(select 1 from sys.systablewhere table_name='系统'and table_type in ('BASE', 'GBL TEMP') ) thendrop table 系统end if;if exists(select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_idand i.index_name='课程_PK'and t.table_name='课程') thendrop index 课程.课程_PKend if;if exists(select 1 from sys.systablewhere table_name='课程'and table_type in ('BASE', 'GBL TEMP') ) thendrop table 课程end if;if exists(select 1 from sys.sysindex i, sys.systable twhere i.table_id=t.table_idand i.index_name='选修2_FK'and t.table_name='选修') thendrop index 选修.选修2_FKend if;if exists(select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_idand i.index_name='选修_FK'and t.table_name='选修') thendrop index 选修.选修_FKend if;if exists(select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_idand i.index_name='选修_PK'and t.table_name='选修') thendrop index 选修.选修_PKend if;if exists(select 1 from sys.systablewhere table_name='选修'and table_type in ('BASE', 'GBL TEMP') ) thendrop table 选修end if;if exists(select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_idand i.index_name='处理(选课单)_FK'and t.table_name='选课单') thendrop index 选课单.处理(选课单)_FKend if;if exists(select 1 from sys.sysindex i, sys.systable twhere i.table_id=t.table_idand i.index_name='选课单_PK'and t.table_name='选课单') thendrop index 选课单.选课单_PKend if;if exists(select 1 from sys.systablewhere table_name='选课单'and table_type in ('BASE', 'GBL TEMP')) thendrop table 选课单end if;/*==============================================================*/ /* Table: 学生*//*==============================================================*/ create table 学生(学号char(10) not null,编号(系统)char(10) not null,姓名char(10) not null,年龄char(10) not null,性别char(10) not null,院系char(10) not null,constraint PK_学生primary key (学号));/*==============================================================*/ /* Index: 学生_PK *//*==============================================================*/ create unique index 学生_PK on 学生(学号ASC);/*==============================================================*/ /* Index: 管理_FK *//*==============================================================*/ create index 管理_FK on 学生(编号(系统)ASC);/*==============================================================*/ /* Table: 更改单*//*==============================================================*/ create table 更改单(单据编号(更改单)char(10) not null,编号(系统)char(10) null,系统编号(更改单)char(10) not null,课程编号(更改单)char(10) not null,学号(更改单)char(10) not null,日期(更改单)timestamp not null,constraint PK_更改单primary key (单据编号(更改单)));/*==============================================================*/ /* Index: 更改单_PK *//*==============================================================*/ create unique index 更改单_PK on 更改单(单据编号(更改单)ASC);/*==============================================================*/ /* Index: 处理(更改单)_FK *//*==============================================================*/ create index 处理(更改单)_FK on 更改单(编号(系统)ASC);/*==============================================================*/ /* Table: 查询单*//*==============================================================*/ create table 查询单(单据编号(查询单)char(10) not null,编号(系统)char(10) null,系统编号(查询单)char(10) not null,课程编号(查询单)char(10) not null,学号(查询单)char(10) not null,日期(查询单)timestamp not null,constraint PK_查询单primary key (单据编号(查询单)));/*==============================================================*/ /* Index: 查询单_PK *//*==============================================================*/ create unique index 查询单_PK on 查询单(单据编号(查询单)ASC);/*==============================================================*/ /* Index: 处理(查询单)_FK *//*==============================================================*/ create index 处理(查询单)_FK on 查询单(编号(系统)ASC);/*==============================================================*/ /* Table: 系统*//*==============================================================*/ create table 系统(编号(系统)char(10) not null,名称(系统)char(10) not null,constraint PK_系统primary key (编号(系统)));/*==============================================================*/ /* Index: 系统_PK *//*==============================================================*/ create unique index 系统_PK on 系统(编号(系统)ASC);/*==============================================================*/ /* Table: 课程*//*==============================================================*/ create table 课程(编号(课程)char(10) not null,名称(课程)char(10) not null,学分char(10) not null,课时char(10) not null,constraint PK_课程primary key (编号(课程)));/*==============================================================*/ /* Index: 课程_PK *//*==============================================================*/ create unique index 课程_PK on 课程(编号(课程)ASC);/*==============================================================*/ /* Table: 选修*//*==============================================================*/ create table 选修(编号(课程)char(10) not null,学号char(10) not null,constraint PK_选修primary key clustered (编号(课程), 学号));/*==============================================================*/ /* Index: 选修_PK *//*==============================================================*/ create unique clustered index 选修_PK on 选修(编号(课程)ASC,学号ASC);/*==============================================================*/ /* Index: 选修_FK *//*==============================================================*/create index 选修_FK on 选修(编号(课程)ASC);/*==============================================================*/ /* Index: 选修2_FK *//*==============================================================*/ create index 选修2_FK on 选修(学号ASC);/*==============================================================*/ /* Table: 选课单*//*==============================================================*/ create table 选课单(单据编号(选课单)char(10) not null,编号(系统)char(10) null,系统编号(选课单)char(10) not null,课程编号(选课单)char(10) not null,学号(选课单)char(10) not null,日期(选课单)timestamp not null,constraint PK_选课单primary key (单据编号(选课单)));/*==============================================================*/ /* Index: 选课单_PK *//*==============================================================*/ create unique index 选课单_PK on 选课单(单据编号(选课单)ASC);/*==============================================================*/ /* Index: 处理(选课单)_FK *//*==============================================================*/ create index 处理(选课单)_FK on 选课单(编号(系统)ASC);alter table 学生add constraint FK_学生_管理_系统foreign key (编号(系统)) references 系统(编号(系统))on update restricton delete restrict;alter table 更改单add constraint FK_更改单_处理(更改单)_系统foreign key (编号(系统)) references 系统(编号(系统))on update restricton delete restrict;alter table 查询单add constraint FK_查询单_处理(查询单)_系统foreign key (编号(系统)) references 系统(编号(系统))on update restricton delete restrict;alter table 选修add constraint FK_选修_选修_课程foreign key (编号(课程)) references 课程(编号(课程))on update restricton delete restrict;alter table 选修add constraint FK_选修_选修2_学生foreign key (学号)references 学生(学号)on update restricton delete restrict;alter table 选课单add constraint FK_选课单_处理(选课单)_系统foreign key (编号(系统)) references 系统(编号(系统))on update restricton delete restrict;七课程设计心得体会通过5天的课程设计学习,自己在数据库开发应用方面的能提得到了很大的提升。