学生管理系统.docx
《学生管理系统.docx》由会员分享,可在线阅读,更多相关《学生管理系统.docx(13页珍藏版)》请在冰豆网上搜索。
学生管理系统
数据库课程设计
题目学生管理系统
学院计算机科学与工程
专业计算机科学与技术
学号26
姓名姚振一
班级
指导教师
1.需求分析
一套软件是否有市场,满足用户需求是关键因素,所以搞清楚用户到底需要什么是软件开发的头等大事。
用户需求如何得来?
用户有没有把需求描述清楚?
如何把用户需求转化成自动化方式?
软件的开发其实就是从一个个问题开始,再一个个地解决地过程。
整个需求的过程如图:
用户需求分析流程图
开始需求
用户提出需求
分析人员体验用户工作流程
分析人员确定调研结果并写报告
项目组分析并确定最终需求
与用户共同确定工作环境
结束需求准备进入设计
图1-1需求过程图
1.1用户提出自己的需求
。
随着学校规模的增大以及新增学生选课的影响,手工方式已经无法记录学生的实时信息,该学校决定用一套新的学生信息管理系统软件,并要求满足以下条件:
(1)能完成学生的学籍注册
(2)学生若不喜欢此时的专业,他们可以自动调剂专业
(3)学生可以选课,并查看个人信息及日常表现情况。
(4)对学生信息、选课信息、课程信息进行记录。
(5)老师可以对学生学籍信息的查询,添加,修改,删除;学生信息及成绩的录入,修改,删除。
修改密码等功能。
(6)管理员拥有最高的权限。
允许添加教师信息和课程信息等。
学校需要的就是能满足以上需求的软件。
需求就是一套软件的终极目标,但并不是每一个需求都能达到的,分析人员还要根据开发环境一条条地分析这些需求。
1.2根据需求确定工作环境
1.2.1软件环境
除了要安装学生管理系统外,还必须具备相应的软件环境,才能更好地运行。
(1)采用的软件操作系统(win7),这是为了更好地管理。
(2)服务器上安装数据库系统(SQLServer2008),从而实现信息资源安全化管理。
2.概念结构设计
概念结构设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。
项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。
概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。
概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。
1
2
2.1概念结构设计的原则
概念结构设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。
概要设计要坚持以下几个原则:
(1)细分原则:
软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。
解决复杂问题的方法是将其分解成几个小问题,一个个来解决。
(2)提高代码重用性:
在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。
(3)从上而下层层分析:
概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。
(4)一致性原则:
概要设计要求所有功能模块在定义时使用统一的规范。
(5)提高独立性,减少耦合:
各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。
一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,即理论情况下不允许两个类共同完成一个功能。
(6)模块的大小要尽量适中:
不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。
经验表明,一个模块的规模不应过大,模块的总行数应控制在10~100行的范围内,最好为30~60行,这样理解和阅读都较方便。
过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。
2.2将用户需求模块化
根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。
什么样的需求才是一个模块?
模块应该具备如下3个特征。
(1)输入和输出:
模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。
(2)处理功能:
模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。
(3)程序代码:
用来实现模块功能的源代码。
2.2.1确定系统最终模块
概要设计中最重要的就是确定此项目包括哪些模块。
根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。
(1)管理员模块:
是本系统的核心模块,该模块又包括对学生管理和课程管理2个子模块,功能如下:
学生管理子模块:
实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。
图3-1学生管理子模块
课程管理子模块:
实现对课程的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除,查看某个课程的详细信息等。
图3-2课程管理子模块
(2)教师模块:
实现查看自己所教授的课程、课程有哪些学生选修,以及利用本系统提交学生的成绩。
图3-3教师管理模块
(3)学生模块:
实现学生的选课,查看、修改自己的选课信息及查看自己日常的表现情况。
图3-4学生模块
(4)公有模块:
实现用户的身份验证,密码修改,退出系统等功能。
图3-5公有模块
3数据库设计
数据是企业运作过程中不可缺少的重要部分,建立自己的数据资料库是提高企业整体竞争力的关键因素。
对于程序而言,安全完整地保存客户的信息是一种责任,因此,数据库设计就成了整个软件开发中重要的一个环节。
一旦数据设计出现问题,软件就会出现问题,某些功能的使用就发挥不了最大作用。
所以,为了更好地开发数据库,了解信息的来源以及信息的流向是头等大事。
对于客户的整个操作流程,都要亲身参与,才能客观地掌握数据资料的真实性,为设计良好的数据库打下基础。
本章主要介绍如何收集客户的数据资料,并将其转化为程序需要的数据资源。
罗列数据信息
在前面已经罗列出了用户的需求,这也正是数据库信息的来源。
根据列表内容,可以提炼出以下数据信息。
(1)需要管理学生信息:
学生表。
(2)需要管理教师信息:
教师表。
(3)需要管理课程信息:
课程表。
(4)需要管理选课信息:
选课表。
(5)需要管理活动信息:
活动表。
(6)需要管理管理员信息:
管理员表。
(7)需要管理奖惩信息:
奖惩表。
实体属性表:
实体
属性
教师
教师ID,教师姓名,登录密码
课程
课程号,课程名称,教师ID
管理员
管理员ID,管理员姓名、登录密码
选课
学号,课程号,课程名、成绩、总成绩
学生
学号,姓名,性别,密码,身份证号,地址、专业
活动
学号,项目,地点、时间、加分
奖惩
学号,事件、奖励、惩处
数据库E-R图设计:
根据数据信息构建表结构
对于如何提取数据表字段,要遵守3个原则。
(1)每个字段都是不可再分的最小数据单位。
(2)非主键字段必须完全依赖于主键
(3)如果两个表存在关联,必须有字段作为外键进行连接。
3.2.1数据库表的设计
学生表:
字段名
类型
空值
约束条件
学号
varchar(20)
notnull
主键
性别
char(5)
姓名
Char(5)
身份证号
Varchar(20)
专业
Char(10)
地址
varchar(20)
notnull
密码
int
notnull
管理员表:
字段名
类型
空值
约束条件
管理员ID
Int
notnull
主键
登录密码
Int
notnull
管理员姓名
Char(10)
教师表:
字段名
类型
空值
约束条件
教师ID
Int
notnull
主键
登录密码
Int
notnull
教师姓名
Char(10)
课程表:
字段名
类型
空值
约束条件
课程号
Int
notnull
主键
课程名称
varchar(20)
notnull
教师ID
Int
notnull
外键
活动表:
字段名
类型
空值
约束条件
学号
varchar(20)
notnull
外键
时间
char(10)
notnull
地点
varchar(10)
notnull
项目
Varchar(20)
主键
选课表:
字段名
类型
空值
约束条件
学号
varchar(20)
notnull
外键
课程名称
varchar(50)
notnull
课程号
Int
notnull
外键
成绩
Varchar(10)
总成绩
Varchar(10)
奖惩表:
字段名
类型
空值
约束条件
学号
varchar(20)
notnull
事件
varchar(50)
notnull
主键
奖励
Varchar(20)
notnull
惩处
Varchar(20)
教师ID
Int
外键
4.系统功能设计
系统功能框架
作为一个学生管理系统,本系统的设计主要包含:
系统登录、学生信息管理、班级管理、课程管理和用户管理。
学生管理系统主框架的主要结构如下图所示。
图7-1学生管理系统框架图
数据库代码
一、首先要建立数据库 (stumgn):
SQL语句:
CREATE databASe stumgn on
primary
(name=stumgn_data,filename='c:
\Program Files\Microsoft SQL
Server\MSSQL\data\', SIZE=20MB, maxsize=100MB, filegrowth=25%) log on
(name=stumgn_log,filename='c:
\Program Files\Microsoft SQL
Server\MSSQL\data\', size=5MB,
maxsize=20MB, filegrowth=1MB)
二、创建表:
(1)学生基本情况表()
包括信息有:
学生学号(主键),学生姓名,学生性别,籍贯,出生日期,联系电话,入校时间,家庭地址,注释等字段。
SQL语句如下:
CREATE TABLE [dbo].[stu_jb] ( [student_id] [bigint] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [stu_name] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [sex] [char]
(1) COLLATE Chinese_PRC_CI_AS NOT NULL , [stu_jg] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [birthday] [datetime] NULL , [tele] [char] (14) COLLATE Chinese_PRC_CI_AS NULL , [in_date] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [home_add] [char] (50) COLLATE Chinese_PRC_CI_AS NULL , [note] [char] (60) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] 插入内容语句:
insert into stu_jb values
(,'樊浩','男','重庆',1983-4-23,,2002-9-1,'重庆') 删除记录:
delete stu_jb where stu_id= 修改记录:
update stu_jb
set stu_id=
(2)成绩表()
包括信息有:
学生学号,学生姓名,课程名称,分数,等级 建表:
SQL语句:
CREATE TABLE score (
student_ID INT NOT NULL,
student_Name VARCHAR(10) NOT NULL, class_no int NULL, result tinyint NULL, credit tinyint null
constraINT PK_TESTPROCESS PRIMARY KEY (student_ID, course_No) )
插入内容语句:
insert into stu_jb values
(,'樊浩','计算机维护',80,’良好’)
(3)课程信息表() 建表:
SQL语句:
包括信息有:
课程编号,课程名称,课程类型,课程描述 建表:
SQL语句:
CREATE TABLE course (
course_No INT PRIMARY KEY NOT NULL,
grade_No INT NULL,
course_Name VARCHAR(10) NULL, course_Type VARCHAR(10) NULL, course_Des VARCHAR(50) NULL)
(4)学生班级情况表()
包括信息有:
学生学号,所在班级,所在系,所学专业, 建表:
SQL语句:
CREATE TABLE stu_class (
student_ID INT NOT NULL, grade char(10) NOT NULL, xi VARCHAR(10) NOT NULL, profess VARCHAR(10) NOT NULL,
constraINT PK_TESTPROCESS PRIMARY KEY (student_ID) )(5)系统管理表()
包括信息有:
用户名,密码,用户描述 建表:
SQL语句:
CREATE TABLE user_Info (
user_ID CHAR(10) PRIMARY KEY NOT NULL, user_PWD CHAR(10) NULL, user_DES CHAR(10) NULL, )
三、在stumgn中创建视图
(1). 创建名为l_view的视图。
基于stu_jb和course两个表建立视图l_view,并显示student_id和course_no。
所用语句如下:
CREATE view l_view
AS select student_id ,course_no from student_info,course_info SELECT * FROM l_view
(2).创建一个名为sex_view的视图。
显示性别为“男”的所有学生的资料,所用语句如下:
CREATE view sex_view
AS SELECT * FROM student_info WHERE student_sex='男'
SELECT * FROM sex_view 四、创建存储过程
下面语句是在stumgn数据库中建立一个名为“‘stu_scr’”的存储过程,用于检索‘student_id=2002’的信息,代码如下:
IF exists(select name from sysobjects WHERE name='stu_scr'and type='p') drop procedure stu_scr go
CREATE procedure stu_scr AS
select student_id=2002 from student_info go
execute stu_scr go
五、创建索引
(1) 在stumgn数据库中建立名为clASs_no的唯一性簇索引,填充率为90%,并查看索引信息,代码:
CREATE unique clustered
INDEX clASs_no on clASs_info(clASs_no,grade_no) with
pad_INDEX, FILLFACTOR=90 exec sp_helpINDEX clASs_info
六、创建触发器
建立一个名为testprocess_insupd的触发器。
代码如下:
USE stumgn go
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'testprocess_insupd' AND type = 'TR') DROP TRIGGER testprocess_insupd GO
CREATE TRIGGER testprocess_insupd ON testprocess FOR insert AS
DECLARE @result tinyINT DECLARE @credit tinyINT
SELECT @result= from testprocess SELECT @credit= from testprocess IF (@result>60) BEGIN
UPDATE testprocess set =@credit FROM testprocess END GO
六、确定表内和表之间的数据完整性
(1)缺省值约束
为表stu_jb中的列sex创建一个约束,缺省值为‘1’。
use stumgn
go
alter table student_info
add constraint default_student_sex default ‘女’ for student_sex 现我向表中插入一行学号为,不给student_sex赋值.
(2)check约束
对表grade中的result字段进行约束,使result的值在0—100之间。
a.通过企业管理器创建check约束
在表设计窗口中,单击属性按钮,选择check约束表单,在约束表达式中输入:
([result] >= 0 and [result] <= 100)
b.用create table语句建立check约束,语句为:
alter table testprocess add constraint check_result check(result>=0 and result<=50)
当向表中result列中键入值大于50或小与0时就会弹出出错信息。
(3)FOREIGN KEY(外部关键字约束) SQL语句:
alter table student_info
add constraint fk_class_id foreign key(student_id)
references student_info(student_id)
5系统的测试
按照极限编程的理论,写测试就是对软件进行设计的过程,它的重要性甚至超过了完成实际功能的代码。
先将测试写完,然后再来实现代码,这样所有的测试通过之日也就是程序完成之时。
虽然这些理论并不能完全实践,但测试的重要性是毋庸置疑的。
系统的测试
测试是为了更好地完成项目的功能,虽然测试并不能完全模拟实际发生的流程,但可以降低错误的发生概率,提高软件项目的稳定性。
测试的目的
(1)软件测试是为了发现错误而执行程序的过程。
(2)测试是为了证明程序不够完美,任何程序都不可能有错。
6实训心得与总结
感觉在这一学期当中学到东西最多的时候就是在实验期间了,虽然遇到很多困难,我们都一一的解决。
尤其是在建数据库表的时候遇到点困难,就是表之间的关系,主键和外键约束、数据的删除、添加、修改等~~还就是在本系统的实现时有点难。
在做界面的时候,我们用的时间最多,因为光是界面就十几个都一一的拖拉好,然后再把每一个界面之间建立联系,不光是这些,还有就是界面的外观设计,使得更加美观,而且让系统容易操作,在这方面下了很大的功夫。
在实验的过程中学到了平时没有学到的东西,这段时间感觉过的很充实,知识得到了巩固而且动手的能力也有所提高。