j a v a个人通讯录课程设计报告内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)别山东交通学院面向对象课程设计个人通信录管理信息系统的设计与实现院(系)别信息科学与电气工程学院班级学号姓名指导教师时间 2014-08-25—2014-09-5课程设计任务书题目个人通讯录管理系统院 (部) 信息科学与电气工程学院专业计算机科学与技术班级学生姓名学号08 月 25 日至 09 月 5 日共 2 周指导教师(签字)院长(签字)年月日成绩评定表目录课程设计概述本课程设计是java语言学习中很重要的实践性环节之一,是在学习完java课程后进行的一次全面的综合练习旨在巩固和加深我们对java语言的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用java语言解决实际问题的能力2本次课程设计主要目的及要求:设计一个通讯录管理软件,要求如下:增加记录、删除记录、显示所有记录、查询记录、文件备份、退出。
通讯录记录信息包括:姓名,电话,email等。
(1)通讯录的每一条信息包括姓名,单位,电话!(可用数组或数据库);(2)输入功能:可以一次完成若干条信息的输入;(3)显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示);(4)查找功能:完成按姓名查找通讯信息;(5)删除功能:完成按姓名删除通讯信息;(6)应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。
3.设计思想:个人通讯录件的功能模块有:(1)提供登陆界面,方便用户进入,满足需求;(2)添加:可以添加通讯录记录,依次输入姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司地址、E-Mail地址、家庭住址、组别、备注后,会提示是否继续添加;(3)显示:可以以表格形式输出所有通讯录里的记录;(4)查询:可以用姓名查询;(5)修改:输入欲修改的那个人的名字后,再依次输入姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司地址、E-Mail地址、家庭住址、组别、备注即可完成修改;(6)删除:可以直接删除多余的通讯录记录;(7)帮助:可以在帮助里面修改用户密码;(8)导出数据库:可以将数据库以文本txt格式导出。
程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。
1.1总体设计流程图图2-1 总体设计流程2程序测试2.1登陆界面图4-1 登陆界面相关代码:public Loginframe() {login = new JDialog(Myaddress.myFrame, "个人通讯录登入界面", true);login.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); login.setLocationRelativeTo(null);login.setLayout(new GridLayout(3, 0));username = new TextField(10);password = new TextField(10);username.setText("");password.setText("");certain = new JButton("certain");cancel = new JButton("cancel");certain.addActionListener(new LoginIn());cancel.addActionListener(new LoginIn());JLabel lb1 = new JLabel("用户名:");JLabel lb2 = new JLabel("密码:");JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();p1.add(lb1);p1.add(username);p2.add(lb2);p2.add(password);password.setEchoChar('*');p3.add(certain);p3.add(cancel);login.setSize(300, 200);login.add(p1);login.add(p2);login.add(p3);login.setVisible(true);login.pack();}public static void main(String[] args) {new Loginframe();}}点击“certain”,登录成功,点击确定,进入个人通讯录管理系统,个人通讯录管理系统界面相关代码:public Loginframe() {login = new JDialog(Myaddress.myFrame, "个人通讯录登入界面", true);login.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);login.setLocationRelativeTo(null);login.setLayout(new GridLayout(3, 0));username = new TextField(10);password = new TextField(10);username.setText("");password.setText("");certain = new JButton("certain");cancel = new JButton("cancel");certain.addActionListener(new LoginIn()); cancel.addActionListener(new LoginIn()); JLabel lb1 = new JLabel("用户名:"); JLabel lb2 = new JLabel("密码:"); JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();p1.add(lb1);p1.add(username);p2.add(lb2);p2.add(password);password.setEchoChar('*');p3.add(certain);p3.add(cancel);login.setSize(300, 200);login.add(p1);login.add(p2);login.add(p3);login.setVisible(true);login.pack();}public static void main(String[] args) {new Loginframe();}}2.点击左上角的“文件—导出数据库”,public Fdkeep() {fdsave = new JDialog(Myaddress.myFrame, "导出数据", true);fdsave.setLocationRelativeTo(null);fdsave.setLayout(new GridLayout(2, 0));JLabel labelSave = new JLabel("输入保存的完整的路径:");JLabel labele1 = new JLabel("例如:D:" + "\\" + "w.text");saveok = new JButton("save");savegp = new JButton("give up");lbSave = new TextField(10);saveok.addActionListener(new FileExportDBAction());savegp.addActionListener(new FileExportDBAction());JPanel p9 = new JPanel();JPanel p10 = new JPanel();p9.add(labelSave);p9.add(lbSave);p9.add(labele1);p10.add(saveok);p10.add(savegp);fdsave.add(p9);fdsave.add(p10);fdsave.pack();fdsave.setVisible(true);}}2.2添加界面点击“保存”将新加的信息加入数据库,系统会告知“添加成功”。
相关代码:public class Panelframeaction implements ActionListener {String sql1;Connection con;Statement stmt;public void actionPerformed(ActionEvent e) {if (((JButton) e.getSource()).getText().equals("保存")) {String nname, sx, bday, mphone, phone, compay, email, home, group, note, msnqq;nname = Panelframe.lbName.getText();sx = Panelframe.sex.getSelectedItem();bday = Panelframe.BirthdayYear.getSelectedItem() + "-"+ Panelframe.BirthdayMonth.getSelectedItem() + "-"+ Panelframe.BirthdayDay.getSelectedItem();mphone = Panelframe.lbMobilephone.getText();phone = Panelframe.lbTelephone.getText();compay = Panelframe.lbCompany.getText();email = Panelframe.lbMail.getText();home = Panelframe.lbaddress.getText();group = Panelframe.Group.getSelectedItem();note = Panelframe.lbNote.getText();msnqq = Panelframe.lbMail.getText();try {con = new Connect().getConnection();stmt = con.createStatement();sql1 = "INSERT INTO address " + "VALUES(\'" + nname + "\',\'"+ sx + "\'," + bday + ",\'" + mphone + "\',\'" + phone+ "\',\'" + compay + "\',\'" + email + "\',\'" + home+ "\',\'" + group + "\',\'" + note + "\',\'" + msnqq+ "\')";stmt.executeUpdate(sql1);JOptionPane.showMessageDialog(null, "添加成功");Myaddress.myFrame.setVisible(false);Myaddress.myFrame.getContentPane().removeAll();Myaddress.myFrame.getContentPane().add(newImage());Myaddress.myFrame.pack();Myaddress.myFrame.setVisible(true);stmt.close();con.close();} catch (Exception ex) {ex.printStackTrace();}}if (((JButton) e.getSource()).getText().equals("取消")) {Myaddress.myFrame.setVisible(false);Myaddress.myFrame.getContentPane().removeAll();Myaddress.myFrame.getContentPane().add(new Image());Myaddress.myFrame.pack();Myaddress.myFrame.setVisible(true);}if (((JButton) e.getSource()).getText().equals("退出查询界面")) {Myaddress.myFrame.setVisible(false);Myaddress.myFrame.getContentPane().removeAll();Myaddress.myFrame.getContentPane().add(new Image());Myaddress.myFrame.pack();Myaddress.myFrame.setVisible(true);}if (((JButton) e.getSource()).getText().equals("保存修改")) {String sx, bday, mphone, phone, compay, email, home, group, note, msnqq;sx = Panelframe.sex.getSelectedItem();bday = Panelframe.BirthdayYear.getSelectedItem() + "-"+ Panelframe.BirthdayMonth.getSelectedItem() + "-"+ Panelframe.BirthdayDay.getSelectedItem();mphone = Panelframe.lbMobilephone.getText();phone = Panelframe.lbTelephone.getText();compay = Panelframe.lbCompany.getText();email = Panelframe.lbMail.getText();home = Panelframe.lbaddress.getText();group = Panelframe.Group.getSelectedItem();note = Panelframe.lbNote.getText();msnqq = Panelframe.lbMail.getText();try {con = new Connect().getConnection();stmt = con.createStatement();sql1 = "update address set 性别=\'" + sx + "\' , 生日= " + bday+ " , 移动电话=\'" + mphone + "\' ,固定电话=\'" + phone+ "\'" + " , 公司地址=\'" + compay + "\' , EMail=\'"+ email + "\' , 家庭地址=\'" + home + "\' , 组别= \'"+ group + "\' , 备注=\'" + note + "\' , MSNQQ=\'"+ msnqq + "\' where 姓名=\'" + QueryFrame.n + "\'";int aa = stmt.executeUpdate(sql1);stmt.hashCode();System.out.print(QueryFrame.n);if (aa > 0) {JOptionPane.showMessageDialog(null, "修改成功");Myaddress.myFrame.setVisible(false);Myaddress.myFrame.getContentPane().removeAll();Myaddress.myFrame.getContentPane().add(new Image());Myaddress.myFrame.pack();Myaddress.myFrame.setVisible(true);} else {JOptionPane.showMessageDialog(null, "修改失败");}stmt.close();con.close();} catch (Exception ex) {ex.printStackTrace();}}}}选择“编辑—删除”,按照提示输入删除的用户名点击“删除”后,则系统会提示“删除成功”相关代码:public class deleteFrameaction implements ActionListener {String sql;Connection con;Statement stmt;public void actionPerformed(ActionEvent e) {deleteFrame.delFrame.setVisible(false);//删除界面不可见if (((JButton) e.getSource()).getText().equals("删除")) {String nn = deleteFrame.lbDel.getText();//try {con = new Connect().getConnection();stmt = con.createStatement();sql = "delete from address where 姓名=" + "\'" + nn.trim() + "\'";stmt.executeUpdate(sql);JOptionPane.showMessageDialog(null, "删除成功");stmt.close();con.close();//结束连接} catch (Exception ex) {System.out.println("Exception:" +ex.getMessage());}deleteFrame.lbDel.setText("");}if (((JButton) e.getSource()).getText().equals("放弃")) {deleteFrame.delFrame.setVisible(false);}}}点击“文件—按姓名查找”,输入所需要查找的用户名图4-13 查找记录点击“查询”,系统会对数据库进行查找,并提示“查找结束”相关代码:public QueryFrame() {findFrame = new JDialog(Myaddress.myFrame, "查找记录", true);//查找可见findFrame.setLocationRelativeTo(null);//查找地址不为空findFrame.setLayout(new GridLayout(2, 0));//网格大小JLabel labelFind = new JLabel("输入所要查询的用户名:");findok = new JButton("查询");findgp = new JButton("撤消");lbFind = new TextField(10);findok.addActionListener(new QueryAction());findgp.addActionListener(new QueryAction());JPanel p4 = new JPanel();//容器JPanel p6 = new JPanel();p4.add(labelFind);p4.add(lbFind);p6.add(findok);p6.add(findgp);findFrame.add(p4);findFrame.add(p6);findFrame.pack();findFrame.setVisible(true);}}以上通过了正确查找和错误两方面充分论证了查找功能的正常运行。