Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
学生学籍管理系统_图书管理系统,希望能够帮助你!!!。
二 需求分析
2.1 系统功能要求设计
此系统实现如下系统功能:
我们小组所设计的学生学籍管理数据库系统主要分为两大模块层面,一是:学生登录层面,二是:教师登录层面。不同层面根据不同用户的需求所实现的功能不同,这样能够更人性化地贴合个体的使用,最大程度地提升系统的使用及运行效率。所以系统设有两种不同的登录选择,用户根据实际情况自行登录,修改、查询、管理信息。
学生层面:
(1) 数据库中含有学生个人的基本信息;
(2) 学生选课的基本信息;
(3) 学生所选修的课程的考试成绩;
(4) 学生能够在系统上进行选课;
(5) 学生还能对密码进行修改及基本功能安全退出。
教师层面:
(1) 进行学生信息的添加;
(2) 管理学生信息;
(3) 开设课程;
(4) 登记学生成绩;
(5) 显示教师个人信息;
(6) 教师还能对密码进行修改及基本功能安全退出。
此系统开发期间我们小组不定时地进行用户使用反馈信息收集,根据收集数据不断对系统进行优化、完善。目的是希望从使用者的角度查找系统的缺陷之处,继而使得整个系统的运行、结构更加清晰化、条理化、自动化。
另外我们系统的设计为人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。
2.2 系统模块设计
2.3 数据字典
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。利用SQL Server 2008建立“学生选课”数据库,其基本表清单及表结构描述如下:
数据库中用到的表:
数据库中用到的表:
数据库表名 |
关系模式名称 |
备注 |
Student |
学生 |
学生学籍信息表 |
Course |
课程 |
课程基本信息表 |
selectKe |
选修课程成绩 |
选课成绩信息表 |
teacher |
教师 |
教师信息表 |
connection |
开课 |
教师开课信息表 |
studentTable |
学生账号 |
学生账号表 |
Student基本情况数据表,结构如下:
字段名 |
字段类型 |
Not Null |
说明 |
xh |
varchar(10) |
PRIMARY KEY NOT NULL |
学号 |
password |
varchar(15) |
NULL, |
密码 |
name |
nvarchar(10) |
NULL, |
姓名 |
age |
nvarchar(10) |
NULL, |
年龄 |
sex |
varchar(2) |
NULL, |
性别 |
birthtime |
datetime |
NULL, |
出生年月 |
address |
nvarchar(50) |
NULL, |
家庭地址 |
classes |
varchar(20) |
NULL, |
班级 |
tel |
varchar(20) |
NULL, |
联系电话 |
nation |
varchar(20) |
NULL, |
籍贯 |
profession |
varchar(20) |
NULL, |
专业 |
image |
nvarchar(50) |
NULL, |
图片 |
graduation |
nchar(10) |
NULL |
在校情况 |
course数据表,结构如下:
字段名 |
字段类型 |
约束控制 |
说明 |
kno |
varchar(20) |
PRIMARY KEY NOT NULL |
课程号 |
kname |
varchar(20) |
NOT NULL |
课程名 |
Khour |
varchar(10) |
NOT NULL |
课程学时 |
credit |
varchar(3) |
NOT NULL |
学分 |
kdescription |
varchar(50) |
NOT NULL |
课程简介 |
selectKe数据表,结构如下:
字段名 |
字段类型 |
约束控制 |
说明 |
xh |
varchar(20) |
PRIMARY KEY NOT NULL |
学号 |
kno |
varchar(20) |
PRIMARY KEY NOT NULL |
课程号 |
score |
varchar(3) |
NULL |
成绩 |
kname |
varchar(20) |
NOT NULL |
课程名 |
teacher数据表,结构如下:
字段名 |
字段类型 |
约束控制 |
说明 |
tno |
varchar(20) |
PRIMARY KEY NOT NULL |
教师号 |
password |
varchar(15) |
NULL |
密码 |
tname |
varchar(10) |
NULL |
教师姓名 |
xb |
varchar(2) |
NULL |
性别 |
connection数据表,结构如下:
字段名 |
字段类型 |
约束控制 |
说明 |
tno |
varchar(20) |
PRIMARY KEY NOTNULL |
教师号 |
kno |
varchar(20) |
PRIMARY KEY NOTNULL |
课程号 |
studentTable数据表,结构如下:
字段名 |
字段类型 |
约束控制 |
说明 |
xh |
varchar(20) |
PRIMARY KEY NOT NULL |
学号 |
password |
varchar(20) |
NOT NULL |
密码 |
三 概念模型设计
学生学籍管理系统概念模型设计
学生学籍管理系统的实体有学生实体、教师实体、选课实体、课程实体、教课实体。各个实体具体的描述E-R图如图下所示:
在这里我只给出一个例子图:
四 逻辑和物理结构设计
4.1由系统E—R图转化而得到的关系模式如下:
学生(学号,姓名,性别,年龄,出生年月,家庭地址,班级,学院,民族,联系电话,照片,在校情况),其主关键字为学号;
课程(课程号,课程名,课程学时,课程学分,课程简介),其主关键字为课程号;
选修成绩(学号,课程号,成绩,课程名),其主关键字分别为学号、课程号;
教师(教师号,密码,教师姓名,性别),其主关键字为教师号
开课(教师号,课程号),其主关键字分别为教师号、课程号;
学生账号(学号,密码),其主关键字为学号。
4.2 确定关系模型的存取方法
确定数据库的存取方法,就是确定建立哪些存储路径以实现快速存取数据库中的数据。在主关键字上建立索引,索引虽然能加速查询的速度,但是为数据库中的每张表都设置大量的索引并不是一个一个好的方法。每个索引都将占用一定的存储空间,如果建立聚簇索引(会改变数据物理存储位置的一种索引),占用需要的空间就会更大;其次,当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的更新速度。对于那些在查询中很少使用和参考的列不应该创建索引。因为既然这些列很少使用到,有索引并不能提高查询的速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。所以在确定关系模型的存储方法考虑诸多原因,只对于开课表中的教师号以及课程号作为索引。
4.3 确定数据库的存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构包括确定关系、索引、日志、备份等的存储安排及存储结构以及确定系统存储参数的配置。
(1)创建学生基本信息表:
CREATE TABLE student(
xh varchar(10)PRIMARYKEY NOT NULL,
password varchar(15)NULL,
name nvarchar(10)NULL,
age nvarchar(10)NULL,
sex varchar(2)NULL,
birthtime datetimeNULL,
address nvarchar(50)NULL,
classes varchar(20)NULL,
tel varchar(20)NULL,
nation varchar(20)NULL,
profession varchar(20)NULL,
image nvarchar(50)NULL,
graduation nchar(10)NULL)
(2)创建课程表:
CREATE TABLE course(
kno varchar(20)PRIMARYKEY NOT NULL,
kname varchar(20)NOTNULL,
Khour varchar(10)NOTNULL,
credit varchar(3)NOTNULL,
kdescriptionvarchar(50)NOTNULL )
(3)创建教师表:
CREATE TABLE teacher(
tno varchar(20)PRIMARYKEY NOT NULL,
password varchar(15)NULL,
tname varchar(10)NULL,
txb varchar(2)NULL)
(4)创建选课成绩表:
CREATE TABLE selectKe(
xh varchar(20)PRIMARYKEY NOT NULL,
kno varchar(20)NOTNULL,
score varchar(3)NULL,
kname varchar(20)NOTNULL)
(5)创建开课表:
CREATE TABLE connection(
tno varchar(20)NOTNULL,
kno varchar(20)NOTNULL,
PRIMARY KEY (tno,kno))
(6)创建学生账号表:
CREATE TABLE studentTable(
xh varchar(20) PRIMARYKEY NOT NULL,
password varchar(20)NOTNULL)
在connection表上创建索引SS与SS1
create indexSSon connection(tnoASC)
Go
create indexSS1on connection(knoASC)
下图显示了开课、选修课程成绩和课程三个关系的物理设计其中课程号与学号号分别为关系的主码。
五数据库的实施与维护
5.1 数据库的实施:
经过小组成员相互之间的讨论之后,终于得出一个可行的(在我们能力之内的)数据库设计方案 。C同学按照A同学做的需求分析设计了整个数据库。C同学他经过再三检验确定数据库没有问题了。就把数据库发送给我。个人在拿到数据库后就开始编写数据库的前台系统。把C同学设计的数据库实施到学生学籍管理系统并进行可行性维护。个人才采用J2EE的技术来编写数据库前台:下面是数据库前台系统部分编码过程说明:
数据库前台系统设计采用的是J2EE的Struts2与Hibernate两个框架,数据库前台系统的Dao层部分代码:
1、 连接数据库的关键代码:数据库的用户名是xuan,密码为:;同sqljdbc4驱动加载数据库
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=Student3</property> <property name="connection.username">xuan</property> <property name="connection.password"></property> <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="myeclipse.connection.profile">Myxuan</property>
2、学生查看个人基本信息的编码,执行到该部分代码是就会从Student表中取出相应的数据
public Student findOneStudent(Student stu){ try { System.out.println("数据插"+stu.getXh()); Session session=org.util.HibernateSessionFactory.getSession(); Transaction tx=session.beginTransaction(); Query query=session.createQuery("from Student where xh=?"); query.setParameter(0,stu.getXh()); query.setMaxResults(1); Student admin=(Student)query.uniqueResult(); tx.commit(); org.util.HibernateSessionFactory.closeSession(); System.out.println("数据插入成功"); System.out.println("数据插"+admin.getName()); return admin; } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } }
上面的代码是利用Hibernate的HQL语言在运行学生学籍管理系统是向数据库查询
学生个人的基本信息,以from Student where xh=?"学号为条件,以下是前台调试时向student表插入的数据:
1、 成绩登记代码
登记成绩是在select
登记成绩是在select 登记成绩操作/ public void T_registerScore(SelectKe ske,String xh,String kno){ Session session=org.util.HibernateSessionFactory.getSession(); Transaction tx=session.beginTransaction(); Query query=session.createQuery("from SelectKe where xh=? and kno=?"); query.setParameter(0,xh); query.setParameter(1,kno); List list=query.list(); if(list.size()>0){ SelectKe ske2=(SelectKe) list.get(0); ske2.setScore(ske.getScore()); session.update(ske2); tx.commit(); org.util.HibernateSessionFactory.closeSession(); System.out.println("登记成绩成功"); }else { System.out.println("登记成绩失败"); } }///
1、 学生浏览选课代码:
学生浏览选课 public List<Course> selectCourse(){ Session session=org.util.HibernateSessionFactory.getSession(); Transaction tx=session.beginTransaction(); @SuppressWarnings("unchecked") List<Course> list=session.createQuery("from Course").list(); tx.commit(); org.util.HibernateSessionFactory.closeSession(); System.out.println("所有选课信息"); return list; }
教师开课时添加的课程表的数据
Struts2的核心配置文件:struts.xml的部分代码:
<!-- 删除学生信息 --> <action name="deleteStudent" class="action.TeacherAction" method="deleteteStudent"> <result name="success">/T_showStudent.jsp</result> <result name="input">/ErrorLogin.jsp</result> </action> <!-- 教师添加课程 --> <action name="T_addCourse" class="action.TeacherAction" method="addCourse"> <result name="success">/teacher.jsp</result> <result name="input">/ErrorLogin.jsp</result> </action> <!-- 学生选课 --> <action name="selectOnekc" class="action.StudentAction" method="selectOnekc"> <result name="success">/students.jsp</result> <result name="error">/ErrorLogin.jsp</result> </action> <!-- 个人选课信息 --> <action name="oneCourseInfo" class="action.StudentAction" method="oneCourseInfo"> <result name="success">/oneCourseInfo.jsp</result> <result name="error">/ErrorLogin.jsp</result> </action> <!-- 退选 --> <action name="deleteOnekc" class="action.StudentAction" method="deleteOnekc"> <result name="success">/oneCourseInfo.jsp</result> <result name="error">/ErrorLogin.jsp</result> </action> <!-- 查看成绩 --> <action name="resultsView" class="action.StudentAction" method="resultsView"> <result name="success">/resultsView.jsp</result> <result name="error">/ErrorLogin.jsp</result> </action>
1、系统前台登录界面
教师登录后的管理部分界面
3、学生登录后的管理部分界面
后面还有更详细的,敬请留意更新!
## 资项目地址
[项目地址]
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章