1、 javaweb上机实验报告学生管理系统 49 2020年4月19日 文档仅供参考 一 实验题目 在线学生管理系统 二 开发背景简介 随着网络技术的发展和普及许多以前基于CS的应用都开始向BS方向发展,而Java在这方面的应用有着许多其它技术不具备的优点,Java开发Web应用的主要技术是Servlet和Jsp技术,其实Jsp只Servlet的一种进化方便了开发者的使用。它们都具有强大的功能适用于许多大型项目的开发。在未来基于BS的应用也必将得到较好的发展。本实验是在讲完Jsp和Servlet课程后为掌握所学的知识而做的实验。
2、 三 开发工具 本次试验是在Windows平台下开发采用的集成开发工具是Myeclipse8.5,数据库使用的是MySql5.5,服务器采用的是Tomcat7.0。 四 实验设计 在本实验中模仿的是MVC设计模式,但由于系统比较小因此省略了业务层,在页面层中直接调用了数据层。在做这个在线学生管理系统中业务基本上都是由Jsp页面完成的没有用到Servlet控制器。 五 实现的功能 Browser Tomcat 请求的html JSP处理页 Mysql Mysql数据库 六 试验截图 1. 登陆界面 登录能够选择是身份,能够是学生,老师,和管理
3、员。 登录界面是login.html,它想login.jsp页面传了3个参数来进行页面的验证,其中验证的部分代码是, String uname = request.getParameter("userName"); String pwd = request.getParameter("userPass"); int i =Integer.parseInt(request.getParameter("identity")); String sql = "select * from userManger where username='"+uname+"' and use
4、rpassword='"+pwd+"'"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ session.setAttribute("userId",rs.getString("id")); session.setAttribute("userMark",rs.getString("identitymark")); response.sendRedirect("ind
5、ex.jsp"); }else{ response.sendRedirect("2.html"); } 2. 其中系统用的学生表是 这是学生表里面的初始化的数据,你能够看到登录的用户名和密码 3. 如果你输入登录的密码不正确,就会跳转到错误界面 4. 这是学生表的登录成功的界面在这页面显示用户名称和上次登录的时间,这里是从数据库里面查询的,用到了session的功能。当然这个系统也能够在一台电脑上登录多个用户,多个用户之间是不会发生冲突的,因为链接的代码是学生的id号。 int userId=Integer.parseInt(se
6、ssion.getAttribute("userId").toString()); int userMark =Integer.parseInt(session.getAttribute("userMark").toString()); String sql ="select * from student_table where id=? and identitymark=?"; PreparedStatement ps=conn.prepareStatement(sql); ps.setInt(1,userId); ps.setInt(2,userMark);
7、 ResultSet rs=ps.executeQuery(); rs.next(); 取得用户的显示的信息的代码如下:
8、ring("username")%>【管理员】
欢迎登录 你上次登录的时间是: ****年*月*日9、ntentType="text/html; charset=gb2312" import="java.sql.*"%> <%@ include file="../../conn.jsp"%> <% request.setCharacterEncoding("gb2312"); response.setContentType("text/html;charset=gb2312"); %>
<% int userId=Integer.parseInt(request.getParameter("id")); int u10、serMark =Integer.parseInt(request.getParameter("mark")); String sql ="select * from student_table where id=? and identitymark=?"; PreparedStatement ps=conn.prepareStatement(sql); ps.setInt(1,userId); ps.setInt(2,userMark); ResultSet rs=ps.executeQuery(); rs.next(); %>
姓名: | <%=rs.getString(2)%> | |
性别: | ||
年龄: | <%=rs.getString(5)%> | |
手机: | <%=rs.getString(6)%> | |
所属系名称: | <%=rs.getString(8)%> | |
家庭住址: | <%=rs.getString(7)%> | |
辅导员: | <%=rs.getString(9)%> | |
宿舍号: | <%=rs.getString(10)%> | |
爱好: | <%=rs.getString(12)%> | |
备注: | <%=rs.getString(14)%> |
16、看自己的登录情况,我这儿就不一一演示了,我们放到admin中区演示,下面我们看老师登录。 老师登录的时候在身份栏里面选择教师就行了,当然必须要用户名和密码必须正确,不然又跳转到errorr.html了 8. 这是老师数据库中的信息表 你能够看到老师的登录用户名称和密码。 9. 这是老师的登录的界面,你能够看到它所操作得内容明显比学生的多了。能够修改学生的成绩了。 10. 当然老师的各个分页面与学生的差不多,我也就不一一截图了,你能够直接看我的源文件代码。下面我们主要讲管理员登录的情况。这是数据库中管理员的表,管理员能够是总管理员和各系的管理员,她们操作得学生也是不一样的。
17、 11. 这是管理员登录后的界面。 12. 由于这个页面比较大,因此我截了两个图。管理员操作的内容比较多,能够查看所有的用户,添加用户的公告,删除用户,修改老师和学生的基本信息等等。 13. 这是查看的学生的信息表,这里就涉及到了查询,这里面的所有信息都是从数据库里面查询出来的。 14. 能够对学生学生信息进行修改和删除,还有添加的操作。假设我们要对序号为1的shezhanjun进行修改操作。当然这里涉及到了验证输入的是否正确,用到了js和servlet技术。 15. 修改成功后就跳转到刚才的页面了。这里我这是把名字修改为了佘占君,因此你看到的信息就变化了。
18、 修改的页面用的代码: <%@ page contentType="text/html; charset=gb2312" import="java.sql.*"%> <%@ include file="conn.jsp"%> <% request.setCharacterEncoding("GBK"); String id = request.getParameter("id"); String name = request.getParameter("name"); String sex = request.getParameter("sex"); String a
19、ge = request.getParameter("age"); String phone = request.getParameter("phone"); String zy = request.getParameter("zy"); String qq = request.getParameter("qq"); String sql = "update student set name='"+name+"',sex='"+sex+"',age="+age+",qq='"+qq+"',phone='"+phone+"',specialty='"+zy+"' where
20、 id="+id; Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); response.sendRedirect("index.jsp"); %> 16. 当然我们能够对上面的信息进行删除,比如我们还是删除第一条记录,我们删除后,就是这样了。 <%@ page contentType="text/html; charset=gb2312" import="java.sql.*"%> <%@ include file="conn.jsp"%> <% String id = req
21、uest.getParameter("id"); String sql = "delete from student where id="+id; Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); response.sendRedirect("index.jsp"); %> 17. 在这里还能够添加学生。录入学生的基本信息,还能够直接从数据库中取。 在添加页面用到了页面的验证,我写到了一个通用的js文件里面了,代码如下: /* * 判断是否为空!第一个参数是id,第二个参数是判断
22、不为空的元件名称。 * */ function checkIsEmpty(id,message) { var flag=true; if(document.getElementById(id).value=="") { alert(message+"不能为空!"); //鼠标的焦点停留在那个文本框,并设置背景色为红色 document.getElementById(id).focus(); document.getElementById(id).style.backgroundColor="red";
23、flag=false; }else{ document.getEmelentById(id).style.backgroundColor="white"; } return flag; } /* *让文本框输入只能是数字 * */ function checkNumber() { if(event.keyCode>57||event.keyCode<48) return false; else{ return true; } } /* *检查文本输入框的字符的长度,要传
24、两个参数,一个是id,一个是限制的长度。 * */ function checkLength(id,len) { //alert(document.getElementById(id).value.length+","+len); if(document.getElementById(id).value.length>len) { alert("长度必须小于"+len+"位!"); document.getElementById(id).focus(); document.getElementById(id).style.backg
25、roundColor="red"; return false; } else{ document.getElementById(id).style.backgroundColor="white"; return true; } } 18. 这是学生成绩的录入界面。 19. 这里面有课程号和课程名称,都是从数据库中取的。 20. 学生成绩的查询,你能够查询学生的成绩。而且能够修改。 21. 当然还能够进行学生成绩的修改。 修改会产生修改记录,我们也保存起来了,以供日后查询使用。 22. 学生
26、的成绩表在数据库中是这样的。这里是学号和课程号得键值对。 23. 当然你能够查询其中某个学生的成绩单。 24. 如果你想了解某个学生的基本信息,你能够进行查询。这里支持模糊搜索。 25. 老师的信息的查询和修改与学生的差不多,因此我也就不一一陈述了,最后就是系统的登录,能够查询用户的登录信息。 26. 查询后得到登录的信息表。它也是从数据库中取得的。 27. 你查询后就得到了这样的表。 七.实验代码【部分主要功能的代码】 1.我用到的的jsp链接的代码是: <%@ page contentType="text/html; charset=gb2312
27、" import="java.sql.*"%> <% String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/student"; String uid = "root"; String psd = "******"; Class.forName(driver); Connection conn = DriverManager.getConnection(url,uid,psd); %> 2.常见的更新页面的代码(这是更新学生信息表的,ad
28、min和老师用户都要用它,因此我写在外面了): <%@ page contentType="text/html; charset=gb2312" import="java.sql.*"%> <%@ include file="../../conn.jsp"%> <% int id = Integer.parseInt(request.getParameter("id")); //由于得到的中文会出现乱码的现象,因此要进行转码的工作 String stuname =new String(request.getParameter("txtName").getBytes("ISO8
29、859-1"),"gb2312"); String stupassword =new String(request.getParameter("txtPassword").getBytes("ISO8859-1"),"gb2312"); int age = Integer.parseInt(request.getParameter("chkAge")); String mobile=new String(request.getParameter("txtMobile").getBytes("ISO8859-1"),"gb2312"); String home_address =
30、new String(request.getParameter( "txtHomeAddress").getBytes("ISO8859-1"), "gb2312"); String series_name=new String(request.getParameter("txtSeriesName").getBytes("ISO8859-1"),"gb2312"); String counsellor=new String(request.getParameter("txtCounsellor").getBytes("ISO8859-1"),"gb2312"); String
31、 dorm=new String(request.getParameter("txtDorm").getBytes("ISO8859-1"),"gb2312"); //由于没有解决拷贝文件的方法,因此暂时 不更新照片的路径。 //String photo= request.getParameter("txtPhoto"); //String hobby=new String(request.getParameter("chkHobby").getBytes("ISO8859-1"),"gb2312"); String hobby=""; String[] boxes=req
32、uest.getParameterValues("chkHobby");
//循环取得复选框里面的值
if (boxes != null && boxes.length != 0) {
for(int i=0;i 33、obby="the student no have anything hobby!";
}
hobby=new String(hobby.getBytes("ISO8859-1"),"gb2312");
String commentinfo=new String(request.getParameter("txaCommentInfo").getBytes("ISO8859-1"),"gb2312");
//response.setContentType("text/html;charset=gb2312");
//out.print(stuname+","+stupass 34、word+","+age+","+mobile+","+home_address+","+series_name+","+counsellor+","+dorm+","+hobby+","+commentinfo+","+id);
String sql="update student_table set stuname=?,stupassword=?,age=?,mobile=?,home_address=?,series_name=?,counsellor=?,dorm=?,hobby=?,commentinfo=? where id=?;";
PreparedStatement p 35、s =conn.prepareStatement(sql);
//对上面的问号进行赋值操作
ps.setString(1,stuname);
ps.setString(2,stupassword);
ps.setInt(3,age);
ps.setString(4,mobile);
ps.setString(5,home_address);
ps.setString(6,series_name);
ps.setString(7,counsellor);
ps.setString(8,dorm);
ps.setString(9,hobby);
ps.s 36、etString(10,commentinfo);
ps.setInt(11,id);
int rows=0;
rows=ps.executeUpdate();
if(rows!=0){
out.print("ok");
}else{
out.print("error");
}
%>
3.用到重文件中解析学生信息的代码:
package excel;
import java.io.File;
import java.util.ArrayList;
import beans.Student;
import jxl.Sheet;
impo 37、rt jxl.Workbook;
public class ImportDataFromExcel {
public static void main(String args[]){
ImportDataFromExcel data = new ImportDataFromExcel();
String fileName = "学生信息.XLS";
ArrayList 38、out.println(stu.toString());
}
}
public Workbook getWorkBook(String fileName) throws Exception{
Workbook workbook = Workbook.getWorkbook(new File(fileName));
return workbook;
}
public ArrayList getStuentInfo(String fileName, String sheetName){
Workbook workbook = null;
t 39、ry{
workbook = getWorkBook(fileName);
}catch(Exception e){
System.out.println(e.toString());
}
if(workbook == null)
return null;
Sheet sheet = workbook.getSheet(sheetName);
ArrayList 40、new Student();
stu.setSid(sheet.getCell(1,i).getContents());
stu.setSname(sheet.getCell(2,i).getContents());
stu.setSex(sheet.getCell(3,i).getContents());
stu.setDepartment(sheet.getCell(4,i).getContents());
stu.setMajor(sheet.getCell(5,i).getContents());
students.add(stu);
41、 }
return students;
}
}
4.在index.html用到了css样式表的控制,代码如下:
#container{
width:100%;
background:url(../images/bg4.gif);
margin:auto;
}
#nav{
background:url(../images/bg1.jpg);
height:70px;
}
#header{
background:url(../images/bg2.jpg);
height:25px;
}
#left{
42、 float:left;
width:175px;
background:url(../images/bg3.jpg);
}
#right{
float:left;
}
#bottom{
clear:both;
background:#BACEEF;
height:50px;
}
html,body{
font-size:14/16px;
font-family:Arial,宋体,微软雅黑;
}
.font1{
font-size:14px;
}
.font2{
font-size:16p 43、x;
}
a{
font-size:14px;
font-family:华文中宋;
}
a:link{
color:#1B58A6;
text-decoration:none;
}
a:visited{
color:#728EB3;
text-decoration:none;
}
a:hover{
color:red;
text-decoration:underline;
}
a:active{
color:#BAD0E3;
text-decoration:none;
}
八.实验心得体会
总的来说从这个实验中我学到了不少的东西,比如如何保存用登录,我刚开始一直不会用session可是经过查询资料看了课本后,我知道了,我学会了独立解决问题的能力,遇到的问题主要是中文信息乱码的问题,不过最后知道用设置字符默认的编码方式,因此问题就解决了,我从这个实验中学到的还有很多,确实从中学到了不少东西。
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818