1、张怀平,密码:yishaoku等。系统功能流程图如下:图1 系统角色设计该用户治理系统的角色要紧由两类,一般用户角色和治理员角色。其中一般用户又能够分为未注册用户,和已经注册用户。两类用户各自的权限如下:用户:图2治理员:图3 要紧业务流程设计 用户注册 图4 用户登岸 图5 用户修改密码图6 治理员添加用户 图7 治理员修改用户信息 图8 治理员删除用户图9二、数据库表设计本系统主若是模拟用户的信息治理,要紧涉及两张表,一般用户信息表t_user,治理员信息表t_manager。一般用户信息表如下: 表2字段名数据类型长度含义备注user_idvarchar11用户账号主码user_name
2、50用户姓名非空password用户密码contact_tel20联系电话email电子邮箱create_datedatetime无申请日期一般用户信息表t_user的ER图如下: 图10治理员信息表如下: 表3name治理员信息表ER图如下:图113、功能实现一般用户信息表和治理员信息的表通过两个JavaBean来封装,代码如下:一般用户:package class User private String userId; private String userName; private String password; private String contactTel; private S
3、tring email; private Date createDate; public String getContactTel() return contactTel; public void setContactTel(String contactTel) = contactTel; public Date getCreateDate() return createDate; public void setCreateDate(Date createDate) = createDate; public String getEmail() return email; public void
4、 setEmail(String email) = email; public String getPassword() return password; public void setPassword(String password) = password; public String getUserId() return userId; public void setUserId(String userId) = userId; public String getUserName() return userName; public void setUserName(String userN
5、ame) = userName;治理员如下:package class Manager private String name; public String getName() return name; public void setName(String name) = name;整个系统对数据库的操作是一个重要的环节,因为对数据库的操作是一个耗资源的操作,因此连接数据库和操作数据库的代码要合理设计,本系统对数据库操作代码如下:package .*;public class DB public static Connection getConn() Connection conn = nul
6、l; try (); conn = (jdbc: catch (ClassNotFoundException e) (); catch (SQLException e) return conn; public static void closeConn(Connection conn) if(conn != null) conn = null; public static void closeStmt(Statement stmt) if(stmt ! stmt = null; public static void closeRs(ResultSet rs) if(rs ! rs = null
7、;上面的代码是连接数据库效劳器,查询效劳,修改效劳和关闭数据库连接的代码。接下来介绍该系统具体实现对用户表的CRUD(增删改查)的操作。代码如下:具体操作用户信息表的代码:package class UserDao4MySqlImpl implements UserDao public void addUser(Connection conn, User user) String sql = insert into t_user(user_id, user_name, password, contact_tel, email, create_date) + values(?, ?); Prep
8、aredStatement pstmt = null; pstmt = (sql); (1, (); (2, (); (3, (); (4, (); (5, (); (6, new Timestamp().getTime(); finally (pstmt); public void deleteUsers(Connection conn, String userIdList) StringBuffer sbfSql = new StringBuffer(); for (int i = 0; i ; i+) ).append(userIdListi).append().append(,dele
9、te from t_user where user_id in ( + (0, () - 1) + Statement stmt = null; stmt = (); (sql); (stmt); (conn); public List findAllUserList() select * from t_user order by user_id ResultSet rs = null; List userList = new ArrayList(); conn = (); rs = (sql); while () User user = new User();user_id);user_na
10、mepasswordcontact_telemailcreate_date (user); (rs); return userList; public User findUserById(String userId) select * from t_user where user_id=? User user = null; (1, userId); rs = (); if () user = new User(); return user; public User userSearch(String userId,String password) and password=? (2, pas
11、sword); public void modifyUser(Connection conn, User user) update t_user set user_name=?, password=?, contact_tel=?, email=? where user_id=?操作治理员的代码:package class ManagerDao4MySqlImpl implements ManagerDao public Manager findManager(String name, String password) select * from t_manager where name=?
12、Manager manager = null; (1, name); manager = new Manager();name return manager;在网页之间跳转和将数据写入数据库中等操作都会设计利用中文的问题,为了专门好的解决中文乱码问题,本系统利用了Filter(过滤器)来处置中文乱码。package class AotoriFilter implements Filter public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws I
13、OException, ServletException HttpServletRequest hq = (HttpServletRequest) request; HttpServletResponse hp = (HttpServletResponse) response;text/html;charset=GBKGBK (request, response); public void destroy() public void init(FilterConfig arg0) throws ServletException 过滤器在中的配置如下: filterfilter-classurl
14、-pattern/*/filter-mapping在用户注册的时候和治理员在添加用户修改用户信息的时候,都第一通过JavaScript验证数据格式正否正确,正确才向效劳器提交信息,关键验证代码如下:script type=text/javascript function checkCount(Node) var value=; ontcolor(green return true; elsered return false; function checkPassword(Node) var spanNode=(userPassword var reg=/w6,$/i; if(reg) =密码格
15、式正确.fontcolor(密码很多于6位 function checkRePassword(Node)rePassword var passValue=(pass).value; if(passValue=value&passValue!=)密码正确两次密码不一致 function checkUserName(Node)userName if(value!用户名格式正确用户名不能为空 function checkTel(Node)tel var reg=/0-95,/i;电话号格式正确电话号格式不正确 function checkEmail(Node) var reg=/w+w+(.w+)+
16、$/;邮箱格式正确邮箱格式不正确 function checkAll() var formNode=0; with(formNode) if(checkCount(userCount)&checkEmail(email)&checkPassword()&checkRePassword( checkTel(checkUserName() else/script系统功能截图:后台登岸界面:图12后台治理页面:图13前台用户登岸界面:后台治理员添加用户界面:图14用户注册界面:图154、个人总结 本系统尽管功能有限,但也是我依照一样软件的开发流程一步一步进行的,从需求分析,到数据库的设计,再到具体编
17、码的实现,再到测试运行。循序渐进的进行,让我再一次感受到了软件开发的严谨性和标准性。在具体开发进程中也碰到了很多问题,可是借助于互联网络最终都取得了解决。该系统功能不是很完善,可是我在设计的时候考虑到了可扩展行,能够很方便的在该系统上扩展新的功能,我提供了很多接口,便于以后扩展利用。因为最近在看设计模式的书,因此在编写具体代码的利用,我也成心识的利用了一些设计模式,比如:单例模式,工厂模式,接口模式等等。利用这些设计模式能够让该系统具有更好的扩展性和可保护性。固然本系统也还存在一些不足,比如权限问题,若是一个用户直接访问治理员登岸成功的页面的话,那么成功进入。这时就需要实现权限治理,那个能够利用一个Filter来实现,在Filer中判定用户是不是有访问某一个页面的权限,有的话就许诺访问,没有的话就自动跳转到登岸页面。总之,这次课设让我学到很多东西,有专门大的收成。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1