java个人通讯录课程设计报告 - 图文

更新时间:2024-03-28 09:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

山东交通学院

面向对象课程设计

个人通信录管理信息系统的设计与实现

院(系)别 信息科学与电气工程学院

班 级 学 号 姓 名 指导教师 时 间 2014-08-25—2014-09-5

课 程 设 计 任 务 书

题 目 个人通讯录管理系统 院 (部) 信息科学与电气工程学院 专 业 计算机科学与技术 班 级 学生姓名 学 号

08 月 25 日至 09 月 5 日 共 2 周

指导教师(签字) 院 长(签字)

年 月 日

一、 设计内容及要求 目的:通过本题目的设计,加深对面向对象程序设计技术的理解,掌握利用数据库编写小型程序的基本过程和方法。 任务: 1)利用面向对象编程技术,完成个人信息的存储管理; 2)选择系统开发平台(JAVA或.NET)和软件架构(C/S、单机版); 3)要求系统能够对联系人的系统进行录入、查询、编辑、导入和导出等。 二、 设计原始资料 三、设计完成后提交的文件和图表 2.图纸部分: 程序流程图 程序开始 菜单界面 登陆界面 功能界面 增加界面 查找界面 修改界面 进入功能 总体功能 数据功能 显示功能 程序结束 四、进程安排 8月25—8月26,程序流程图,程序设计总框图 8月27—8月28,数据库连接,删除部分代码 8月29,登陆界面代码 9月1—9月4添加、修改、查找、导出数据库部分代码 9月5号 答辩。

五、主要参考资料 1 《java语言及其应用》 董佑平,夏冰冰 清华大学出版社 2012

成 绩 评 定 表

作品成绩 报告成绩 口试(答辩)成绩 总评成绩

目 录

1

课程设计概述 ......................................................................................................................... 1 1.1 1.2 2

个人通讯录功能概述 ................................................................... 错误!未定义书签。 开发环境概述 ............................................................................... 错误!未定义书签。

个人通讯录系统总体设计 ................................................................... 错误!未定义书签。 2.1 2.2

个人通讯录总体设计思想 ............................................................................................. 1 总体设计流程图 ............................................................................................................. 2

3 4

个人通讯录系统详细设计 ................................................................... 错误!未定义书签。 程序测试 ................................................................................................................................. 3 4.1 4.2 4.3 4.4

登陆界面 ....................................................................................... 错误!未定义书签。 删除界面 ....................................................................................... 错误!未定义书签。 添加界面 ......................................................................................................................... 8 查找实现 ....................................................................................... 错误!未定义书签。

设计体会及今后的改进意见 ....................................................................................................... 22

课程设计概述

本课程设计是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.1 总体设计流程图

程序开始 菜单界面 累加统计 重新统计 清屏界面 帮助界面 退出界面 累加功能 重记功能 清屏功能 帮助功能 程序结束

图2-1 总体设计流程

2

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(\);

3

cancel = new JButton(\);

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(); }

4

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);

5

password = new TextField(10); username.setText(\); password.setText(\);

certain = new JButton(\); cancel = new JButton(\);

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);

6

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:\ + \ + \); saveok = new JButton(\); savegp = new JButton(\); lbSave = new TextField(10);

saveok.addActionListener(new FileExportDBAction()); savegp.addActionListener(new FileExportDBAction()); JPanel p9 = new JPanel(); JPanel p10 = new JPanel(); p9.add(labelSave);

7

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 添加界面

8

点击“保存”将新加的信息加入数据库,系统会告知“添加成功”。

相关代码:

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();

9

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 = \ + \ + 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();

10

Myaddress.myFrame.getContentPane().add(new Image());

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();

11

Myaddress.myFrame.getContentPane().add(new Image()); Myaddress.myFrame.pack();

Myaddress.myFrame.setVisible(true); }

if (((JButton) e.getSource()).getText().equals(\保存修改\)) {

group, note, msnqq;

\

String sx, bday, mphone, phone, compay, email, home, 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();

12

try {

con = new Connect().getConnection(); stmt = con.createStatement();

sql1 = \性别=\\'\ + sx + \生日= \ + bday

+ phone

EMail=\\'\

别= \\'\

\;

Image());

+ \, 移动电话=\\'\ + mphone + \, 固定电话=\\'\ + \ + \公司地址=\\'\ + compay + \ + email + \家庭地址=\\'\ + home + \组 + group + \, 备注=\\'\ + note + \, MSNQQ=\\'\ + msnqq + \姓名=\\'\ + 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 13

Myaddress.myFrame.pack();

Myaddress.myFrame.setVisible(true); } else {

JOptionPane.showMessageDialog(null, \修改失败\); }

stmt.close(); con.close();

} catch (Exception ex) { ex.printStackTrace(); } } } }

选择“编辑—删除”,按照提示输入删除的用户名

点击“删除”后,则系统会提示“删除成功”

14

相关代码:

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 = \姓名=\ + \ + nn.trim() + \;

stmt.executeUpdate(sql);

JOptionPane.showMessageDialog(null, \删除成功\); stmt.close();

con.close();//结束连接

} catch (Exception ex) {

15

System.out.println(\ + ex.getMessage()); }

deleteFrame.lbDel.setText(\); }

if (((JButton) e.getSource()).getText().equals(\放弃\)) { deleteFrame.delFrame.setVisible(false); } } }

点击“文件—按姓名查找”,输入所需要查找的用户名

图4-13 查找记录

点击“查询”,系统会对数据库进行查找,并提示“查找结束”

16

相关代码:

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());

17

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); } }

以上通过了正确查找和错误两方面充分论证了查找功能的正常运行。

点击文件“编辑—查找全部”,则会弹出一个空白的查找结果界面,这是因为在程序设计中默认的是不显示所得的信息

图4-18 查找全部界面

然后点击“显示查询结果”,即可显示出全部查询结果。

18

public class QueryAllAction implements ActionListener {

String sql; Connection con; Statement stmt;

public void actionPerformed(ActionEvent e) {

if (((JButton) e.getSource()).getText().equals(\显示查询结果\)) {

String nm, sx, mp, ph, em, ca, ha, nb, gp, lbMQ, all; boolean bdr; Date bd;

try {

19

con = new Connect().getConnection(); stmt = con.createStatement(); sql = \;

ResultSet ws = stmt.executeQuery(sql); while (ws.next()) { bd

MSN/QQ\

注\ + nb

nm = ws.getString(1); sx = ws.getString(2); bd = ws.getDate(3); mp = ws.getString(4); ph = ws.getString(5); ca = ws.getString(6); em = ws.getString(7); ha = ws.getString(8); gp = ws.getString(9); nb = ws.getString(10); lbMQ = ws.getString(11);

all = \姓名\ + nm + \性别\ + sx + \生日\ + + \移动电话\ + mp + \固定电话\ + ph + \ + lbMQ + \公司地址\ + ca + \ + em + \家庭地址\ + ha + \组 别\ + gp + \备20

+ \;

QueryAllFrame.lbdem.append(all); }

stmt.close(); con.close(); } catch (Exception ex)

{

System.out.println(\ + ex.getMessage()); } }

if (((JButton) e.getSource()).getText().equals(\退出全部查询\)) {

QueryAllFrame.lbdem.setText(\);

QueryAllFrame.demFrame.setVisible(false); } } }

21

数据库建表:

密码修改功能无法实现

至此,个人通讯录管理系统的调试运行全部完成。

设计体会及今后的改进意见

在此次Java开发过程中,有很多东西值得我们思考并总结。 开发过程大体可分为以下几个步骤:

思考总体设计方案:总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几个模块

画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。

最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化.增强程序的新意与可行性。

通过这次课程设计,使我们更加熟悉的掌握了Java语言的运用。帮助我们熟悉了更多Java语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对Java的操作有了进一步的掌握,还了解到了程序设计的书写风格。

22

本文来源:https://www.bwwdw.com/article/xjsr.html

Top