学生信息管理系统——最全说明书

请注意:因为文档多图,所以我把图片放在了我的资源界面,需要的同学自行下载

https://download.csdn.net/download/aliceiwill/10847158

  • 系统总体设计

 

当前是个会信息复杂,数据量巨大,急需一个管理系统来实现对数据的管理。基于此,我设计了学生管理系统。其主要功能:

  • 实现学生信息的管理(管理员)

增加,删除,查询(模糊查询),修改的功能

实现分页功能

  • 提示是谁在使用系统
  • 实现登录功能

未经登陆不能进入系统进行操作

四、实现评论区讨论功能

 

整个系统围绕着着这四大功能进行设计。

使用mvc框架。Servlet+jsp+javabean模式开发

 

 

 

此图为具体流程

 

 

 

 

 

此图为MVC框架:

 

servlet是一种独立于平台和协议的处于服务器端的Java应用程序,利用他可以实现业务层和表现层的分离,同时又可以生成动态页面。简单的来说就是处理request请求

get与post都是传递

而request是请求,response是相应

HttpServlet 类包含 init() 、 destroy() 、 service() 等方法。其中 init() 和 destroy() 方法是继承的。

 

MVC框架里头的C,Controller的角色,当客户从页面传入参数请求的时候,发送到Servlet,Servlet根据请求的不同,分配给不同的业务代码完成业务操作,操作完成后,Servlet返回一个结果到页面上面去。

 

web与服务器之间的关系

1、WEB :表示用户可以浏览的网页(HTML,CSS,JS)

    2、服务器

        1、硬件 与 软件

            硬件范畴:一台主机

            软件范畴:一个能够接收请求并给出响应的程序

      

 

 

 

 2、作用

            1、存储WEB上的信息(网页,图片,音频,视频)

            2、能够处理用户的请求(request),并给出响应(response)

            3、执行服务器端的程序:如查询数据库

 

web之间的转发与链接关系:

请求转发

 

 

 

2.学生管理系统ER图

 

 

 

 

 

 

 

 

 

 

3.学生管理系统结构图:

4.学生管理系统流程图:

 

二、系统详细设计

数据库设计表

 

 

 

 

 

 

 

 

 

 

 总结:一共用了三个表,分别为存放评论的message表

 

存放用户(管理员)的t_user表

 

存放学生信息的t_grade表

 

 

MVC框架具体设计:

 

 

 

  • .登录界面

 

 

 

 

 

设计方案:采用了网上寻找的ui设计,自行设置了背景颜色,设置了登陆功能。重置功能,密码验证功能。

要用到的程序(节选):

public class LoginServlet extends HttpServlet{

DbUtil dbUtil=new DbUtil();

UserDao userDao=new UserDao();

 

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// TODO Auto-generated method stub

String userName=req.getParameter("userName");

String password=req.getParameter("password");

req.setAttribute("userName", userName);

req.setAttribute("password", password);

if(StringUtil.isEmpty(userName)||StringUtil.isEmpty(password)){

req.setAttribute("error", "用户名或密码为空!");

req.getRequestDispatcher("index.jsp").forward(req, resp);

return;

}

User user=new User(userName,password);

Connection con=null;

try {

con=dbUtil.getCon();

User currentUser=userDao.login(con, user);

if(currentUser==null){

req.setAttribute("error", "用户名或密码错误!");

// 服务器跳转

req.getRequestDispatcher("index.jsp").forward(req, resp);

}else{

// 获取Session

HttpSession session=req.getSession();

session.setAttribute("currentUser", currentUser);

 

 

 

// 客户端跳转

resp.sendRedirect("main.jsp");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

 

public User login(Connection con,User user) throws Exception{

User resultUser=null;

String sql="select * from t_user where userName=? and password=?";

PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sql);

pstmt.setString(1, user.getUserName());

pstmt.setString(2, user.getPassword());

ResultSet rs=pstmt.executeQuery();

if(rs.next()){

resultUser=new User();

resultUser.setUserName(rs.getString("userName"));

resultUser.setPassword(rs.getString("password"));

}

另外:此方法需要新建一个Util工具类:
public class DbUtil {

 

private String dbUrl="jdbc:mysql://localhost:3306/db_studentinfo?useSSL=false";

private String dbUserName="root";

private String dbPassword="root";

private String jdbcName="com.mysql.jdbc.Driver";

 

/**

 * 获取数据库连接

 * @return

 * @throws Exception

 */

public Connection getCon() throws Exception{

Class.forName(jdbcName);

Connection con=(Connection) DriverManager.getConnection(dbUrl,dbUserName,dbPassword);

return con;

}

 

 

 

/**

 * 关闭数据库连接

 * @param con

 * @throws Exception

 */

public void closeCon(java.sql.Connection con) throws Exception{

if(con!=null){

con.close();

}

}

 

public static void main(String[] args) {

DbUtil dbUtil=new DbUtil();

try {

dbUtil.getCon();

System.out.println("数据库连接成功");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

 

  • .评论区实现功能

 

这个是文本输入功能,用户通过键入具体信息来留言,作为一条List数据存储在messages数据库中。另外还提供了评论区展示:

 

评论区使用了JSP+pagebean+servlet层+dao层

其核心代码(节选):

public MessageBean()

{  String JDriver="com.mysql.jdbc.Driver"; //定义驱动程序对象

 String userName="root"; //定义数据库用户名  

 String userPasswd="root"; //定义数据库存取密码  

 String dbName="message"; //定义数据库名  

 String conURL="jdbc:mysql://localhost:3306/db_studentinfo?useSSL=false";

 try{Class.forName(JDriver).newInstance(); //加载JDBC驱动程序

   con=DriverManager.getConnection(conURL,userName,userPasswd);

//连接数据库

    }

catch(Exception e){System.err.println(e.getMessage());}

}

   public  void  setMessage(MessageData msg) {this.msg=msg;}

   // 添加一条留言消息

public void addMessage()throws Exception

{  try{ byte b1[]=msg.getTitle().getBytes("ISO-8859-1");

String ti=new String(b1);

byte b2[]=msg.getName().getBytes("ISO-8859-1");

String na=new String(b2);

byte b3[]=msg.getEmail().getBytes("ISO-8859-1");

String em=new String(b3);

byte b4[]=msg.getContent().getBytes("ISO-8859-1");

String c=new String(b4);

PreparedStatement stm=con.prepareStatement(

"insert into messagetable values(?,?,?,?)");

 

 

stm.setString(1,ti);  stm.setString(2,na);

   if((msg.getEmail()).length()==0)stm.setString(3,"");

   else stm.setString(3,em);

   stm.setString(4,c);

   try {stm.execute();   stm.close(); }

   catch(Exception e) { }

   con.close();  //关闭数据库连接

}

   catch(Exception e){ e.printStackTrace(); throw e;}

}

   // 获得所有留言消息,并返回结果到JSP页面

  public Collection getAllMessage()throws Exception

{ Collection ret=new ArrayList();

try{ Statement stm=con.createStatement();

 ResultSet result=stm.executeQuery(

"select count(*) from messagetable");

int message_count=0;

if(result.next()){ message_count=result.getInt(1);

result.close(); }

if(message_count>0)

{ result=stm.executeQuery("select * from messagetable ");

  while(result.next())

{ String title=result.getString("title");

  String name=result.getString("name");

  String email=result.getString("email");

  String content=result.getString("content");

  MessageData message=new MessageData();

  message.setTitle(title); message.setName(name);

message.setEmail(email); message.setContent(content);

ret.add(message);

}

result.close(); stm.close();

  }

con.close();

}

 

另外评论区设置了返回功能

 

 

 

  • .学生信息管理

功能一:学生信息管理面板设计

 

 

主要有三个界面,每个界面都有可视化窗口,可自行关闭最小化

 

实现了在界面右上角显示当前页面的功能

注意

:使用了jQuerry和开源代码 EASY-UI提供的样式

 

 

 

我引用了一些jar包:

一部分用于easyui,一部分用于支持servlet 5.2版本的,以及mysql包

 

 

 

功能二:学生增加信息

 

注意:只能逐条添加信息,信息存储在t_grade数据表里面,通过addsevlet调用dao层来实现数据的调用与传输

每增加一个学生,序号顺序加1(设置了表的自增序列)

 

 

 

 

 

 

 

 

功能三:学生信息删除功能

 

特色:批量删除,删除前提醒窗口

 

 

功能四:权限验证

 

即如果未经登陆系统会自动回滚至登录界面,只有登陆成功后才可进入

 

 

 

 

 

 

 

通过权限验证实现,利用session捕捉会话

 

 

功能五:修改学生信息

 

 

详细操作是先清空数据库表中的数据,再把写入的数据录入到数据表中并且保存

 

功能六:查询学生信息

 

 

此功能设置为模糊查询,通过查询关键字来根据姓名一栏显示查询信息

并且搜索栏如果为空,那么默认自动显示所有查询列表

 

 

 

 

 

 

 

 

 

 

 

分页

 

 

该分页功能使用了jQuerry:

最后说点jquerry:

就是一个提供各种函数的方法集合,单纯js中给的样式太少

 

$.post() 方法使用 HTTP POST 请求从服务器加载数据。

$ 是 JQuery 常用的一个回传函数,定义为 "选取" 英文是 selector 的缩写

例子︰

$.function();

就是 选取 JQuery 定义的 function() 执行

$('input')

就是 选取 HTML 当中全部的 input 标签

$('#abc')

就是 选取 HTML 当中 ID 名称为 abc 的物件

$.fn.testing = function() {}

就是 选取 JQuery 内核函数 fn (函数) 回传给 testing 这个名称、定义为一个功能 function()

jQuery 是一个 JavaScript 库。

 

 

jQuery 极大地简化了 JavaScript 编程。

jQuery 很容易学习。

 

  • 个人总结

该系统写出的有些费力,但在老师和同学的帮助下,我渐渐地对怎么写项目有了一点点清晰的认识。对于bug不能慌张,要一个一个解决,使用debug模式是消灭bug的利器。另外我了解了什么是jquerry和它的基本应用。El表达式的出现也大大方便了我的工作,通过el表达式可以很方便的接受信息。另外数据库应该一开始就搭建好,而搭建好数据库的前提是设计好实体集,也就是说提前设计好。因此我的感觉是先进行总体设计,设计出具体的表的集合,然后严格按照软件的生命周期来开发软件,循序渐进,这样开发的软件既不乱,还特别好维护。

这门课javaweb给了我一些其他的思考,就是后端很重要,以前做过的项目用来显示的前台是程序窗口,而这次是jsp界面。严格的来说,其实是表现形式的不同,但是开发的核心还是后端的设计,我会在课下继续尝试着做一些类似的项目来充实自己。当然,这也离不开老师的帮助,再次感谢。

 

我将我的开发文档上传到了我的csdn博客:

你可能感兴趣的:(DBLINK,MVC,JAVAWEB,JAVA,JDBC)