版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 《WEB技術(shù)》</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 題目:_________用戶信息管理系統(tǒng)____________</p><p> 學(xué) 院 計(jì)算機(jī)與信息工程學(xué)院</p><p> 班 級(jí) ____ _
2、____</p><p> 學(xué) 號(hào) ___ _ __ </p><p> 姓 名 __ _____ _</p><p> 2013年 6 月</p><p><b> 一、任務(wù)書</b></p><p> 本系統(tǒng)是由我個(gè)人自己完成。系統(tǒng)設(shè)計(jì)目標(biāo)如下:</p&
3、gt;<p><b> 表1</b></p><p><b> 二、設(shè)計(jì)報(bào)告</b></p><p><b> 1、功能分析</b></p><p><b> 1.1 功能概況</b></p><p> 該系統(tǒng)主要分為前臺(tái)系統(tǒng)和后臺(tái)
4、系統(tǒng)。前臺(tái)系統(tǒng)功能包括用戶注冊(cè),用戶登陸,用戶信息查看,用戶密碼修改等功能。后臺(tái)只有管理員才可以登陸,主要功能有系統(tǒng)用戶的添加,系統(tǒng)用戶信息的修改,系統(tǒng)用戶信息的查詢,系統(tǒng)用戶刪除等。</p><p> 管理員默認(rèn)的的賬戶是yishaoku,密碼是123。如果想改變可以在數(shù)據(jù)庫(kù)中的t_manager中進(jìn)行修改。普通用戶系統(tǒng)中已經(jīng)存在一些。如:賬戶:azhang,姓名:張懷平,密碼:yishaoku等。</
5、p><p> 系統(tǒng)功能流程圖如下:</p><p><b> 圖1</b></p><p> 1.2 系統(tǒng)角色設(shè)計(jì)</p><p> 該用戶管理系統(tǒng)的角色主要由兩類,普通用戶角色和管理員角色。其中普通用戶又可以分為未注冊(cè)用戶,和已經(jīng)注冊(cè)用戶。兩類用戶各自的權(quán)限如下:</p><p><b
6、> 用戶:</b></p><p><b> 圖2</b></p><p><b> 管理員:</b></p><p><b> 圖3</b></p><p> 1.3 主要業(yè)務(wù)流程設(shè)計(jì)</p><p> 1.3.1 用戶注
7、冊(cè)</p><p><b> 圖4</b></p><p> 1.3.2 用戶登陸</p><p><b> 圖5</b></p><p> 1.3.3 用戶修改密碼</p><p><b> 圖6</b></p><p&g
8、t; 1.3.4 管理員添加用戶</p><p><b> 圖7</b></p><p> 1.3.5 管理員修改用戶信息</p><p><b> 圖8</b></p><p> 1.3.6 管理員刪除用戶</p><p><b> 圖9</b&
9、gt;</p><p><b> 2、數(shù)據(jù)庫(kù)表設(shè)計(jì)</b></p><p> 本系統(tǒng)主要是模擬用戶的信息管理,主要涉及兩張表,普通用戶信息表t_user,管理員信息表t_manager。</p><p> 普通用戶信息表如下:</p><p><b> 表2</b></p>&
10、lt;p> 普通用戶信息表t_user的ER圖如下:</p><p><b> 圖10</b></p><p><b> 管理員信息表如下:</b></p><p><b> 表3</b></p><p> 管理員信息表ER圖如下:</p><
11、;p><b> 圖11</b></p><p><b> 3、功能實(shí)現(xiàn)</b></p><p> 普通用戶信息表和管理員信息的表通過(guò)兩個(gè)JavaBean來(lái)封裝,代碼如下:</p><p><b> 普通用戶:</b></p><p> package com.b
12、jsxt.drp.business.usermgr.model;</p><p> import java.util.Date;</p><p> public class User {</p><p> private String userId;</p><p> private String userName;</p>
13、;<p> private String password;</p><p> private String contactTel;</p><p> private String email;</p><p> private Date createDate;</p><p> public String getCo
14、ntactTel() {</p><p> return contactTel;</p><p><b> }</b></p><p> public void setContactTel(String contactTel) {</p><p> this.contactTel = contactTel;<
15、;/p><p><b> }</b></p><p> public Date getCreateDate() {</p><p> return createDate;</p><p><b> }</b></p><p> public void setCreate
16、Date(Date createDate) {</p><p> this.createDate = createDate;</p><p><b> }</b></p><p> public String getEmail() {</p><p> return email;</p><p
17、><b> }</b></p><p> public void setEmail(String email) {</p><p> this.email = email;</p><p><b> }</b></p><p> public String getPassword()
18、 {</p><p> return password;</p><p><b> }</b></p><p> public void setPassword(String password) {</p><p> this.password = password;</p><p>&l
19、t;b> }</b></p><p> public String getUserId() {</p><p> return userId;</p><p><b> }</b></p><p> public void setUserId(String userId) {</p>
20、;<p> this.userId = userId;</p><p><b> }</b></p><p> public String getUserName() {</p><p> return userName;</p><p><b> }</b></p&g
21、t;<p> public void setUserName(String userName) {</p><p> this.userName = userName;</p><p><b> }</b></p><p><b> }</b></p><p><b>
22、; 管理員如下:</b></p><p> package com.bjsxt.drp.business.usermgr.model;</p><p> public class Manager {</p><p> private String name;</p><p> private String passwor
23、d;</p><p> public String getName() {</p><p> return name;</p><p><b> }</b></p><p> public void setName(String name) {</p><p> this.name =
24、name;</p><p><b> }</b></p><p> public String getPassword() {</p><p> return password;</p><p><b> }</b></p><p> public void set
25、Password(String password) {</p><p> this.password = password;</p><p><b> }</b></p><p><b> }</b></p><p> 整個(gè)系統(tǒng)對(duì)數(shù)據(jù)庫(kù)的操作是一個(gè)重要的環(huán)節(jié),因?yàn)閷?duì)數(shù)據(jù)庫(kù)的操作是一個(gè)耗資源的
26、操作,所以連接數(shù)據(jù)庫(kù)和操作數(shù)據(jù)庫(kù)的代碼要合理設(shè)計(jì),本系統(tǒng)對(duì)數(shù)據(jù)庫(kù)操作代碼如下:</p><p> package com.bjsxt.drp.business.util;</p><p> import java.sql.*;</p><p> public class DB {</p><p> public static Conn
27、ection getConn() {</p><p> Connection conn = null;</p><p><b> try {</b></p><p> Class.forName("com.mysql.jdbc.Driver");</p><p> conn = DriverM
28、anager.getConnection("jdbc:mysql://localhost:3306/db_user?user=root&password=yishaoku");</p><p> } catch (ClassNotFoundException e) {</p><p> e.printStackTrace();</p><
29、p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p> return conn;</p><p><b> }</b></p><p>
30、public static void closeConn(Connection conn) {</p><p><b> try {</b></p><p> if(conn != null) {</p><p> conn.close();</p><p> conn = null;</p>&l
31、t;p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p>&
32、lt;p> public static void closeStmt(Statement stmt) {</p><p><b> try {</b></p><p> if(stmt != null) {</p><p> stmt.close();</p><p> stmt = null;</
33、p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b><
34、/p><p> public static void closeRs(ResultSet rs) {</p><p><b> try {</b></p><p> if(rs != null) {</p><p> rs.close();</p><p> rs = null;</p
35、><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></
36、p><p><b> }</b></p><p> 上面的代碼是連接數(shù)據(jù)庫(kù)服務(wù)器,查詢服務(wù),修改服務(wù)和關(guān)閉數(shù)據(jù)庫(kù)連接的代碼。接下來(lái)介紹該系統(tǒng)具體實(shí)現(xiàn)對(duì)用戶表的CRUD(增刪改查)的操作。代碼如下:</p><p> 具體操作用戶信息表的代碼:</p><p> package com.bjsxt.drp.busine
37、ss.usermgr.dao;</p><p> import java.sql.Connection;</p><p> import java.sql.PreparedStatement;</p><p> import java.sql.ResultSet;</p><p> import java.sql.SQLExcepti
38、on;</p><p> import java.sql.Statement;</p><p> import java.sql.Timestamp;</p><p> import java.util.ArrayList;</p><p> import java.util.List;</p><p> i
39、mport com.bjsxt.drp.business.usermgr.model.User;</p><p> import com.bjsxt.drp.business.util.DB;</p><p> public class UserDao4MySqlImpl implements UserDao {</p><p> public void ad
40、dUser(Connection conn, User user) {</p><p> String sql = "insert into t_user(user_id, user_name, password, contact_tel, email, create_date) "</p><p> + "values(?, ?, ?, ?, ?, ?)
41、";</p><p> PreparedStatement pstmt = null;</p><p><b> try {</b></p><p> pstmt = conn.prepareStatement(sql);</p><p> pstmt.setString(1, user.getUser
42、Id());</p><p> pstmt.setString(2, user.getUserName());</p><p> pstmt.setString(3, user.getPassword());</p><p> pstmt.setString(4, user.getContactTel());</p><p> pst
43、mt.setString(5, user.getEmail());</p><p> pstmt.setTimestamp(6, new Timestamp(user.getCreateDate().getTime()));</p><p> pstmt.executeUpdate();</p><p> } catch (SQLException e) {&
44、lt;/p><p> e.printStackTrace();</p><p> } finally {</p><p> DB.closeStmt(pstmt);</p><p><b> }</b></p><p><b> }</b></p><
45、;p> public void deleteUsers(Connection conn, String[] userIdList) {</p><p> StringBuffer sbfSql = new StringBuffer();</p><p> for (int i = 0; i < userIdList.length; i++) {</p>&l
46、t;p> sbfSql.append("'").append(userIdList[i]).append("'").append(",");</p><p><b> }</b></p><p> String sql = "delete from t_user wher
47、e user_id in ("</p><p> + sbfSql.substring(0, sbfSql.length() - 1) + ")";</p><p> Statement stmt = null;</p><p><b> try {</b></p><p> stm
48、t = conn.createStatement();</p><p> stmt.executeUpdate(sql);</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p>
49、; DB.closeStmt(stmt);</p><p> DB.closeConn(conn);</p><p><b> }</b></p><p><b> }</b></p><p> public List findAllUserList() {</p><
50、p> String sql = "select * from t_user order by user_id ";</p><p> Connection conn = null;</p><p> Statement stmt = null;</p><p> ResultSet rs = null;</p>&l
51、t;p> List userList = new ArrayList();</p><p><b> try {</b></p><p> conn = DB.getConn();</p><p> stmt = conn.createStatement();</p><p> rs = stmt.exe
52、cuteQuery(sql);</p><p> while (rs.next()) {</p><p> User user = new User();</p><p> user.setUserId(rs.getString("user_id"));</p><p> user.setUserName(rs.g
53、etString("user_name"));</p><p> user.setPassword(rs.getString("password"));</p><p> user.setContactTel(rs.getString("contact_tel"));</p><p> user.se
54、tEmail(rs.getString("email"));</p><p> user.setCreateDate(rs.getTimestamp("create_date"));</p><p> userList.add(user);</p><p><b> }</b></p>
55、<p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p> DB.closeRs(rs);</p><p> DB.closeStmt(stmt);</p><p> DB
56、.closeConn(conn);</p><p><b> }</b></p><p> return userList;</p><p><b> }</b></p><p> public User findUserById(String userId) {</p>&l
57、t;p> String sql = "select * from t_user where user_id=?";</p><p> User user = null;</p><p> Connection conn = null;</p><p> PreparedStatement pstmt = null;</p>
58、;<p> ResultSet rs = null;</p><p><b> try {</b></p><p> conn = DB.getConn();</p><p> pstmt = conn.prepareStatement(sql);</p><p> pstmt.setString
59、(1, userId);</p><p> rs = pstmt.executeQuery();</p><p> if (rs.next()) {</p><p> user = new User();</p><p> user.setUserId(rs.getString("user_id"));</p
60、><p> user.setUserName(rs.getString("user_name"));</p><p> user.setPassword(rs.getString("password"));</p><p> user.setContactTel(rs.getString("contact_tel&
61、quot;));</p><p> user.setEmail(rs.getString("email"));</p><p> user.setCreateDate(rs.getTimestamp("create_date"));</p><p><b> }</b></p><
62、;p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p> DB.closeRs(rs);</p><p> DB.closeStmt(pstmt);</p><p> DB.cl
63、oseConn(conn);</p><p><b> }</b></p><p> return user;</p><p><b> }</b></p><p> public User userSearch(String userId,String password) {</p&
64、gt;<p> String sql = "select * from t_user where user_id=? and password=?";</p><p> User user = null;</p><p> Connection conn = null;</p><p> PreparedStatement
65、pstmt = null;</p><p> ResultSet rs = null;</p><p><b> try {</b></p><p> conn = DB.getConn();</p><p> pstmt = conn.prepareStatement(sql);</p><
66、p> pstmt.setString(1, userId);</p><p> pstmt.setString(2, password);</p><p> rs = pstmt.executeQuery();</p><p> if (rs.next()) {</p><p> user = new User();</
67、p><p> user.setUserId(rs.getString("user_id"));</p><p> user.setUserName(rs.getString("user_name"));</p><p> user.setPassword(rs.getString("password"))
68、;</p><p> user.setContactTel(rs.getString("contact_tel"));</p><p> user.setEmail(rs.getString("email"));</p><p> user.setCreateDate(rs.getTimestamp("crea
69、te_date"));</p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p> DB.closeRs(r
70、s);</p><p> DB.closeStmt(pstmt);</p><p> DB.closeConn(conn);</p><p><b> }</b></p><p> return user;</p><p><b> }</b></p>
71、<p> public void modifyUser(Connection conn, User user) {</p><p> String sql = "update t_user set user_name=?, password=?, contact_tel=?, email=? where user_id=?";</p><p> Pre
72、paredStatement pstmt = null;</p><p><b> try {</b></p><p> pstmt = conn.prepareStatement(sql);</p><p> pstmt.setString(1, user.getUserName());</p><p> ps
73、tmt.setString(2, user.getPassword());</p><p> pstmt.setString(3, user.getContactTel());</p><p> pstmt.setString(4, user.getEmail());</p><p> pstmt.setString(5, user.getUserId());
74、</p><p> pstmt.executeUpdate();</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p> DB.closeStmt(pstmt);</p
75、><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 操作管理員的代碼:</b></p><p> package com.bjsxt.drp.b
76、usiness.usermgr.dao;</p><p> import java.sql.Connection;</p><p> import java.sql.PreparedStatement;</p><p> import java.sql.ResultSet;</p><p> import java.sql.SQLEx
77、ception;</p><p> import com.bjsxt.drp.business.usermgr.model.Manager;</p><p> import com.bjsxt.drp.business.util.DB;</p><p> public class ManagerDao4MySqlImpl implements ManagerD
78、ao {</p><p> public Manager findManager(String name, String password) {</p><p> String sql = "select * from t_manager where name=? and password=?";</p><p> Manager mana
79、ger = null;</p><p> Connection conn = null;</p><p> PreparedStatement pstmt = null;</p><p> ResultSet rs = null;</p><p><b> try {</b></p><p&g
80、t; conn = DB.getConn();</p><p> pstmt = conn.prepareStatement(sql);</p><p> pstmt.setString(1, name);</p><p> pstmt.setString(2, password);</p><p> rs = pstmt.exec
81、uteQuery();</p><p> if (rs.next()) {</p><p> manager = new Manager();</p><p> manager.setName(rs.getString("name"));</p><p> manager.setPassword(rs.getStr
82、ing("password"));</p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p> D
83、B.closeRs(rs);</p><p> DB.closeStmt(pstmt);</p><p> DB.closeConn(conn);</p><p><b> }</b></p><p> return manager;</p><p><b> }</b&
84、gt;</p><p><b> }</b></p><p> 在網(wǎng)頁(yè)之間跳轉(zhuǎn)和將數(shù)據(jù)寫入數(shù)據(jù)庫(kù)中等操作都會(huì)設(shè)計(jì)使用中文的問(wèn)題,為了很好的解決中文亂碼問(wèn)題,本系統(tǒng)使用了Filter(過(guò)濾器)來(lái)處理中文亂碼。</p><p><b> 代碼如下:</b></p><p> package co
85、m.bjsxt.drp.business.util;</p><p> import java.io.IOException;</p><p> import javax.servlet.Filter;</p><p> import javax.servlet.FilterChain;</p><p> import javax.s
86、ervlet.FilterConfig;</p><p> import javax.servlet.ServletException;</p><p> import javax.servlet.ServletRequest;</p><p> import javax.servlet.ServletResponse;</p><p>
87、; import javax.servlet.http.HttpServletRequest;</p><p> import javax.servlet.http.HttpServletResponse;</p><p> public class AotoriFilter implements Filter {</p><p> public void
88、doFilter(ServletRequest request, ServletResponse response,</p><p> FilterChain filterChain) throws IOException, ServletException {</p><p> HttpServletRequest hq = (HttpServletRequest) request;
89、</p><p> HttpServletResponse hp = (HttpServletResponse) response;</p><p> hp.setContentType("text/html;charset=GBK");</p><p> hq.setCharacterEncoding("GBK");&
90、lt;/p><p> filterChain.doFilter(request, response);</p><p><b> }</b></p><p> public void destroy() {</p><p><b> }</b></p><p> pub
91、lic void init(FilterConfig arg0) throws ServletException {</p><p><b> }</b></p><p><b> }</b></p><p> 過(guò)濾器在web.xml中的配置如下:</p><p><b> <
92、;filter></b></p><p> <filter-name>filter</filter-name></p><p> <filter-class>com.bjsxt.drp.business.util.AotoriFilter</filter-class></p><p><b&
93、gt; </filter></b></p><p> <filter-mapping></p><p> <filter-name>filter</filter-name></p><p> <url-pattern>/*</url-pattern></p>&
94、lt;p> </filter-mapping></p><p> 在用戶注冊(cè)的時(shí)候和管理員在添加用戶修改用戶信息的時(shí)候,都首先通過(guò)JavaScript驗(yàn)證數(shù)據(jù)格式正否正確,正確才向服務(wù)器提交信息,關(guān)鍵驗(yàn)證代碼如下:</p><p> <script type="text/javascript"></p><p>
95、; function checkCount(Node){</p><p> var value=Node.value;</p><p> //alert(value);</p><p> var spanNode=document.getElementById("userCount");</p><p> //a
96、lert(spanNode);</p><p> var reg=/^[a-z|A-Z]{1}[\w]{3,}$/i;</p><p> if(value.match(reg)){</p><p> spanNode.innerHTML="用戶賬號(hào)正確".fontcolor("green");</p>&l
97、t;p> return true;</p><p><b> }else{</b></p><p> //alert("aa");</p><p> spanNode.innerHTML="賬戶第1位必須是字母,長(zhǎng)度不小于4位".fontcolor("red");<
98、/p><p> return false;</p><p><b> }</b></p><p><b> }</b></p><p> function checkPassword(Node){</p><p> var value=Node.value;</p
99、><p> var spanNode=document.getElementById("userPassword");</p><p> var reg=/^[\w]{6,}$/i;</p><p> if(value.match(reg)){</p><p> spanNode.innerHTML="密碼格
100、式正確".fontcolor("green");</p><p> return true;</p><p><b> }else{</b></p><p> spanNode.innerHTML="密碼不少于6位".fontcolor("red");</p>
101、;<p> return false;</p><p><b> }</b></p><p><b> }</b></p><p> function checkRePassword(Node){</p><p> var value=Node.value;</p>
102、;<p> var spanNode=document.getElementById("rePassword");</p><p> var passValue=document.getElementById("pass").value;</p><p> if(passValue==value&&passValu
103、e!=""){</p><p> spanNode.innerHTML="密碼正確".fontcolor("green");</p><p> return true;</p><p><b> }else{</b></p><p> spanNode.
104、innerHTML="兩次密碼不一致".fontcolor("red");</p><p> return false;</p><p><b> }</b></p><p><b> }</b></p><p> function checkUser
105、Name(Node){</p><p> var value=Node.value;</p><p> var spanNode=document.getElementById("userName");</p><p> if(value!=""){</p><p> spanNode.inne
106、rHTML="用戶名格式正確".fontcolor("green");</p><p> return true;</p><p><b> }else{</b></p><p> spanNode.innerHTML="用戶名不能為空".fontcolor("red&
107、quot;);</p><p> return false;</p><p><b> }</b></p><p><b> }</b></p><p> function checkTel(Node){</p><p> var value=Node.value;
108、</p><p> var spanNode=document.getElementById("tel");</p><p> var reg=/^[0-9]{5,}/i;</p><p> if(value.match(reg)){</p><p> spanNode.innerHTML="手機(jī)號(hào)格式正
109、確".fontcolor("green");</p><p> return true;</p><p><b> }else{</b></p><p> spanNode.innerHTML="手機(jī)號(hào)格式不正確".fontcolor("red");</p>
110、<p> return false;</p><p><b> }</b></p><p><b> }</b></p><p> function checkEmail(Node){</p><p> var value=Node.value;</p><
111、;p> var spanNode=document.getElementById("email");</p><p> var reg=/^\w+@\w+(\.\w+)+$/;</p><p> if(value.match(reg)){</p><p> spanNode.innerHTML="郵箱格式正確".
112、fontcolor("green");</p><p> return true;</p><p><b> }else{</b></p><p> spanNode.innerHTML="郵箱格式不正確".fontcolor("red");</p><p&g
113、t; return false;</p><p><b> }</b></p><p><b> }</b></p><p> function checkAll(){</p><p> var formNode=document.forms[0];</p><p>
114、; with(formNode)</p><p><b> {</b></p><p> if(checkCount(userCount)&&checkEmail(email)&&checkPassword("userPassword")&&checkRePassword("rePas
115、sword")&&</p><p> checkTel("tel")&&checkUserName("userName"))</p><p><b> {</b></p><p> return true;</p><p><b
116、> }else</b></p><p><b> {</b></p><p> return false;</p><p><b> }</b></p><p><b> }</b></p><p><b> }&
117、lt;/b></p><p><b> </script></b></p><p><b> 系統(tǒng)功能截圖:</b></p><p><b> 后臺(tái)登陸界面:</b></p><p><b> 圖12</b></p>
118、<p><b> 后臺(tái)管理頁(yè)面:</b></p><p><b> 圖13</b></p><p><b> 前臺(tái)用戶登陸界面:</b></p><p><b> 圖13</b></p><p> 后臺(tái)管理員添加用戶界面:</p
119、><p><b> 圖14</b></p><p><b> 用戶注冊(cè)界面:</b></p><p><b> 圖15</b></p><p> 4、個(gè)人總結(jié)本系統(tǒng)雖然功能有限,但也是我按照一般軟件的開(kāi)發(fā)流程一步一步進(jìn)行的,從需求分析,到數(shù)據(jù)庫(kù)的設(shè)計(jì),再到具體編碼的實(shí)
120、現(xiàn),再到測(cè)試運(yùn)行。按部就班的進(jìn)行,讓我再一次感受到了軟件開(kāi)發(fā)的嚴(yán)謹(jǐn)性和規(guī)范性。在具體開(kāi)發(fā)過(guò)程中也遇到了很多問(wèn)題,但是借助于互聯(lián)網(wǎng)絡(luò)最終都得到了解決。該系統(tǒng)功能不是很完善,但是我在設(shè)計(jì)的時(shí)候考慮到了可擴(kuò)展行,可以很方便的在該系統(tǒng)上擴(kuò)展新的功能,我提供了很多接口,便于以后擴(kuò)展使用。因?yàn)樽罱诳丛O(shè)計(jì)模式的書,所以在編寫具體代碼的使用,我也有意識(shí)的使用了一些設(shè)計(jì)模式,比如:?jiǎn)卫J?,工廠模式,接口模式等等。使用這些設(shè)計(jì)模式可以讓該系統(tǒng)具備更好的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- web課程設(shè)計(jì)人事信息管理系統(tǒng)
- web課程設(shè)計(jì)人事信息管理系統(tǒng)
- jsp個(gè)人用戶信息管理系統(tǒng)課程設(shè)計(jì)
- 用戶信息管理課程設(shè)計(jì)論文
- 《車輛信息管理》課程設(shè)計(jì)--車輛信息管理系統(tǒng)
- 職工信息管理系統(tǒng)課程設(shè)計(jì)
- 物流信息管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)--教師信息管理系統(tǒng)
- 信息管理系統(tǒng)網(wǎng)站課程設(shè)計(jì)
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- 人事信息管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)----學(xué)生信息管理系統(tǒng)
- 課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- 課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- 職工信息管理系統(tǒng)課程設(shè)計(jì)
- 職工信息管理系統(tǒng)課程設(shè)計(jì)
- 客戶信息管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- 藥品信息管理系統(tǒng)-課程設(shè)計(jì)
- 員工信息管理系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論