1、个人基于电话簿管理系统代码行数572项目名称个人电话簿管理系统1实训目的面向对象程序设计课程设计是计算机科学与技术专业培养计划中的重要实践教学环节,旨在通过一个管理信息系统的开发,加深学生对Java语言的理解和应用,尤其是对面向对象编程思想、Java编码规范、图形用户接口、JDBC访问数据库的理解,巩固软件工程课程的相关知识,了解软件开发的基本流程,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。2实训内容使用MyEclipse为开发工具,使用Rational Rose为建模工具,使用MySQL为数据库服务器,基于GUI和JDBC技术,分析、设计并实现一个管理信息系统。3.需求分析3.
2、1 需求描述登录:输入账号和密码,完成登录操作,进入主界面,显示电话簿中的所有联系人姓名以及可进行的相关操作的选项。退出:登录后可进行退出操作,结束整个程序。注册:输入账户、密码和确认密码完成新用户的注册。按字典序显示所有联系人的姓名:登录成功后在主界面中以表格形式按字典序升序显示所有联系人的姓名。添加联系人:输入联系人的各项信息,完成联系人信息的添加操作,添加成功后以表格形式按字典序升序显示所有的联系人信息。删除联系人:根据联系人的主键,完成联系人的删除操作,删除成功后以表格形式按字典序升序显示剩余联系人的信息。修改联系人:输入联系人主键,显示联系人的详细信息,输入每个字段值,完成联系人信息
3、的修改,修改成功后以表格形式按字典序升序显示所有的联系人信息。查询联系人:利用模糊查询完成对联系人名称的查询操作,获得包含查询关键字的联系人姓名列表,再输入某个联系人的主键,显示该联系人的详细信息。3.2 用例描述4.功能设计4.1 系统层次方框图为保证系统具有较好的可维护性和可扩展性,对系统进行分层设计,共分四层: 视图层:接收用户输入信息,显示界面信息和用户信息 控制层:访问流程控制 业务层:完成具体功能的实现 数据库访问层:完成对数据库访问操作的封装具体结构如下图所示:4.2 算法设计(活动图或时序图) 注册活动图登录活动图添加活动图 删除互动图 查询活动图 修改活动图5.数据设计5.1
4、 类图设计根据分析,系统由9个类构成,分别为: 数据库访问层:DBConn类 数据封装类:Userxx类、User类 业务层:Userxxdao类、Userdao类 控制层:Tooljdbc类 视图层:Login类、类、LxManager类 其它:RunFrame类系统中各类之间关系如下图所示:1.数据库访问层DBConn类用于封装JDBC的操作,完成对数据库的直接访问,采用单态模式创建对象,具体内容如下所示:2.数据封装类Userxx类和User类分别用于登录、注册操作时的数据封装和用户信息管理时的数据封装,具体内容如下图所示:3.业务层Userxxdao类进行登录、注册等对Userxx类的
5、访问操作,Userdao类进行用户信息管理的操作,两者均采用单态模式创建对象,具体内容如下图所示:4.控制层Tooljdbc类用于进行系统的流程控制,具体内容如下所示:5.视图层6.其它RunFrame类是程序的主类,用于启动系统,具体内容如下:5.2 数据表设计根据概要设计中Login类图和User类图可知,系统需要两张表t_xinxi和t_user,其中,t_user表用于存储登录信息,t_xinxi表用于存储用户基本信息,两张表之间没有关联关系,具体结构如下所示:表5-1 t_user表序号字段名类型长度备注1idint4主键2accountchar20唯一性、不为空3passwordc
6、har20不为空表5-2 t_xinxi表序号字段名类型长度备注1idint4主键2namechar20不为空3sexint20表示男,1表示女4telchar20不为空6.运行结果1.注册 程序运行后,首先显示系统的登录界面,在其中可输入账号和密码进行登录操作,或输入“2”进行账户注册。注册成功后需要重新输入账号和密码进行登录。2.登录用户可在系统首界面直接输入账号和密码进行登录,或在注册成功后再进行登录。登录成功后显示此用户信息和系统主控制界面。3.添加输入“4”,选择添加用户信息操作。依次输入用户的姓名、性别和电话,完成添加。添加成功后,显示成功的提示信息,并显示所有用户信息和系统主控制
7、界面。如果添加失败,则显示失败的提示信息, 4.删除输入“3”,选择删除用户信息操作。输入要删除的用户的id(主键)值,完成删除。删除成功后,显示成功的提示信息,并显示所有用户信息和系统主控制界面。如果删除失败,则显示删除失败的提示信息。 5.修改输入“2”,选择修改用户信息操作。输入要修改的用户的id(主键)值,显示该用户的信息。再依次输入要修改的用户名、性别和电话,执行修改操作。修改成功后,显示成功的提示信息,并显示所有用户信息和系统主控制界面。如果修改失败,则显示删除失败的提示信息。6.查询输入“1”,选择查询用户信息操作。输入要查询的用户名,显示所查用户的信息,之后显示所有用户信息和系
8、统主控制界面。7.关键代码1、数据库访问类 package ccut.wzy.jdbc; import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/* * 工具bean * 连接数据库 * 驱动串 * 数据库的地址 * 数据库的登录名、密码 * 更新、查询的实现 * */public class DBConn private static final String DRIVER
9、=com.mysql.jdbc.Driver;/驱动串 private static final String URL=jdbc:mysql:/localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8;/访问本机的MySQL数据库test,test是库名,可以根据实际情况修改 private static final String USERNAME=root; private static final String PASSWORD=123456;/访问MySQL的密码,可以根据实际情况修改 private Connection c
10、on;/数据库连接对象 private Statement st;/sql语句的执行对象 private ResultSet rs;/查询结果集,用来存放查询的结果,没有查到rs为空 private int n;/更新数据时,成功操作的行数 /a) 语句加载数据库的驱动程序 static try Class.forName(DRIVER); catch (ClassNotFoundException e) / TODO Auto-generated catch block System.out.println(驱动程序找不到); /b) 建立数据库连接 public Connection ge
11、tCon() try con=DriverManager.getConnection(URL, USERNAME, PASSWORD); catch (SQLException e) / TODO Auto-generated catch block System.out.println(数据库连接失败); return con; /c) 创建执行sql语句的对象 public Statement getSt() try st=this.getCon().createStatement(); catch (SQLException e) / TODO Auto-generated catch
12、block System.out.println(创建执行sql语句的对象失败); return st; /执行sql语句-查询 public ResultSet getRs(String sql) try rs=this.getSt().executeQuery(sql); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); return rs;/在调用类中使用集合对象进行接收 /执行sql语句-更新(增加、删除、修改) public int getN(String sql) try n=
13、this.getSt().executeUpdate(sql); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); return n;/在调用类中使用整形变量接收 /d) 断开数据库连接 public void closeRs() try rs.close(); st.close(); con.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); public void
14、closeN() try st.close(); con.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); 2、数据封装类(1)User.Java package ccut.wzy.model;public class User private int id; private String username,password; public int getId() return id; public void setId(int id) this.id = id; pub
15、lic String getUsername() return username; public void setUsername(String username) this.username = username; public String getPassword() return password; public void setPassword(String password) this.password = password; public User(int id, String username, String password) super(); this.id = id; th
16、is.username = username; this.password = password; public User() super(); (2)Userxx.Java package ccut.wzy.model;public class Userxx private int id; private String name,xinbie,tel; public int getId() return id; public void setId(int id) this.id = id; public String getName() return name; public void se
17、tName(String name) this.name = name; public String getXinbie() return xinbie; public void setXinbie(String xinbie) this.xinbie = xinbie; public String getTel() return tel; public void setTel(String tel) this.tel = tel; public Userxx(int id, String name, String xinbie, String tel) super(); this.id =
18、id; this.name = name; this.xinbie = xinbie; this.tel = tel; public Userxx() super(); Override public String toString() return Userxx id= + id + , name= + name + , xinbie= + xinbie + , tel= + tel + ; 3、业务层(1) Userxxdao.java package ccut.wzy.dao;import java.sql.ResultSet;import java.sql.SQLException;i
19、mport java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import ccut.wzy.jdbc.DBConn;import ccut.wzy.model.User;import ccut.wzy.model.Userxx;import ccut.wzy.tool.Tooljdbc;public class Userxxdao private DBConn db; public Userxx
20、dao() db=Tooljdbc.getdb(); public int add(Userxx aa) String sql=INSERT INTO t_xinxi(name,xingbie,tel)VALUES(+aa.getName()+,+aa.getXinbie()+,+aa.getTel()+); return db.getN(sql); public int update(Userxx aa ,int id) ResultSet rs = db.getRs(SELECT* FROM t_xinxi WHERE id=+id); if(rs=null) System.out.pri
21、ntln(用户不存在); return 0; String sql=UPDATE t_xinxi set name=+aa.getName()+,tel=+aa.getTel()+,xingbie=+aa.getXinbie()+ where id=+id; return db.getN(sql); public int delete(int id) String sql=DELETE FROM t_xinxi WHERE id=+id ; return db.getN(sql); public List list() String sql=SELECT * FROM t_xinxi; Res
22、ultSet rs=db.getRs(sql); List course = new ArrayList(); try while (rs.next() Userxx cou=new Userxx(); cou.setName(rs.getString(name); cou.setXinbie(rs.getString(xingbie); cou.setTel(rs.getString(tel); course.add(cou); catch (SQLException e) / TODO Auto-generated catch block course=null; Collections.
23、sort(course,new Comparator() Override public int compare(Userxx o1,Userxx o2) Comparatorcom=Collator.getInstance(java.util.Locale.CHINA); return pare(o1.getName(), o2.getName(); ); return course; public List list(String name) String sql=SELECT* FROM t_xinxi WHERE name like +name+%; ResultSet rs=db.g
24、etRs(sql); List course = new ArrayList(); try while (rs.next() Userxx cou=new Userxx(); cou.setName(rs.getString(name); cou.setXinbie(rs.getString(xingbie); cou.setTel(rs.getString(tel); course.add(cou); catch (SQLException e) / TODO Auto-generated catch block course=null; / Collections.sort(course,
25、new Comparator() / Override/ public int compare(Userxx o1,Userxx o2) / Comparatorcom=Collator.getInstance(java.util.Locale.CHINA);/ return pare(o1.getName(), o2.getName();/ / ); return course; public List list(int id) String sql=SELECT* FROM t_xinxi WHERE id=+id; ResultSet rs=db.getRs(sql); List cou
26、rse = new ArrayList(); try while (rs.next() Userxx cou=new Userxx(); cou.setName(rs.getString(name); cou.setXinbie(rs.getString(xingbie); cou.setTel(rs.getString(tel); course.add(cou); catch (SQLException e) / TODO Auto-generated catch block course=null; / Collections.sort(course,new Comparator() /
27、Override/ public int compare(Userxx o1,Userxx o2) / Comparatorcom=Collator.getInstance(java.util.Locale.CHINA);/ return pare(o1.getName(), o2.getName();/ / ); return course; (2) Userdao.java package ccut.wzy.dao;import java.sql.ResultSet;import java.sql.SQLException;import ccut.wzy.jdbc.DBConn;import ccut.wzy.model.User;import ccut.wzy.tool.Tooljdbc; public c
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1