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
正在阅读:
java个人通讯录课程设计报告 - 图文03-28
XX银行开门红动员会讲话稿03-08
《经济生活》第一课第一框《揭开货币的神秘面纱》(2009版)教学03-20
轻轨新线工程施工组织设计(投标)04-15
中药学训练试题七10-21
《最终幻想14》进阶职业攻略:龙骑士04-23
一年级下册道德与法制教案全册05-01
青岛版五年制五年级数学上册第三单元测试卷(有答案)06-24
五大规划与党建知识网上答题题库01-31
《Excel函数的使用》(教学设计)09-27
- 冀教版版五年级科学下册复习资料
- 微生物学复习提纲
- 2013—2014学年小学第二学期教研组工作总结
- 国有土地转让委托服务合同协议范本模板
- 我的固废说明书
- 企业管理诊断报告格式
- 东鼎雅苑施工组织设计
- 谈谈如何做好基层党支部书记工作
- 浮梁县环保局市级文明单位创建工作汇报
- 管理学基础知识
- 大学物理实验报告23 - PN结温度传感器特性1
- 计算机网络实践
- 酒桌上这四种情况下要坐牢,千万别不当回事……
- 国家康居示范工程建设技术要点
- 中国贴布行业市场调查研究报告(目录) - 图文
- 新课标下如何在高中物理教学中培养学生的创新能力初探
- 营养师冬季养生食谱每日一练(7月4日)
- 关注江西2017年第3期药品质量公告
- 建设海绵城市专题习题汇总
- 10万吨年环保净水剂建设项目报告书(2).pdf - 图文
- 通讯录
- 课程
- 图文
- 报告
- 设计
- 个人
- java
- 新版PEP小学英语六年级上册教材分析
- 关于增补部分党支部委员的实施方案
- 湖南省长沙市麓山国际实验学校2015届九年级历史上学期第一次限时
- 巴利新音译
- 小型构件物预制施工技术交底(二级) - 图文
- 临床医学概论试题
- 部编本《咏雪》《陈太丘与友期行》课内外对比阅读(原创)
- 2015届高三地理二轮复习:专题训练 专题1 等值线 第2讲 含解析
- 私募基金合格投资者与销售适当性管理办法
- Access2003练习题(单选)
- 2014年全国优质教育科研成果-优质课奖 - 图文
- 一年级上册生字笔画笔顺
- 九年级语文上学期期末考试试题新人教版(4)
- 网安设备选型规范V1.0 - 图文
- 墩身钢筋直螺纹套筒连接工艺检查要点
- 《过秦论》导学案及答案(教师)
- 2012词汇学试题
- 论民办高校党组织建设与作用发挥
- 大学生应该持一种怎样的存钱花钱态度?
- 中低轨卫星通信的商业发展前景