java课程设计报告之个人通讯录管理程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计内容 (2)
二、设计要求 (2)
三、总体设计 (2)
四、具体设计 (2)
五、具体分工 (4)
六、程序设计 (4)
1、UseSystem;类 (4)
2、MySystem类 (5)
3、User类 (18)
4、UserService类 (21)
5、DAO类 (27)
七、实习心得 (28)
一、设计内容
设计GUI界面的个人通讯录,用户可以添加,删除,修改,查询,打印通讯录中的记录!
二、设计要求
用图形用户界面实现:
1、能实现增加记录,删除记录,显示所有记录,查询记录,文件备份。

2、通讯录的功能包括:姓名,电话,Email等。

3、使用数据库做后台连接!
三、总体设计
有5个类
各类之间的关系!
1、DAO.java
该类主要负责进行数据库连接,含有数据库的连接方法!
2、User.java
实体类主要作用是实现java的封装特性,利用服务类实现各种增删改查的操作方法!
3、UserService.java
该类主要是对各种操作方法的定义和实现,是实现增删改查等主要功能的服务类!
4、MySeystem
该类主要是实现图形化界面的!实现按钮,输入框,标签等图形化界面!
5、UseSystem
该类是程序的主类,该类含有main方法,程序从该类开始执行。

四、具体设计
将5个java文件保存到同一个文件夹中,例如:C:\test。

将5个java
文件分别编译生成相应的字节码(class)文件。

然后,用java解释器运行主类:主界面
修改界面
添加界面
五、具体分工
我参与设计添加页面,添加方法,数据库部分操作。

六、程序设计
代码:
1、UseSystem;类
public class UseSystem {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MySystem().validate();
}
}
2、MySystem类
import java.awt.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
import javax.swing.*;
import er;
import erService;
public class MySystem extends JFrame implements ActionListener, ItemListener {
UserService uService = new UserService();
User u=new User();
Choice choice = new Choice();
JTextField t1 = new JTextField(15);
JButton b1 = new JButton("查询");
java.awt.List list = new java.awt.List(6, true);
JButton b2 = new JButton("增加");
JButton b3 = new JButton("删除");
JButton b4 = new JButton("修改");
JButton b5 = new JButton("导出");
Container con = getContentPane();
java.util.List<User> uList = new ArrayList<User>();
//static Vector<User> uv = new Vector<User>(100);
int flag=0;
MySystem() {
super("个人通讯录管理程序");
setSize(400, 400);
con.setLayout(new BorderLayout());
choice.add("姓名");
choice.add("类别");
choice.add("手机号码");
choice.add("查询全部记录");
Panel p1 = new Panel();
// Panel p2=new Panel();
Panel p3 = new Panel();
p1.setBackground(Color.blue);
p1.setSize(300, 10);
// p2.setBackground(Color.cyan);
// p2.setSize(380, 300);
p3.setBackground(Color.green);
list.setSize(300, 300);
p1.add(choice);
p1.add(t1);
p1.add(b1);
p3.add(b2);
p3.add(b4);
p3.add(b3);
p3.add(b5);
con.add("North", p1);
con.add("Center", list);
con.add("South", p3);
setVisible(true);
validate();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
});
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
list.addItemListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b2) {//通过产生外部窗体,来实现添加功能
final JFrame newf = new JFrame("添加联系人");
newf.setSize(400, 400);
newf.setVisible(true);
newf.setLayout(new GridLayout(10, 2));
JLabel jb1 = new JLabel("联系人姓名:");
final JTextField jtf1 = new JTextField(15); Panel pp1 = new Panel();
pp1.add(jb1);
pp1.add(jtf1);
newf.getContentPane().add(pp1);
JLabel jb2 = new JLabel("联系人电话:"); final JTextField jtf2 = new JTextField(15); Panel pp2 = new Panel();
pp2.add(jb2);
pp2.add(jtf2);
newf.getContentPane().add(pp2);
JLabel jb3 = new JLabel("固定电话:"); final JTextField jtf3 = new JTextField(15); Panel pp3 = new Panel();
pp3.add(jb3);
pp3.add(jtf3);
newf.getContentPane().add(pp3);
JLabel jb4 = new JLabel("联系人QQ :"); final JTextField jtf4 = new JTextField(15); Panel pp4 = new Panel();
pp4.add(jb4);
pp4.add(jtf4);
newf.getContentPane().add(pp4);
JLabel jb7 = new JLabel("联系人email:"); final JTextField jtf7 = new JTextField(15); Panel pp7 = new Panel();
pp7.add(jb7);
pp7.add(jtf7);
newf.getContentPane().add(pp7);
JLabel jb8 = new JLabel("联系类别:");
final JTextField jtf8 = new JTextField(15);
Panel pp8 = new Panel();
pp8.add(jb8);
pp8.add(jtf8);
newf.getContentPane().add(pp8);
JLabel jb5 = new JLabel("联系人工作:");
final JTextField jtf5 = new JTextField(15);
Panel pp5 = new Panel();
pp5.add(jb5);
pp5.add(jtf5);
newf.getContentPane().add(pp5);
JLabel jb6 = new JLabel("现居住地地址:");
final JTextField jtf6 = new JTextField(15);
Panel pp6 = new Panel();
pp6.add(jb6);
pp6.add(jtf6);
newf.getContentPane().add(pp6);
JButton bb1 = new JButton("提交");
JButton bb2 = new JButton("关闭");
Panel pp9 = new Panel();
pp9.add(bb1);
pp9.add(bb2);
newf.getContentPane().add(pp9);
// JTextArea jta=new JTextArea();Panel pp10=new // Panel();pp10.add(jta);newf.getContentPane().add();
bb1.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent ee) { User u = new User();
u.setName(jtf1.getText());
u.setTel(jtf2.getText());
u.setPhone(jtf3.getText());
u.setQq(jtf4.getText());
u.setWork(jtf5.getText());
u.setAddress(jtf6.getText());
u.setEmail(jtf7.getText());
u.setCategory(jtf8.getText());
if (uService.add(u)) {
JOptionPane.showMessageDialog(null, "添加成功!!!");
} else
JOptionPane.showMessageDialog(null, "添加失败!!!");
}
});
bb2.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent ee) {
newf.setVisible(false);
}
});
}
if (b1 == e.getSource()) {//通过调用select();实现模糊查询
list.removeAll();
select();
}
if (b3 == e.getSource()) {//通过获得联系人在list中的索引号,
来实现对联系人的删除
if (flag == 0) {
JOptionPane.showMessageDialog(null, "不能删除该行!");
}
u = uList.get(flag - 1);
if (uService.delById(u.getId())) {
JOptionPane.showMessageDialog(null, "删除成功!");
uList.remove(flag - 1);
list.removeAll();
list.add("编号" + " " + "姓名" + " " + "电话");
for (User u1 :uList) {
list.add(u1.getId() + ": " + u1.getName() + " "
+ u1.getTel());
}
} else
JOptionPane.showMessageDialog(null, "删除失败!");
}
if(b4==e.getSource()){//通过获得联系人在list中的索引号,同弹出一个外部窗体其中
//有联系人的信息,用户可以修改.并在将其存入数据库
if (flag == 0) {
JOptionPane.showMessageDialog(null, "不能修改首
行!");
return;
}
u = uList.get(flag - 1);
final JFrame newf = new JFrame("添加联系人");
newf.setSize(400, 400);
newf.setVisible(true);
newf.setLayout(new GridLayout(10, 2));
JLabel jb1 = new JLabel("联系人姓名:");
final JTextField jtf1 = new JTextField(u.getName(),15);
Panel pp1 = new Panel();
pp1.add(jb1);
pp1.add(jtf1);
newf.getContentPane().add(pp1);
JLabel jb2 = new JLabel("联系人电话:");
final JTextField jtf2 = new JTextField(u.getTel(),15);
Panel pp2 = new Panel();
pp2.add(jb2);
pp2.add(jtf2);
newf.getContentPane().add(pp2);
JLabel jb3 = new JLabel("固定电话:");
final JTextField jtf3 = new JTextField(u.getPhone(),15);
Panel pp3 = new Panel();
pp3.add(jb3);
pp3.add(jtf3);
newf.getContentPane().add(pp3);
JLabel jb4 = new JLabel("联系人QQ :");
final JTextField jtf4 = new JTextField(u.getQq(),15);
Panel pp4 = new Panel();
pp4.add(jb4);
pp4.add(jtf4);
newf.getContentPane().add(pp4);
JLabel jb7 = new JLabel("联系人email:");
final JTextField jtf7 = new JTextField(u.getEmail(),15);
Panel pp7 = new Panel();
pp7.add(jb7);
pp7.add(jtf7);
newf.getContentPane().add(pp7);
JLabel jb8 = new JLabel("联系类别:");
final JTextField jtf8 = new JTextField(u.getCategory(),15);
Panel pp8 = new Panel();
pp8.add(jb8);
pp8.add(jtf8);
newf.getContentPane().add(pp8);
JLabel jb5 = new JLabel("联系人工作:");
final JTextField jtf5 = new JTextField(u.getWork(),15);
Panel pp5 = new Panel();
pp5.add(jb5);
pp5.add(jtf5);
newf.getContentPane().add(pp5);
JLabel jb6 = new JLabel("现居住地地址:");
final JTextField jtf6 = new JTextField(u.getAddress(),15);
Panel pp6 = new Panel();
pp6.add(jb6);
pp6.add(jtf6);
newf.getContentPane().add(pp6);
JButton bb1 = new JButton("提交");
JButton bb2 = new JButton("关闭");
Panel pp9 = new Panel();
pp9.add(bb1);
pp9.add(bb2);
newf.getContentPane().add(pp9);
bb1.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent ee) {
u.setName(jtf1.getText());
u.setTel(jtf2.getText());
u.setPhone(jtf3.getText());
u.setQq(jtf4.getText());
u.setWork(jtf5.getText());
u.setAddress(jtf6.getText());
u.setEmail(jtf7.getText());
u.setCategory(jtf8.getText());
if(uService.update(u)){
JOptionPane.showMessageDialog(null, "修改成功!");
select();
}
else JOptionPane.showMessageDialog(null, "修改失败!"); }
});
bb2.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent ee) {
newf.setVisible(false);
}
});
}
if(b5==e.getSource()){//实现全部联系人的导出
File f=new File("user_information.txt");
try {
FileWriter w_file=new FileWriter(f);
BufferedWriter b_file=new BufferedWriter(w_file);
b_file.write("联系人编号\t姓名\t手机号码\t固定电话\tqq号码\temail\t类别\t工作\t现居住地地址\t");
b_file.flush();
for(User u:uService.getAllUser()){
b_file.write(u.getId()+"\t"+u.getName()+"\t"+u.getTel()+"\t"+u.getP hone()+"\t"+u.getQq()
+"\t"+u.getEmail()+"\t"+u.getCategory()+"\t"+u.getWork()+"\t"+u.g etAddress()+"\n");
b_file.flush();
}
JOptionPane.showMessageDialog(null, "导出成功!");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
@Override
public void itemStateChanged(ItemEvent a) {
int sum = Integer.parseInt(a.getItem().toString());
flag=sum;}
public void select(){
if (choice.getSelectedItem().equals("姓名")) {//对姓名进行模糊查询
uList.clear();
for (User u : uService.getUser("name", t1.getText())){
uList.add(u);
}
list.removeAll();
list.add("编号" + " " + "姓名" + " " + "电话");
for (User u :uList) {
list.add(u.getId() + ": " + u.getName() + " "
+ u.getTel());
}
}
if (choice.getSelectedItem().equals("类别")) {//对类别进行模糊查询
uList.clear();
for (User u : uService.getUser("category", t1.getText())){
uList.add(u);
}
list.removeAll();
list.add("编号" + " " + "姓名" + " " + "电话");
for (User u : uList) {
list.add(u.getId() + ": " + u.getName() + " "
+ u.getTel());
}
}
if (choice.getSelectedItem().equals("手机号码")) {//对手机号码进行模糊查询
uList.clear();
for (User u : uService.getUser("tel", t1.getText())){
uList.add(u);
}
list.removeAll();
list.add("编号" + " " + "姓名" + " " + "电话");
for (User u : uList) {
list.add(u.getId() + ": " + u.getName() + " "
+ u.getTel());
}
}
if (choice.getSelectedItem().equals("查询全部记录")) {//对全部的联系人进行查询
uList.clear();
for (User u : uService.getAllUser()){
uList.add(u);
}
list.removeAll();
list.add("编号" + " " + "姓名" + " " + "电话");
for (User u : uList) {
list.add(u.getId() + ": " + u.getName() + " "
+ u.getTel());
}
}
}
}
3、User类
public class User {
private int id;
private String name;
private String tel;
private String email;
private String phone;
private String category;
private String address;
private String work;
private String qq;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(int id, String name, String tel, String email, String phone,
String category, String address, String work,String q) {
super();
this.id = id;
= name;
this.tel = tel;
this.email = email;
this.phone = phone;
this.category = category;
this.address = address;
this.work = work;
this.qq=q;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEmail() {
return email;
}
public void setEmail(String email) { this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) { this.phone = phone;
}
public String getCategory() {
return category;
}
public void setCategory(String category) { this.category = category;
}
public String getAddress() {
return address;
}
public void setAddress(String address) { this.address = address;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
}
4、UserService类
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import .system.model.*;
public class UserService extends DAO {
/***
* 方法目的:添加联系人
* @param u
* @return
*/
public boolean add(User u){
boolean flag=false;
StringBuilder sql=new StringBuilder();
sql.append("insert into TB_user (name,tel,phone,qq,email,category,work,address) values(?,?,?,?,?,?,?,?)");
con=DAO.getConnect();
try {
pst=con.prepareStatement(sql.toString());
pst.setString(1,u.getName());
pst.setString(2,u.getTel());
pst.setString(3,u.getPhone());
pst.setString(4,u.getQq());
pst.setString(5,u.getEmail());
pst.setString(6,u.getCategory());
pst.setString(7,u.getWork());
pst.setString(8,u.getAddress());
if(pst.executeUpdate()>0)
flag=true;
pst.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
/****
* 方法目的:根据编号删除联系人
* @param id
* @return
*/
public boolean delById(int id){
boolean flag=false;
StringBuilder sql=new StringBuilder();
sql.append("delete from TB_user where id=?");
con=DAO.getConnect();
try {
pst=con.prepareStatement(sql.toString());
pst.setInt(1, id);
if(pst.executeUpdate()>0)
flag=true;
pst.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
/***
* 方法目的:更新联系人
* @param u
* @return
*/
public boolean update(User u){
boolean flag=false;
StringBuilder sql=new StringBuilder();
sql.append("update TB_user set name=?,tel=?,phone=?,qq=?,email=?,category=?,work=?,address=? where id=?");
con=DAO.getConnect();
try {
pst=con.prepareStatement(sql.toString());
pst.setString(1,u.getName());
pst.setString(2,u.getTel());
pst.setString(3,u.getPhone());
pst.setString(4,u.getQq());
pst.setString(5,u.getEmail());
pst.setString(6,u.getCategory());
pst.setString(7,u.getWork());
pst.setString(8,u.getAddress());
pst.setInt(9, u.getId());
if(pst.executeUpdate()>0)
flag=true;
pst.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
/****
* 方法目的:根据条件进行模糊查询
* @param n
* @param v
* @return
*/
public List<User> getUser(String n,String v){
List<User> uList=new ArrayList<User>();
StringBuilder sql=new StringBuilder();
User u=null;
sql.append("select * from TB_User where "+n+" like ?");
con=DAO.getConnect();
try {
pst=con.prepareStatement(sql.toString());
pst.setString(1,"%"+v+"%");
rs=pst.executeQuery();
while(rs.next()){
u=new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
u.setAddress(rs.getString("address"));
u.setCategory(rs.getString("category"));
u.setEmail(rs.getString("email"));
u.setPhone("phone");
u.setTel(rs.getString("tel"));
u.setQq(rs.getString("qq"));
u.setWork(rs.getString("work"));
uList.add(u);
}
pst.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return uList;
}
/**
* 方法目的:得到全部的联系人
* @return
*/
public List<User> getAllUser(){
List<User> uList=new ArrayList<User>();
StringBuilder sql=new StringBuilder();
User u=null;
sql.append("select * from TB_User");
con=DAO.getConnect();
try {
pst=con.prepareStatement(sql.toString());
rs=pst.executeQuery();
while(rs.next()){
u=new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
u.setAddress(rs.getString("address"));
u.setCategory(rs.getString("category"));
u.setEmail(rs.getString("email"));
u.setPhone("phone");
u.setTel(rs.getString("tel"));
u.setQq(rs.getString("qq"));
u.setWork(rs.getString("work"));
uList.add(u);
}
pst.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return uList;
}
}
5、DAO类
import java.sql.*;
public class DAO {
protected Connection con;
protected Statement st;
protected PreparedStatement pst;
protected ResultSet rs;
public static Connection getConnect(){
Connection conn=null;
String
s="jdbc:sqlserver://localhost:1433;databaseName=DB_WAB";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn=DriverManager.getConnection(s,"sa","0000");
} catch (Exception e) {
System.out.println("错误提示:0"+e.getMessage());
// e.printStackTrace();
}
return conn;
}
}
七、实习心得
实习,顾名思义,在实践过程中学习。

在经过一段时间的学习之后,或者说当学习告一段落的时候,我们需要了解,自己的所学应当如何应用在实践之中,因为任何知识都源于实践,归于实践,所以,要将所学付诸实践,来检验所学的知识与技术,这是必然的阶段。

三年的大学生活,让我对计算机理论知识有了一定的了解,但实践出真知,唯有把理论与实践相结合,才能更好地为社会服务实习是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体培训和考察过程。

回顾起java实习,我感慨颇多,的确,在这一星期的日子里,可以说是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上没有学到过的知识。

这次课程设计使我对图形化界面有了充分的了解,以前上课的时候对知识的掌握只是理论性的,没有通过自己动手实践,当真正的自己动手操作的时候才会感觉到理论的知识太片面,通过实践,我也解决了很多困我很久的问题,以前看似很难理解的问题,在实践的过程中都有了充分的理解和认识,对于数据库连接的方面,我以前只是似懂非懂,不能够充分的了解和运用数据库的知识,但是这次的实习在同学和老师的帮助下,我完成了数据库的连接,并且独立完成了数据库的添加方法,通过数据库的连接,我发现了自己很多的缺点和错误,并且改正了不好的习惯,养成了遇事要认真的态度,使我认识到无论做什么事都要持之以恒,只要自己努力就会成功!通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学过的理论知识与实践相结合起来,从理论中得出结论,才能真正的为社会服务,从而提高自己的实际动手能力和独立思考问题的能力。

在设计的过程中遇到问题,我学会了自己进行独立的思考和解决。

通过课程设计之后,把以前所学过的知识重新温故。

这次java实习计终于顺利完成了,在设计中遇到了很多的问题,也学会了很多很多在学校里面无法学到的东西。

比如团队合作等等。

java实习让我受益匪浅!使我充分的认识到了实习的重要性和自己在java学习方面的优缺点!最后对于给过我帮助的同学表示衷心的感谢!同时也感谢老师为我们提供了一个了解自己检验自己知识水平的平台!。

相关文档
最新文档