题目高校教务管理系统学生姓名xxxxxx学号xxxxxxxxxxxx专业班级xxxxxxxxxxxxxxxxxxxxx目录一、问题分析-------------------------------------------------------------------31、设计背景------------------------------------------------------------------32、运行环境------------------------------------------------------------------3 二、需求分析---------------------------------------------------------------------31、用户需求------------------------------------------------------------------42、系统主要功能------------------------------------------------------------43、系统总框架图------------------------------------------------------------6三、结构设计---------------------------------------------------------------------61、数据字典------------------------------------------------------------------62、概念结构设计E-R图-------------------------------------------------12四、系统代码实现(PowerBuilder环境)---------------------------------151、SQL Server 2008创建表格代码--------------------------------------152、PowerBuilder环境数据库连接代码---------------------------------223、运行结果-----------------------------------------------------------------24一、问题分析1、设计背景教务管理系统是高等学校教育工作的一项重要内容,是整个学校学校管理的核心和基础。
教务管理工作是指学校管理人员按照一定的教育方针,运用先进的管理手段,组织、协调,指挥和指导各方面人员的活动,以便高效率、高质量地完成各项教学任务,完成国家所制定的教育目标。
教务管理工作是学校教学工作的中枢,是保证高等教学机制正常运转的枢纽,它是一项目的性、计划性、适应性、创造性和科学性很强的工作。
教务管理工作关系到高等教学秩序的稳定和教学质量的提高,关系到搞笑的发展和人才的培养,教学管理在高校中占有相当重要的地位。
随着计算机技术的飞速发展和高等教育体制改革的不断深入,传统的教务管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成教学管理工作。
提高教务管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。
同时,运用先进的信息技术,开发高校综合教务管理系统,是深化教务体制改革的有力措施。
要全面理解高校教务管理系统的需求,首先需要了解高校教务管理的内容、方法和流程等知识。
2、运行环境本学生学籍管理系统(数据库系统)的开发与运行环境如下:开发环境:Windows 7辅助工具:SQL Server 2008数据库管理系统:PowerBuilder 9.0运行环境:Windows 7/xp二、需求分析进行数据库设计首先必须准确了解也分析用户需求(包括数据和处理)。
目的是为教务管理数据库系统的设计打下牢牢的基础,是数据库开发的重要文件依据,主要为数据库设计人员使用,是用户和系统分析员的项目依据文件。
作为“地基”的需求分析是否做得充分与准确,它决定了在其上构建数据库大厦的速度和质量。
需求分析做得不好,甚至会导致整个数据库设计返工重做。
1、用户需求本系统是针对高等院校的教务管理系统,因此教务管理系统的用户包括学生和课程。
主要涉及系部信息、班级信息、学生信息、课程信息以及选课记录和成绩等多种数据信息。
实现的具体功能如下:●基础维护:1、班级信息维护2、学生信息维护3、课程信息维护●教学管理:1、学生选课管理2、课表查询3、成绩输入●报表打印——打印成绩单以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。
2、系统主要功能(1)班级信息维护界面能够完成学校各个班级所有基本信息的输人登记,所有班级信息的修改、插人、删除等工作。
可以按照特定的信息进行查找,并按照特定的要求进行排序。
提供一定的帮助文件和系统维护功能。
(2)学生信息维护界面能够完成学生所有基本信息的输人登记,所有学生信息的修改、插人、删除等工作。
可以按照特定的信息进行查找,并按照特定的要求进行排序。
提供一定的帮助文件和系统维护功能。
(3)课程信息维护界面能够完成学校不同专业课程信息的录入,包括任课老师的信息。
还可以对课程信息进行修改、删除等操作。
可以按照课程编号、课程名称、拼音码进行查询,相应的课程的信息会出现在窗口界面。
(3)学生选课界面此部分的功能如下:学生根据自己的学号、姓名、年级进行选课。
可以通过课程拼音、课程名称、课程编号和课程序号对课程信息进行查询,然后会出现所选课程的基本信息。
通过该界面既可以实现选课功能,还可以实现删课功能。
(4)课表查询界面学生根据自己的学号、姓名、年级进行选课可以查到自己所选课程的详细上课时间。
(5)学生成绩输入界面当选课结束时,教师可以根据课程编号查询其所教授的课程,然后给学生输入一定的成绩,然后提交。
(6)打印成绩单界面可以根据学号打印学生相应的成绩。
由于数据库内的信息会很多,注意数据库表格设计,使得学生查询基本信息或学习成绩时使用时间较短。
按照数据库系统开发步骤进行数据库概念结构设计、逻辑结构设计、物理结构设计。
3、系统总框架图三、结构设计1、数据字典(1)数据项数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述,教务管理的主要数据见下表。
班级信息表成绩表籍贯代码表课程表课程信息表民族代码表选课表学籍代码表学生信息政治面貌代码表数据结构反映了数据之间的组合关系。
一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或若干个数据项和数据结构混合组成。
经过数据项和用户需求的分析,我对本系统一共分了5个组,具体如下表所示:系统流程图:数据流是数据结构在系统内传输的路径。
通过对用户的需求分析,以及数据项和数据流的设计,得出了相应的数据流描述如下表所示:数据流定义表数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。
经过数据项、数据结构和数据流的设计,本系统一共选用了三个数据存储,具体对数据存储的描述通常如下表所示:数据存储处理过程的具体处理逻辑一般用判定表或判定树来描述。
对于本系统用于高校教务管理系统一共设计了三种处理方法,具体处理方式如下表所示:处理过程2、概念结构设计的E-R图图3-1 学生实体E-R图图3-2 课程信息实体E-R图图3-3 选课表实体E-R图图3-4 课程表实体E-R图图3-5 成绩表实体E-R图在基础维护系统中存在这样的关系:学习(一个学生只能在一个班级学习,而一个班级可以供多个学生学习,故是多对一的关系)。
图3-5学生关系E-R图在教学管理中存在这样的关系:选课(一个学生可以选择多门课程,而一门课程可以供多个学生选择,故是多对多的关系)图3-6 选课关系E-R图3.对于报表统计,我们可以将成绩单实体抽象出来。
图3-7课程实体E-R图以上是本系统中的基本的实体和关系,本系统是将其分步找出来加以描述,下面是本系统总体的E-R图:图3-8学籍管理系统E-R图四、系统代码实现(PowerBuilder环境)1、SQL Server 2008创建表格代码(1)建立班级信息表格:CREATE TABLE[dbo].[班级信息]([班级编号][varchar](14)NOT NULL,[年级][varchar](4)NULL,[班级名称][varchar](30)NULL,[班级简称][varchar](16)NULL,[人数][numeric](3, 0)NULL,[班主任][varchar](8)NULL,CONSTRAINT[PK_班级信息]PRIMARY KEY CLUSTERED([班级编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](2)建立成绩表格:CREATE TABLE[dbo].[成绩表]([编号][int]IDENTITY(1,1)NOT NULL,[学号][varchar](14)NOT NULL,[课程编号][int]NOT NULL,[成绩][int]NOT NULL,[考试次数][int]NULL,[是否补修][varchar](2)NULL,[是否重考][varchar](2)NULL,[是否已确定成绩][varchar](2)NULL,CONSTRAINT[PK_成绩表]PRIMARY KEY CLUSTERED([编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](3)建立籍贯代码表格:CREATE TABLE[dbo].[籍贯代码表]([籍贯编号][varchar](2)NOT NULL,[籍贯][varchar](18)NULL,CONSTRAINT[PK_籍贯代码表]PRIMARY KEY CLUSTERED([籍贯编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](4)建立课程表格:CREATE TABLE[dbo].[课程表]([编号][int]IDENTITY(1,1)NOT NULL,[课序号][varchar](14)NOT NULL,[课程编号][int]NOT NULL,[上课时间天][int]NOT NULL,[上课时间节][int]NOT NULL,[上课地点][varchar](20)NOT NULL,CONSTRAINT[PK_课程表]PRIMARY KEY CLUSTERED([编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](5)建立课程信息表格:CREATE TABLE[dbo].[课程信息]([课程编号][int]NOT NULL,[课程名称][char](40)NOT NULL,[课程简称][char](40)NOT NULL,[拼音码][char](6)NULL,[本学期课程][char](2)NOT NULL,[教师][char](10)NULL,[开课系别][char](30)NULL,[学分][int]NULL,CONSTRAINT[PK_课程信息]PRIMARY KEY CLUSTERED([课程编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](6)建立民族代码表格:CREATE TABLE[dbo].[民族代码表]([民族编号][varchar](2)NOT NULL,[民族][varchar](18)NULL,CONSTRAINT[PK_民族代码表]PRIMARY KEY CLUSTERED([民族编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](7)建立选课表格:CREATE TABLE[dbo].[选课表]([编号][int]IDENTITY(1,1)NOT NULL,[学号][varchar](14)NOT NULL,[课序号][varchar](14)NOT NULL,CONSTRAINT[PK_选课表]PRIMARY KEY CLUSTERED([编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](8)建立学籍代码表格:CREATE TABLE[dbo].[学籍代码表]([学籍编号][varchar](2)NOT NULL,[学籍名称][varchar](8)NULL,CONSTRAINT[PK_学籍代码表]PRIMARY KEY CLUSTERED([学籍编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](8)建立学生信息表格:CREATE TABLE[dbo].[学生信息]([学号][varchar](14)NOT NULL,[姓名][varchar](8)NULL,[班级编号][varchar](14)NULL,[性别][varchar](2)NULL,[年级][int]NULL,[政治面貌编号][varchar](2)NULL,[民族编号][varchar](2)NOT NULL,[籍贯编号][varchar](2)NOT NULL,[身份证号][varchar](15)NULL,[学籍编号][varchar](2)NOT NULL,CONSTRAINT[PK_学生信息]PRIMARY KEY CLUSTERED([学号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](9)建立政治面貌代码表格:CREATE TABLE[dbo].[政治面貌代码表]([政治面貌编号][varchar](2)NOT NULL,[政治面貌][varchar](14)NULL,CONSTRAINT[PK_政治面貌代码表]PRIMARY KEY CLUSTERED([政治面貌编号]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS= ON)ON[PRIMARY])ON[PRIMARY](10)创建主键及外键等表的约束ALTER TABLE[dbo].[学生信息]WITH NOCHECK ADDCONSTRAINT[PK_学生信息]PRIMARY KEY CLUSTERED([学号])ON[PRIMARY]GOALTER TABLE[dbo].[学籍代码表]WITH NOCHECK ADDCONSTRAINT[PK_学籍代码表]PRIMARY KEY CLUSTERED([学籍编号])ON[PRIMARY]GOALTER TABLE[dbo].[成绩表]WITH NOCHECK ADDCONSTRAINT[PK_成绩表]PRIMARY KEY CLUSTERED([编号])ON[PRIMARY]GOALTER TABLE[dbo].[政治面貌代码表]WITH NOCHECK ADDCONSTRAINT[PK_政治面貌代码表]PRIMARY KEY CLUSTERED([政治面貌编号])ON[PRIMARY]GOALTER TABLE[dbo].[民族代码表]WITH NOCHECK ADDCONSTRAINT[PK_民族代码表]PRIMARY KEY CLUSTERED([民族编号])ON[PRIMARY]GOALTER TABLE[dbo].[班级信息]WITH NOCHECK ADDCONSTRAINT[PK_班级信息]PRIMARY KEY CLUSTERED ([班级编号])ON[PRIMARY]GOALTER TABLE[dbo].[籍贯代码表]WITH NOCHECK ADD CONSTRAINT[PK_籍贯代码表]PRIMARY KEY CLUSTERED ([籍贯编号])ON[PRIMARY]GOALTER TABLE[dbo].[课程信息]WITH NOCHECK ADD CONSTRAINT[PK_课程信息]PRIMARY KEY CLUSTERED ([课程编号])ON[PRIMARY]GOALTER TABLE[dbo].[课程表]WITH NOCHECK ADDCONSTRAINT[PK_课程表]PRIMARY KEY CLUSTERED([编号])ON[PRIMARY]GOALTER TABLE[dbo].[选课表]WITH NOCHECK ADDCONSTRAINT[PK_选课表]PRIMARY KEY CLUSTERED([编号])ON[PRIMARY]GOALTER TABLE[dbo].[成绩表]ADDCONSTRAINT[DF_成绩表_成绩]DEFAULT (0)FOR[成绩] GOALTER TABLE[dbo].[学生信息]ADDCONSTRAINT[FK_学生信息_班级信息]FOREIGN KEY([班级编号])REFERENCES[dbo].[班级信息]([班级编号]CONSTRAINT[FK_学生信息_籍贯代码表]FOREIGN KEY([籍贯编号])REFERENCES[dbo].[籍贯代码表]([籍贯编号]),CONSTRAINT[FK_学生信息_民族代码表]FOREIGN KEY([民族编号])REFERENCES[dbo].[民族代码表]([民族编号]),CONSTRAINT[FK_学生信息_学籍代码表]FOREIGN KEY([学籍编号])REFERENCES[dbo].[学籍代码表]([学籍编号]),CONSTRAINT[FK_学生信息_政治面貌代码表]FOREIGN KEY ([政治面貌编号])REFERENCES[dbo].[政治面貌代码表]([政治面貌编号])GOALTER TABLE[dbo].[成绩表]ADDCONSTRAINT[FK_成绩表_课程信息]FOREIGN KEY([课程编号])REFERENCES[dbo].[课程信息]([课程编号]),CONSTRAINT[FK_成绩表_学生信息]FOREIGN KEY([学号])REFERENCES[dbo].[学生信息]([学号])GOALTER TABLE[dbo].[课程表]ADDCONSTRAINT[FK_课程表_课程信息]FOREIGN KEY[课程编号])REFERENCES[dbo].[课程信息]([课程编号])GO(11)创建存储过程create proc sf_成绩提交@courseid intasbegin tran-- 提交成绩,提交后不可以再修改update成绩表set是否已确定成绩='Y'where课程编号=@courseidand成绩>0commitGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_NULLS ONGOcreate proc sf_终止选课asbegin tran--应该单独有一个【终止选课】的功能,终止选课后生成空的成绩单--所有学生将不允许更改课程信息,如果需要更改,必须单独申请,特殊处理。