Oracle数据库学生管理系统.docx
《Oracle数据库学生管理系统.docx》由会员分享,可在线阅读,更多相关《Oracle数据库学生管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
Oracle数据库学生管理系统
哈理工荣成学院软件工程系
Oracle数据库大作业
班级:
软件10-4
学号:
1030090412
姓名:
张进伟
任课教师:
梁永先
联系电话:
电子邮件:
完成日期:
2013-5-17
摘要
Java编程语言已成为如今当下的流行语言。
随着Java语言的使用,通过使用JSP技术建立动态网站,充分发挥了Java语言所独有的易用性、跨平台性和安全性,从而构建了一个运行高速、安全可靠、适用性广的系统,实现了学校失物信息、拾物信息、结伴出行活动、二手交易、快件通知的网上管理,使学校适应了网络经济时代发展的要求。
Java平台提供创建XMLWebservices并将这些服务集成在一起之所需。
对个人用户的好处是无缝的、吸引人的体验。
关键词:
Java;XMLWebservices;
Abstract
TheJavalanguagehasbeenbecamethemostpopularlanguageintheworld.AlongwiththerapidTheJavaisWebservicesplatform.XMLWebservicesthroughtheInternetallowsapplicationstocommunicateandsharedata,andnomatterwhatkindoftheoperatingsystem,equipmentorprogramminglanguage.JavaplatformtocreateXMLWebservicesandprovidetheseservicesintegratedtogetherneeds.Forindividualusersbenefitisseamless,attractiveexperience.
Keywords:
Javalanguage;Webservices;
绪论
1.1引言
在最近的几年来,程序员使用工具,通过直观的窗体设计器创建高质量的用户界面,其编程语言的易学易用,为快速开发应用程序提供了尽可能好的环境,所以赢得了广泛的好评。
快速应用程序开发(RAD)工具的一个优点是提供了许多预制控件,开发人员可以使用它们快速建立应用程序的用户界面。
为程序员提供了空前巨大的重用代码池,以及仅通过鼠标单击就可以完全测试的代码。
这些控件拥有各种功能,开发用户界面、处理用户的交互将非常简单、有趣。
想要全面了解各种技术是不可能的,所以这里只介绍最常用的技术,包括Jsp、Html、J2ee等。
1.2问题定义
1.目前针对学校的大量扩招,使学生管理也越发困难,考虑到为学校减轻管理上的负担,这次主任带领我们做了一个小型的学生管理系统。
它可以减轻管理员的统计负担,帮助管理员及时查看,修改,和定义新增加进来的学生,达到事半功倍的效果。
我们用Swing技术和Web技术分别制作了学生管理系统。
Web技术是一种B/S模式下的开发技术,它将用户的请求和相应都封装为控件。
让开发者认为自己是在操作一个windows界面。
极大地提高了开发效率。
1.3系统介绍
目前,在完成了桌面程序以后,我们又采用了J2ee来完成它。
J2ee中主要应用Jsp和Servlet等技术。
数据库用的是Oracle数据库。
数据库中需要我们掌握的知识有很多,比如一些基础的表和视图等,视图通过显示的形式,把信息转达给用户。
不同视图通过不同的显示,来表达模型的数据和状态信息。
每个视图有一个更新操作,当调用更新操作时,视图获得来自模型的数据值,并用它们来显示更新。
对于J2ee部分,Servlet要掌握其生命周期,他只有在类第一次被加载时才调用它的初始化函数,之后则不在调用,然后调用distroy函数将servlet销毁。
Servlet中的主要函数是doGet()和都doPost()函数,他们是函数的核心内容之所在。
doPost()的传输数据量比
doGet()大,安全性也较高。
但传输速率不如doGet()快。
doGet()是立即传输。
1.4相关技术介绍
1.4.1javascript
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。
同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。
在本系统中主要是应用jQuery。
1.4.2jQuery
jQuery是一个兼容多浏览器的javascript库,核心理念是writeless,domore。
jQuery在2006年1月由美国人JohnResig在纽约的barcamp发布,吸引了来自世界各地的众多javascript高手加入,现在由DaveMethvin率领团队进行开发。
如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
jQuery包含以下特点:
⒈DOM元素选择。
基于开源的选择器引擎sizzle(从1.3版开始使用)。
⒉DOM元素遍历及修改(包含对CSS1-3的支持)。
⒊事件处理。
⒋动态特效。
⒌AJAX。
⒍通过插件来扩展。
⒎方便的工具-例如浏览器版本判断。
⒏渐进增强。
⒐链式调用。
⒑多浏览器支持,支持InternetExplorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0。
2学生管理系统
2.1学生管理系统概述
学生管理系统是教务管理的一部分,利用计算机进行管理可以极大程度上提高管理的效率,设计思想如下:
系统包括三种用户:
管理员,教师和学生。
管理员功能:
维护数据管理的各种基本信息包括学生信息维护,教师信息维护,课程信息维护。
教师功能:
成绩登记和成绩统计。
学生功能:
本人成绩查询。
所有用户具有登陆功能。
修改成绩时,要求记录修改日志(通过出发器实现)。
2.2需求分析
学生管理系统需要满足学校老师,学生,和管理员的登录模块功能,要求能够对这三者的使用进行系统协调的分析。
以确保每一部分都能够顺畅使用。
其中每个部分都要包含插入、修改、删除的界面。
所以想要将系统做到尽善尽美,就要用到多种技术的使用,包括数据库也要研究它的精髓之所在。
比如要写好PL/SQL,做好相应的触发器,写好备用日志等。
以学生登录模块一览界面为例,要准确写出每个学生的信息,然后将他们依次地插入到数据库中,然后在学生一览里就可以显示出学生的信息了。
在拖入控件,写好包含插入、修改、删除的按钮,给这些按钮添加程序,使之可以被按动。
2.3概要设计
2.3.1E-R图
2.3.2数据结构表:
//权限表
createtableQx
(
qxNochar
(1)primarykey,
qxNamevarchar2(20)
);
insertintoQxvalues('0','管理员');
insertintoQxvalues('1','教师');
insertintoQxvalues('2','学生');
//用户表
createtableLoginUser
(userNamechar(4)primarykey,
passWordvarchar2(20),
qxNochar
(1)referencesQx(qxNo)
);
insertintoLoginUservalues('0001','0001','0');
insertintoLoginUservalues('1001','1001','1');
insertintoLoginUservalues('1002','1002','1');
insertintoLoginUservalues('2101','2101','2');
insertintoLoginUservalues('2102','2102','2');
insertintoLoginUservalues('2103','2103','2');
//用户权限一览视图
createviewLoginUserView
as
selectuserName,passWord,Qx.qxNo,qxName
fromLoginUser,Qx
whereLoginUser.qxNo=Qx.qxNo;
//班级表
createtableClass
(
classNochar
(1)primarykey,
classNamevarchar2(20)
);
insertintoClassvalues('0','软件10-1');
insertintoClassvalues('1','软件10-2');
insertintoClassvalues('2','软件10-3');
insertintoClassvalues('3','软件10-4');
insertintoClassvalues('4','软件10-5');
insertintoClassvalues('5','软件10-6');
//学生表
createtableStudent
(sNochar(4)referencesLoginUser(userName),
sNamevarchar2(20),
classNochar
(1),
addressvarchar2(20),
phoneNumchar(11),
primarykey(sNo)
);
insertintoStudentvalues('2101','张三','0','山东威海','18763131001');
insertintoStudentvalues('2102','李四','0','山东威海','18763131002');
insertintoStudentvalues('2103','王五','0','山东威海','18763131003');
//学生一览视图
createviewStudentView
as
selectsNo,sName,Class.classNo,className,address,phoneNum
fromStudent,Class
whereStudent.classNo=Class.classNo;
//教师表
createtableTeacher(
tNochar(4)referencesLoginUser(userName)ondeletecascade,
tNamevarchar2(20)notnull
);
insertintoTeachervalues('1001','梁永先');
insertintoTeachervalues('1002','王敏');
//课程表
createtableCourse(
cNochar(3)primarykey,
cNamevarchar2(20)notnull,
creditnumber(2,1),
tNochar(4)referencesLoginUser(userName)
);
insertintoCoursevalues('001','Oracle',5,'1001');
insertintoCoursevalues('002','Java',4,'1001');
insertintoCoursevalues('003','C#.net',5,'1002');
//成绩表
createtableGrade(
sNochar(4)referencesLoginUser(userName)ondeletecascade,
cNochar(3)referencesCourse(cNo),
gradenumber(4,1),
primarykey(sNo,cNo)
);
insertintoGradevalues('2101','001',97);
insertintoGradevalues('2101','002',98);
insertintoGradevalues('2101','003',84);
insertintoGradevalues('2102','001',78);
insertintoGradevalues('2102','003',87);
//学生的平均成绩_总成绩视图
createorreplaceviewavg_sum_GradeView
as
selects.sNo,s.sName,avg(g.grade)asavg_mark,sum(g.grade)assum_mark
fromStudentsleftjoinGradeg
ons.sNo=g.sNo
groupbys.sNo,s.sName;
//学生选课情况一览视图
createorreplaceviewCourseView
as
selectg.sNo,g.cNo,c.cName,t.tName,c.credit
fromCoursec,Teachert,Gradeg
wherec.tNo=t.tNoAndg.cNo=c.cNo;
2.4详细设计
系统分为四个层设计,分别为实体层entity,数据访问层dao,业务逻辑层serves和窗体层frame。
在entity中放我们实现一览表中用到的属性及其set和get方法,dao中是连接数据库及把数据中读到的数据放入实体对象中,serves写调用dao中同名方法的函数,frame中建立一个一维数组和一个二维链表分别用来设置表头和向表中逐列填充数据。
调用顺序是frame中创建serves对象调用其方法,serves中再创建dao的对象调用其方法。
2.5学生管理系统效果图
1.登陆界面:
2.管理员窗体:
3.学生一览窗体:
4.插入一条数据:
5.修改数据:
3.总结
过去的一学年,在梁主任指导帮助下,我学到了很多知识。
在学习过程中我发现了自己的许多不足。
首先,对开发工具的掌握还不算很全面,走了不少弯路。
其次,对自己想要干什么很迷茫,在遇到难题时,也曾很犹豫。
我认为在制作网站方面技术,我还欠缺很多,需要不断提高自己开发软件的能力。
在品味成功喜悦的同时我深知自己掌握的知识还远远不够,将学习到的一些理论知识应用到实践中去,总会出现这样或那样的问题,不是理论没有掌握好,而是光知道书本上的知识是远远不够的,一定要把理论知识和实践结合起来。
把学到的知识应用到时间中去,多做多练,才可以把理论的精华发挥出来。
知识不是知道,了解就好,一定要去应用它,发展它,让它在现实生活中得到充分的应用,从而解决一些问题,这才是学习的根本目的。
而且知识又不是单一的,它是互相联系的,学科与学科之间都有着内在的联系。
计算机是一门非常复杂且庞大的学科,一项课题往往需要多项技术才可以完成的。
在设计阶段,通过对课题的深入分析与研究,迫使我们们对技术有了一定的了解。
计算机技术的高速发展,使我们深深地认识到只有不断的加强学习,才能在计算机技术方面不至于被淘汰,今后,我还需加强学习。
致谢
感谢敬爱的梁老师,虽然我们基础差,但您仍耐心地给我们讲解。
有好几次,我路过您办公室的时候,你都在埋头备课,我知道教我们你真的认真对待了,谢谢您。
参考文献
[1]Java实用教程(第2版)郑阿奇主编曹戈编著电子工业出版社
[2]数据库系统开发案例精选高春艳李俊民刘彬彬编著人民邮电出版社[3]系统开发实录李志明孙强编著人民大学出版社
附录
//frame层
StringuserName=jTextField0.getText();
Stringpassword=jTextField1.getText();
getNowName();
LoginUserCheckloginUserCheck=newLoginUserCheck();
StringqxNo=loginUserCheck.LoginUserCheck(userName,password);
if(qxNo.equals("0")){
Managerfrmmframe=newManagerfrm();
mframe.setDefaultCloseOperation(Loginfrm.EXIT_ON_CLOSE);
mframe.setTitle("用户管理窗体");
mframe.getContentPane().setPreferredSize(mframe.getSize());
mframe.pack();
mframe.setLocationRelativeTo(null);
mframe.setVisible(true);
this.dispose();
}elseif(qxNo.equals("1")){
Teacherqxfrmtqframe=newTeacherqxfrm();
tqframe.setDefaultCloseOperation(Loginfrm.EXIT_ON_CLOSE);
tqframe.setTitle("教师权限窗体");
tqframe.getContentPane().setPreferredSize(tqframe.getSize());
tqframe.pack();
tqframe.setLocationRelativeTo(null);
tqframe.setVisible(true);
this.dispose();
}elseif(qxNo.equals("2")){
Studentqxfrmsqframe=newStudentqxfrm();
sqframe.setDefaultCloseOperation(Loginfrm.EXIT_ON_CLOSE);
sqframe.setTitle("学生权限窗体");
sqframe.getContentPane().setPreferredSize(sqframe.getSize());
sqframe.pack();
sqframe.setLocationRelativeTo(null);
sqframe.setVisible(true);
this.dispose();
}elseif(qxNo=="3"){
jLabel2.setText("请输入正确用户名!
");
}elseif(qxNo=="4"){
jLabel2.setText("请输入正确密码");
}
}
//serves层
publicclassLoginUserCheck{
publicStringLoginUserCheck(StringuserName,Stringpassword){
Stringresult=null;
LoginUserDaologinUserDao=newLoginUserDao();
LoginUserloginUser=loginUserDao.selectLoginUserByUserName(userName);
if(loginUser==null){
return"3";
}elseif(!
password.equals(loginUser.getPassWord())){
return"4";
}else{
result=loginUser.getQxNo();
}
returnresult;
}
}
//dao层
publicclassLoginUserDao{
LoginUserresult=null;
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
publicListselectAllLoginUser(){
//访问数据库
Listresult=null;
try{
DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());
con=DriverManager.getConnection(
"jdbc:
oracle:
thin:
@localhost:
1521:
XE","zhang","zhang");
stmt=con.createStatement();
Stringsql="select*fromLoginUserVieworderbyuserName";
rs=stmt.executeQuery(sql);
result=newArrayList();
while(rs.next()){
LoginUserloginUser=newLoginUser();
loginUser.setUserName(rs.getString("userName"));
loginUser.setPassWord(rs.getString("passWord"));
loginUser.setQxNo(rs.getString("qxNo"));
loginUser.setQxName(rs.getString("qxName"));
result.add(loginUser);
}
}catch(Exceptione){
try{
con.rollback();
}catch(Exceptionee){
}
}finally{
try{
if(rs!
=null){
rs.close();
}
if(stmt!
=null){
stmt.close();
}
if(con!
=null){
con.close();
}
}catch(Exceptione){
}
}
returnresult;
}
publicLoginUserselectLoginUserByUserName(StringuserName){
LoginUs