人口普查系统
1、项目需求:
开展第七次全国人口普查,将为编制“十四五”规划提供重要信息支持;推动实现人口与经济社会、资源环境协调发展,为深化供给侧结构性改革,推动经济高质量发展,建设现代化经济体系提供强有力的支持;人口普查还将为完善人口发展战略和政策体系,促进人口长期均衡发展提供重要信息支持。
2.系统要求与功能设计
2.1 页面功能要求
(1)能够在Tomcat服务器中正确部署,并通过浏览器查看;(1分)
(2)网站页面整体风格统一;
图1 人口普查系统功能结构图
(3)主页面:要求显示人口登记、修改人口信息、删除人口信息、查询人口信息,人口信息浏览五个子菜单。(1分)
(4)人口登记页面:(6分)
①完成添加人口信息登记,基本信息和填报限制如下表所示
户 别 |
家庭户 集体户(单选框) |
住房类型 |
家庭住宅、集体住所、工作地住所、其他住宅、无住宅(单选框) |
本户现住房面积 |
XXXXX平方米(文本框,只能输入这个整数) |
本户现住房间数 |
XXXXX间(文本框,只能输入这个整数) |
户主姓名 |
XXXXX(文本框) |
身份证号码 |
XXXXXXXXXXXXXXXXXX(判断身份证位数13位并且只能录入数字、最后一位可以录入X) |
性别 |
男/女(单选框) |
民族 |
(文本框) |
受教育程度 |
研究生、大学本科、大学专科、高中、初中、小学、未上过学(下拉框实现) |
②点击“提交”按钮,保存成功则跳转到人口基本信息浏览界面,新录入的信息置顶显示。失败则提示错误信息,返回当前页面
(5)修改人口信息页面:(3分)
输入户主姓名,显示其余信息,可对身份证号码、性别、民族、受教育程度进行修改。(身份证号码、性别、受教育程度必须符合录入要求);如果该名户主信息数据库不存在,则提示“该户主信息不存在”。(3分)
(6)删除人口信息页面:录入户主姓名,显示详细信息后,点击“删除”按钮,弹出提示框,提示“是否确认删除该户主信息”,确认后删除该信息。(1分)
(7)浏览人口信息页面:(2分)
以列表形式显示人口基本信息,结果列表中显示姓名、性别,民族、受教育程度基本信息,点击姓名,可以跳转到个人详细信息。
(8)查询人口信息页面:(3分)
要求可以根据人口姓名、性别、民族、受教育程度四种条件实现模糊查询,输出结果以列表形式显示,显示人口姓名、性别、民族、受教育程度基本信息,点击列表中的姓名,跳转到人口个人详细信息页面。
本次实验我建立了五层,如下图所示:
entity层:
entity层为数据表对应的Java类,是封装数据的模型,比如人口普查系统,在前台提交的人口信息,后台会对应一个类,把课程的信息封装到中。
1 package entity; 2 3 public class Teenager { 4 private int id; 5 private String hubie; 6 private String leixing; 7 private String area; 8 private String num; 9 private String name; 10 private String haoma; 11 private String sex; 12 private String minzu; 13 private String jiaoyu; 14 15 public int getId() { 16 return id; 17 } 18 public void setId(int id) { 19 this.id = id; 20 } 21 public String getHubie() { 22 return hubie; 23 } 24 public void setHubie(String hubie) { 25 this.hubie = hubie; 26 } 27 public String getLeixing() { 28 return leixing; 29 } 30 public void setLeixing(String leixing) { 31 this.leixing = leixing; 32 } 33 public String getArea() { 34 return area; 35 } 36 public void setArea(String area) { 37 this.area = area; 38 } 39 public String getNum() { 40 return num; 41 } 42 public void setNum(String num) { 43 this.num = num; 44 } 45 public String getName() { 46 return name; 47 } 48 public void setName(String name) { 49 this.name = name; 50 } 51 public String getHaoma() { 52 return haoma; 53 } 54 public void setHaoma(String haoma) { 55 this.haoma = haoma; 56 } 57 58 public String getSex() { 59 return sex; 60 } 61 public void setSex(String sex) { 62 this.sex = sex; 63 } 64 public String getMinzu() { 65 return minzu; 66 } 67 public void setMinzu(String minzu) { 68 this.minzu = minzu; 69 } 70 public String getJiaoyu() { 71 return jiaoyu; 72 } 73 public void setJiaoyu(String jiaoyu) { 74 this.jiaoyu = jiaoyu; 75 } 76 public Teenager() { 77 super(); 78 // TODO 自动生成的构造函数存根 79 } 80 public Teenager(String hubie, String leixing, String area, String num, String name, String haoma, String sex, String minzu, 81 String jiaoyu) { 82 super(); 83 this.hubie = hubie; 84 this.leixing = leixing; 85 this.area = area; 86 this.num = num; 87 this.name = name; 88 this.haoma = haoma; 89 this.sex = sex; 90 this.minzu = minzu; 91 this.jiaoyu = jiaoyu; 92 } 93 public Teenager(int id, String hubie, String leixing, String area, String num, String name, String haoma, String sex, 94 String minzu, String jiaoyu) { 95 super(); 96 this.id = id; 97 this.hubie = hubie; 98 this.leixing = leixing; 99 this.area = area; 100 this.num = num; 101 this.name = name; 102 this.haoma = haoma; 103 this.sex = sex; 104 this.minzu = minzu; 105 this.jiaoyu = jiaoyu; 106 } 107 108 }
util层:
util用于连接数据库,我们写一个DBUtil.java
1 package util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class DBUtil { 10 11 public static String db_url = "jdbc:mysql://localhost:3306/text?serverTimezone=GMT%2B8&useSSL=false"; 12 public static String db_user = "root"; 13 public static String db_pass = "0424wyhhxx"; 14 15 public static Connection getConn () { 16 Connection conn = null; 17 18 try { 19 Class.forName("com.mysql.jdbc.Driver"); 20 conn = DriverManager.getConnection(db_url, db_user, db_pass); 21 } catch (Exception e) { 22 e.printStackTrace(); 23 } 24 25 return conn; 26 } 27 28 //关闭 29 public static void close(Connection conn) { 30 if (conn != null) { 31 try { 32 conn.close(); 33 } catch (SQLException e) { 34 e.printStackTrace(); 35 } 36 } 37 } 38 public static void close (Statement state, Connection conn) { 39 if (state != null) { 40 try { 41 state.close(); 42 } catch (SQLException e) { 43 e.printStackTrace(); 44 } 45 } 46 47 if (conn != null) { 48 try { 49 conn.close(); 50 } catch (SQLException e) { 51 e.printStackTrace(); 52 } 53 } 54 } 55 56 public static void close (ResultSet rs, Statement state, Connection conn) { 57 if (rs != null) { 58 try { 59 rs.close(); 60 } catch (SQLException e) { 61 e.printStackTrace(); 62 } 63 } 64 65 if (state != null) { 66 try { 67 state.close(); 68 } catch (SQLException e) { 69 e.printStackTrace(); 70 } 71 } 72 73 if (conn != null) { 74 try { 75 conn.close(); 76 } catch (SQLException e) { 77 e.printStackTrace(); 78 } 79 } 80 } 81 82 }
dao层:
dao层叫数据访问层,全称为data access object,专门负责一些对数据库的访问,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查。
1 package dao; 2 import java.sql.Connection; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import entity.Teenager; 11 import util.DBUtil; 12 public class TeenagerDao { 13 14 public boolean add(Teenager ten) 15 { 16 String sql="insert into Teenager(hubie, leixing,area,num, name, haoma, sex, minzu,jiaoyu)values" 17 + "('" + ten.getHubie() + "','" + ten.getLeixing() + "','" + ten.getArea() + "','" + ten.getNum() + "','" + ten.getName() + "','" + ten.getHaoma() + "','" + ten.getSex()+ "','" + ten.getMinzu() + "','" + ten.getJiaoyu()+ "')"; 18 19 Connection conn=DBUtil.getConn(); 20 Statement state=null; 21 boolean f=false; 22 int a = 0; 23 try { 24 state = conn.createStatement(); 25 state.executeUpdate(sql); 26 } catch (SQLException e) { 27 // TODO Auto-generated catch block 28 e.printStackTrace(); 29 } finally { 30 31 DBUtil.close(state, conn); 32 } 33 if(a>0) 34 f=true; 35 return f; 36 } 37 38 public Teenager getbyname(String name) { 39 String sql = "select * from Teenager where name ='" + name + "'"; 40 Connection conn = DBUtil.getConn(); 41 Statement state = null; 42 ResultSet rs = null; 43 Teenager ten = null; 44 45 try { 46 state = conn.createStatement(); 47 rs = state.executeQuery(sql); 48 while (rs.next()) { 49 int id=rs.getInt("id"); 50 51 String hubie2 = rs.getString("hubie"); 52 String leixing2 = rs.getString("leixing"); 53 String area2=rs.getString("area"); 54 String num2 = rs.getString("num"); 55 String haoma2 =rs.getString("haoma"); 56 String sex2=rs.getString("sex"); 57 String minzu2=rs.getString("minzu"); 58 String jiaoyu2=rs.getString("jiaoyu"); 59 ten = new Teenager(id,hubie2, leixing2,area2,num2, name, haoma2, sex2, minzu2,jiaoyu2); 60 } 61 } catch (Exception e) { 62 e.printStackTrace(); 63 } finally { 64 DBUtil.close(rs, state, conn); 65 } 66 67 return ten; 68 } 69 70 71 //delete 72 public boolean delete(String name) 73 { 74 String sql="delete from Teenager where name='" + name + "'"; 75 Connection conn = DBUtil.getConn(); 76 Statement state = null; 77 int a = 0; 78 boolean f = false; 79 try { 80 state = conn.createStatement(); 81 a = state.executeUpdate(sql); 82 } catch (SQLException e) { 83 e.printStackTrace(); 84 } finally { 85 DBUtil.close(state, conn); 86 } 87 88 if (a > 0) { 89 f = true; 90 } 91 return f; 92 } 93 //update 94 public boolean update(Teenager b) 95 { 96 Connection con=null; 97 PreparedStatement pstmt=null; 98 ResultSet rs=null; 99 try { 100 con=DBUtil.getConn(); 101 String sql="update Teenager set hubie=?,leixing=?,area=?,num=?,name=?,haoma=?,sex=?,minzu=? where id=?"; 102 pstmt=con.prepareStatement(sql); 103 pstmt.setString(1, b.getHubie()); 104 pstmt.setString(2, b.getLeixing()); 105 pstmt.setString(3, b.getArea()); 106 pstmt.setString(4, b.getNum()); 107 pstmt.setString(5, b.getName()); 108 pstmt.setString(6, b.getHaoma()); 109 pstmt.setString(7, b.getSex()); 110 pstmt.setString(7, b.getMinzu()); 111 pstmt.setInt(8, b.getId()); 112 pstmt.executeUpdate(); 113 return true; 114 } 115 catch (SQLException e) { 116 System.out.println("更新失败"); 117 e.printStackTrace(); 118 } 119 finally { 120 DBUtil.close(rs, pstmt, con); 121 } 122 return false; 123 } 124 //查找 125 public boolean name(String name) { 126 boolean flag = false; 127 String sql = "select name from Teenager where name = '" + name + "'"; 128 Connection conn = DBUtil.getConn(); 129 Statement state = null; 130 ResultSet rs = null; 131 132 try { 133 state = conn.createStatement(); 134 rs = state.executeQuery(sql); 135 while (rs.next()) { 136 flag = true; 137 } 138 } catch (SQLException e) { 139 e.printStackTrace(); 140 } finally { 141 DBUtil.close(rs, state, conn); 142 } 143 return flag; 144 } 145 146 147 public List<Teenager> search(String name, String sex, String minzu,String jiaoyu) 148 { 149 String sql = "select * from Teenager where "; 150 151 152 if (name != "") { 153 sql += "name like '%" +name+ "%'"; 154 } 155 156 if (sex != "") { 157 sql += "sex like '%" +sex+ "%'"; 158 } 159 if(minzu!="") { 160 sql+="minzu like '%"+minzu+ "%'"; 161 } 162 163 if(jiaoyu!="") { 164 sql+="jiaoyu like '%" +jiaoyu+ "%'"; 165 } 166 List<Teenager> list = new ArrayList<>(); 167 Connection conn = DBUtil.getConn(); 168 Statement state = null; 169 ResultSet rs = null; 170 Teenager bean = null; 171 try { 172 state = conn.createStatement(); 173 rs = state.executeQuery(sql); 174 while (rs.next()) { 175 String hubie2=rs.getString("hubie"); 176 String leixing2 = rs.getString("leixing"); 177 String area2 = rs.getString("area"); 178 String num2 = rs.getString("num"); 179 String name2=rs.getString("name"); 180 String haoma2 = rs.getString("haoma"); 181 String sex2 =rs.getString("sex"); 182 String minzu2=rs.getString("minzu"); 183 String jiaoyu2=rs.getString("jiaoyu"); 184 bean =new Teenager(hubie2, leixing2,area2,num2, name2, haoma2, sex2, minzu2,jiaoyu2); 185 list.add(bean); 186 } 187 } catch (SQLException e) { 188 e.printStackTrace(); 189 } finally { 190 DBUtil.close(rs, state, conn); 191 } 192 193 return list; 194 } 195 196 public List<Teenager> list() 197 { 198 String sql = "select * from Teenager"; 199 List<Teenager> list = new ArrayList<>(); 200 Connection conn = DBUtil.getConn(); 201 Statement state = null; 202 ResultSet rs = null; 203 204 try { 205 state = conn.createStatement(); 206 rs = state.executeQuery(sql); 207 while (rs.next()) { 208 Teenager bean = null; 209 int id=rs.getInt("id"); 210 String hubie2=rs.getString("hubie"); 211 String leixing2 = rs.getString("leixing"); 212 String area2 = rs.getString("area"); 213 String num2 = rs.getString("num"); 214 String name=rs.getString("name"); 215 String haoma2 = rs.getString("haoma"); 216 String sex2 =rs.getString("sex"); 217 String minzu2=rs.getString("minzu"); 218 String jiaoyu2=rs.getString("jiaoyu"); 219 bean =new Teenager(id,hubie2, leixing2,area2,num2, name, haoma2, sex2, minzu2,jiaoyu2); 220 list.add(bean); 221 } 222 } catch (SQLException e) { 223 e.printStackTrace(); 224 } finally { 225 DBUtil.close(rs, state, conn); 226 } 227 228 return list; 229 } 230 }
servlet层:
servlet是一个java接口,其功能如下(1)创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML 页面。我们建立一个course_servlet.java。
(2)创建可嵌入到现有 HTML 页面中的一部分 HTML 页面( HTML 片段)。
(3)与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。
1 package servlet; 2 import java.io.IOException; 3 import java.util.List; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 import entity.Teenager; 12 import service.TeenagerService; 13 @WebServlet("/TeenagerServlet") 14 public class TeenagerServlet extends HttpServlet{ 15 private static final long serialVersionUID = 1L; 16 17 TeenagerService service = new TeenagerService(); 18 19 20 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 21 req.setCharacterEncoding("utf-8"); 22 String method = req.getParameter("method"); 23 24 if ("add".equals(method)) { 25 add(req, resp); 26 } else if ("del".equals(method)) { 27 del(req, resp); 28 } else if ("update".equals(method)) { 29 update(req, resp); 30 } else if ("search".equals(method)) { 31 search(req, resp); 32 } else if ("list".equals(method)) { 33 list(req, resp); 34 } else if("getbyname".equals(method)) { 35 getbyname(req,resp); 36 }else if("getbyname2".equals(method)) { 37 getbyname2(req,resp); 38 } 39 } 40 41 private void getbyname(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 42 req.setCharacterEncoding("utf-8"); 43 String name = req.getParameter("name"); 44 Teenager ten = service.getbyname(name); 45 if(ten==null) 46 { 47 req.setAttribute("message", "未找到该住户"); 48 req.getRequestDispatcher("del.jsp").forward(req, resp); 49 } 50 else 51 { 52 req.setAttribute("ten", ten); 53 req.getRequestDispatcher("del2.jsp").forward(req,resp); 54 } 55 } 56 57 private void getbyname2(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 58 req.setCharacterEncoding("utf-8"); 59 String name = req.getParameter("name"); 60 Teenager ten = service.getbyname(name); 61 if(ten==null) 62 { 63 req.setAttribute("message", "未找到该住户"); 64 req.getRequestDispatcher("xiugai.jsp").forward(req, resp); 65 } 66 else 67 { 68 req.setAttribute("ten", ten); 69 req.getRequestDispatcher("update.jsp").forward(req,resp); 70 } 71 } 72 73 private void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { 74 req.setCharacterEncoding("utf-8"); 75 String hubie = req.getParameter("hubie"); 76 String leixing =req.getParameter("leixing"); 77 String area=req.getParameter("area"); 78 String num=req.getParameter("num"); 79 String name=req.getParameter("name"); 80 String haoma=req.getParameter("haoma"); 81 String sex = req.getParameter("sex"); 82 String minzu = req.getParameter("minzu"); 83 String jiaoyu = req.getParameter("jiaoyu"); 84 Teenager ten =new Teenager(hubie,leixing, area, num,name, haoma, sex, minzu, 85 jiaoyu); 86 if(service.add(ten)) { 87 req.setAttribute("message", "添加成功"); 88 req.getRequestDispatcher("TeenagerServlet?method=list").forward(req,resp); 89 } else { 90 req.setAttribute("message", "姓名重复,请重新录入"); 91 req.getRequestDispatcher("add.jsp").forward(req,resp); 92 } 93 } 94 95 private void list(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 96 req.setCharacterEncoding("utf-8"); 97 98 List<Teenager> tens = service.list(); 99 req.setAttribute("tens", tens); 100 req.getRequestDispatcher("list.jsp").forward(req,resp); 101 } 102 103 private void del(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 104 req.setCharacterEncoding("utf-8"); 105 String name=req.getParameter("name"); 106 service.del(name); 107 req.setAttribute("message", "删除成功"); 108 req.getRequestDispatcher("del.jsp").forward(req,resp); 109 } 110 111 private void update(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 112 req.setCharacterEncoding("utf-8"); 113 int id = Integer.parseInt(req.getParameter("id")); 114 String hubie = req.getParameter("hubie"); 115 String leixing =req.getParameter("leixing"); 116 String area=req.getParameter("area"); 117 String num=req.getParameter("num"); 118 String name=req.getParameter("name"); 119 String haoma=req.getParameter("haoma"); 120 String sex = req.getParameter("sex"); 121 String minzu = req.getParameter("minzu"); 122 String jiaoyu = req.getParameter("jiaoyu"); 123 124 Teenager ten =new Teenager(id,hubie, leixing,area,num, name, haoma, sex, minzu,jiaoyu); 125 service.update(ten); 126 req.setAttribute("message", "修改成功"); 127 req.getRequestDispatcher("TeenagerServlet?method=list").forward(req,resp); 128 } 129 130 private void search(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 131 req.setCharacterEncoding("utf-8"); 132 String name=req.getParameter("name"); 133 String sex = req.getParameter("sex"); 134 String minzu = req.getParameter("minzu"); 135 String jiaoyu = req.getParameter("jiaoyu"); 136 List<Teenager> tens = service.search(name, sex, minzu,jiaoyu); 137 if(tens==null) 138 { 139 req.setAttribute("message", "没有该住户"); 140 req.getRequestDispatcher("search.jsp").forward(req,resp); 141 } 142 else { 143 req.setAttribute("tens", tens); 144 req.getRequestDispatcher("list2.jsp").forward(req,resp); 145 } 146 } 147 148 }
service层:
接收客户端请求,完成操作任务。创建一个类继承httpservlet,重写doGet和doPost方法,在其中实现后台和前台交互。
1 package service; 2 import java.util.List; 3 4 import dao.TeenagerDao; 5 import entity.Teenager; 6 public class TeenagerService { 7 TeenagerDao tDao=new TeenagerDao(); 8 public boolean add(Teenager ten) 9 { 10 boolean f = false; 11 if(!tDao.name(ten.getName())) 12 { 13 tDao.add(ten); 14 f=true; 15 } 16 return f; 17 } 18 19 public boolean del(String name) 20 { 21 tDao.delete(name); 22 return true; 23 } 24 25 public boolean update(Teenager ten) 26 { 27 tDao.update(ten); 28 return true; 29 } 30 31 public Teenager getbyname(String name) 32 { 33 return tDao.getbyname(name); 34 } 35 36 public List<Teenager> search( String name, String sex, String minzu,String jiaoyu) { 37 return tDao.search(name, sex, minzu,jiaoyu); 38 } 39 40 41 public List<Teenager> list() 42 { 43 return tDao.list(); 44 } 45 }
jsp页面:
index.jsp页面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <style type="text/css"> 10 *{margin:0;padding:0;}/*去掉页面样式*/ 11 body{ 12 background-color:pink; 13 text-align:center; 14 } 15 .content{ 16 background-color:#6666ff; 17 position:absolute;/*绝对定位*/ 18 top:10%; 19 left:0; 20 width:100%; 21 height:800px; 22 } 23 .main{ 24 text-align:center;/*文本居中*/ 25 max-width:600px; 26 height:400px; 27 padding:50px 0px;/*上下80px,左右为0*/ 28 /*background:yellow;*//*验证div的位置*/ 29 margin:0 auto;/*设置上右下左,居中显示*/ 30 } 31 32 .main h1{ 33 font-family:"楷体";/*设置字体*/ 34 font-size:70px;/*设置字体大小*/ 35 font-weight:2px;/*调整字体粗细*/ 36 } 37 form{ 38 padding:0px 0; 39 } 40 form a{ 41 text-decoration:none;/*去除下划线*/ 42 color:pink; 43 font-size:50px; 44 font-family:"楷体"; 45 font-weight:2px; 46 } 47 body p{ 48 padding:15px 0; 49 color:brown; 50 font-size:35px; 51 font-family:"楷体"; 52 font-weight:2px; 53 } 54 form input{ 55 border:1px solid white; 56 margin:0px auto 10px auto;/*上 右 下 左*/ 57 padding:10px; 58 width:220px; 59 border-radius:30px;/*H5设置圆角边框*/ 60 font-size:18px; 61 font-weight:300; 62 text-align:center; /*光标输入中间*/ 63 } 64 form label{ 65 font-size:30px; 66 } 67 form input:hover{ 68 background-color:#66FFFF; 69 } 70 form button{ 71 border:5px solid white; 72 background-color:#66FF00; 73 border-radius:10px; 74 border:0; 75 height:30px; 76 width:145px; 77 padding:5px 10px; 78 margin-align:center; 79 80 } 81 form button:hover{ 82 background-color:#66FFFF; 83 } 84 </style> 85 86 <body> 87 <p>人口普查系统</p> 88 <div class="content" align="center"> 89 <div class="main"> 90 <form> 91 <a href="add.jsp">信息登记</a> 92 <br> 93 <br> 94 <a href="xiugai.jsp">信息修改</a> 95 <br><br> 96 <a href="del.jsp">信息删除</a> 97 <br><br> 98 <a href="search.jsp">信息查询</a> 99 <br><br> 100 <a href="TeenagerServlet?method=list">信息显示</a> 101 </form> 102 </div> 103 </div> 104 </body> 105 </html>
主界面截图:
信息登记:
添加成功以后显示
信息修改:
模糊查询:
信息删除:
信息显示: