javaee学生基本信息管理系统.docx
《javaee学生基本信息管理系统.docx》由会员分享,可在线阅读,更多相关《javaee学生基本信息管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
javaee学生基本信息管理系统
软件学院
课程设计报告书
课程名称JavaEE课程设计
设计题目学生基本信息管理系统
专业班级
学号
姓名
指导教师
2011年12月
1设计时间
2011/12/12--2011/12/16
2设计目的
JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。
要求同学们对课程中所学习到的知识综合运用,开发有一定规模的JavaWeb程序。
3设计任务
(一)必备功能说明:
(1)功能描述:
用户以合法身份登录系统后,才能进行所有操作;登录系统时,有两种权限:
管理员权限和普通用户权限。
管理员用户可以添加、查看、修改和删除学生信息,普通用户只能添加、查看和修改学生信息;
(2)添加学生信息:
合法用户可以添加学生信息(包括学号、姓名、性别、年龄、所在班级、手机号、家庭住址);
(3)查看学生信息:
合法用户可以查看学生信息;
(4)修改学生信息:
合法用户可以修改学生信息;
(5)删除学生信息:
合法用户可以删除学生信息。
4设计内容
4.1抽象数据类型的定义
4.1.1程序所建立的包
com.Student.dao
com.Student.domain
com.Student.service
com.Student.servlet
com.Student.util
4.1.2程序所需要导入的包
importjava.sql.*;;
importjava.util.A*t;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
4.2数据库部分的实现
4.2.1逻辑设计
1.关系模式
课程信息(学号、姓名、性别、年龄、所在班级、手机号、家庭住址)
2.系统表
表1数据包course
列名
数据类型
长度
是否为空
含义
id
int
4
N
学生编码,主键,自动增长
son
Varchar
50
Y
学号
name
varchar
50
Y
姓名
sex
varchar
50
Y
性别
age
int
4
Y
年龄
sclass
varchar
50
Y
所在班级
phonenumber
varchar
50
Y
手机号
address
varchar
50
Y
家庭住址
4.3程序流程图
图1程序流程图
4.4系统代码实现
1.页面的实现
本程序有四个主要页面:
“login.jsp”,“success.jsp”“error.jsp”,“showallstudents.jsp”,“savaStudent”和“deleteStudent”,
“login.jsp”用于用户登录,它的关键代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
MyJSP'login.jsp'startingpage
用户名称:
用户密码:
“success.jsp”当登录成功时,跳转到本页面,然后超链接到显示页面,它的关键代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
欢迎管理员
<%=session.getAttribute("username")%>进入管理页面
“error.jsp”当登录失败时,跳转到本页面,然后超链接到登录页面,它的关键代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="gbk"%>
用户名密码错误!
重新登录
“showallstudents.jsp”用于显示所有的课程信息和学分统计,它的关键代码如下:
<%@pagelanguage="java"import="java.util.*,comStudent.domain.*"pageEncoding="GBK"%>
学号 | 姓名 | 性别 | 年龄 | 所在班级 | 手机号 | 家庭住址 |
---|
<%
Listlist=(List)request.getAttribute("allstudents");
for(Iteratorit=list.iterator();it.hasNext();){
Studentstudent=(Student)it.next();
%>
<%=student.getSno()%> | <%=student.getName()%> | <%=student.getSex()%> | <%=student.getAge()%> | <%=student.getSclass()%> | <%=student.getPhonenumber()%> | <%=student.getAddress()%> |
<%
}
%>
添加学生信息
修改学生信息
删除学生信息
“savaStudent.jsp”用于填写要保存的课程信息,它的关键代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
保存页面
编号: | |
学号: | |
姓名: | |
性别: | |
年龄: | |
所在班级: | |
手机号: | |
家庭住址: | |
|
2.工具类的实现
工具的类名为“DBConnection”,该类用于获得数据库的连接,它的实现代码如下:
packagecom.Student.util;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassDBConnection{
publicstaticConnectiongetConnection(){
finalStringdriverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
finalStringurl="jdbc:
microsoft:
sqlserver:
//localhost:
1433;databasename=mydb";
try{
Class.forName(driverName);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
try{
Connectioncon=DriverManager.getConnection(url,"sa","sa");
con.setAutoCommit(false);
returncon;
}catch(SQLExceptione){
e.printStackTrace();
}
returnnull;
}
}
3.实体类的实现
实体类的类名有“User”和“Student”,“User”类拥有用户名称和用户密码的私有属性及各个属性的set、get方法,它的实现代码如下:
packagecom.Student.domain;
publicclassUser{
privateStringname;
privateStringpassword;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
}
“Student”类拥有一些代表学生信息的私有属性以及各个属性的set、get方法,它的实现代码如下:
packagecom.Student.domain;
publicclassStudent{
privateintid;
privateStringsno;
privateStringname;
privateStringsex;
privateintage;
privateStringsclass;
privateStringphonenumber;
privateStringaddress;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetSno(){
returnsno;
}
publicvoidsetSno(Stringsno){
this.sno=sno;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicStringgetSclass(){
returnsclass;
}
publicvoidsetSclass(Stringsclass){
this.sclass=sclass;
}
publicStringgetPhonenumber(){
returnphonenumber;
}
publicvoidsetPhonenumber(Stringphonenumber){
this.phonenumber=phonenumber;
}
publicStringgetAddress(){
returnaddress;
}
publicvoidsetAddress(Stringaddress){
this.address=address;
}
}4.DAO类的实现
DAO类的类名为“StudentsDAO”,该类使用JDBC技术实现,用于和数据库交互,进行相关的增、删、改、查操作,它的实现代码如下:
packagecom.Student.dao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.List;
importcom.Student.domain.Student;
importcom.Student.util.DBConnection;
publicclassStudentsDAO{
publicListgetAllStudents(){
Connectioncon=DBConnection.getConnection();
Listlist=newArrayList();
try{
PreparedStatementps=con.prepareStatement("select*fromstudents");
ResultSetrs=ps.executeQuery();
while(rs.next()){
Studentstudent=newStudent();
student.setId(rs.getInt("id"));
student.setSno(rs.getString("sno"));
student.setName(rs.getString("name"));
student.setSex(rs.getString("sex"));
student.setAge(rs.getInt("age"));
student.setSclass(rs.getString("sclass"));
student.setPhonenumber(rs.getString("phonenumber"));
student.setAddress(rs.getString("address"));
list.add(student);
}
returnlist;
}catch(SQLExceptione){
e.printStackTrace();
}
returnnull;
}
publicbooleansaveStudent(Studentstudent)throwsException{
Connectioncon=DBConnection.getConnection();
PreparedStatementps=null;
try{
ps=con.prepareStatement("insertintostudentsvalues(?
?
?
?
?
?
?
?
)");
ps.setInt(1,student.getId());
ps.setString(2,student.getSno());
ps.setString(3,student.getName());
ps.setString(4,student.getSex());
ps.setInt(5,student.getAge());
ps.setString(6,student.getSclass());
ps.setString(7,student.getPhonenumber());
ps.setString(8,student.getAddress());
ps.executeUpdate();
mit();
returntrue;
}catch(SQLExceptione){
e.printStackTrace();
}finally{
con.close();
ps.close();
}
returnfalse;
}
publicvoiddeleteStudent(intsid){
Connectioncon=DBConnection.getConnection();
try{
PreparedStatementps=con.prepareStatement("deletefromstudentswhereid=?
");
ps.setInt(1,sid);
ps.executeUpdate();;
mit();
con.close();
}catch(Exceptione){
e.printStackTrace();
}
}
5.控制器类的实现
控制器类的类名有“LoginServlet”、“ListAllStudentServlet”“SaveServlet”类和“DeleteServlet”类,它们都继承了“HttpServlet”,用于接收页面表单中的数据和将DAO类传递的数据发送到页面中以及控制页面的转向,它们的实现代码分别如下:
publicclassLoginServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Useruser=newUser();
user.setName(request.getParameter("username"));
user.setPassword(request.getParameter("password"));
UserServiceuserService=newUserService();
if(userService.checkLogin(user)){
HttpSessionsession=request.getSession();
session.setAttribute("username",user.getName());
request.getRequestDispatcher("/success.jsp").forward(request,response);
}
else
if(userService.checkLogin(user)){
HttpSessionsession=request.getSession();
session.setAttribute("username",user.getName());
request.getRequestDispatcher("/success1.jsp").forward(request,response);
}
request.getRequestDispatcher("/error.jsp").forward(request,response);
}
publicclassListAllStudentServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
StudentsServicestudentService=newStudentsService();
Listlist=studentService.getAllStudents();
request.setAttribute("allstudents",list);
request.getRequestDispatcher("/showallstudents.jsp").forward(request,response);
}
publicclassSaveServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
publicvoiddoPost(HttpServletRequestrequest,HttpServletR