今天为大家分享一个java语言其他一个版本的通讯录管理系统,目前系统功相对前几天分享的通讯录管理系统,功能相对简单一些。但是涉及的到知识点非常多,是学习Java Swing编程、窗体、文件、数据库和事件的很好的材料。系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。
系统框架
利用JDK自带的SWING框架开发,下载。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。
系统主要功能
性能需求
系统结构化程序设计是讲一个完整的大的系统划分成若干个合适的小的功能,每个具体的功能模块相对独立,系统设计需要遵循以下一些原则。
系统性。从整个系统的角度进行考虑,系统的代码要统一,设计规范要标准,传递语言要尽可能一致,对系统的数据采集要做到数出一处、全局共享,使一次输入得到多次利用。
灵活性
系统应具有较好的开放性和结构的可变性,采用模块化结构,提高各模块的独立性,尽可能减少模块间的数据偶合,使各子系统间的数据依赖减至最低限度
可靠性
可靠性是指系统抵御外界干扰的能力及受外界干扰时的恢复能力。一个成功的管理信息系统必须具有较高的可靠性,如安全保密性、检错及纠错能力、抗病毒能力等。
4 经济性
经济性指在满足系统需求的前提下,尽可能减小系统的开销。一方面,在硬件投资上不能盲目追求技术上的先进,而应以满足应用需要为前提;另一方面,系统设计中应尽量避免不必要的复杂化,各模块应尽量简洁,以便缩短处理流程、减少处理费用
程序启动
1 下载程序源码,解压后导入到ECLIPSE或者IDEA。导入相关的JAR,然后运行Main.java文
件,然后程序进入到系统登陆界面
2 导入数据库文件到SQL SERVER数据库中
主要模块
经过认真的需求分析和调用,系统具备的主要功能有:
注册。
登录
管理自己的通讯录。通讯录信息包括:姓名、性别、分组、家庭电话、移动电话、备注等信息
分类管理。分类的新增,删除,修改。
运行效果
关键代码
package window;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import database.JDBC_CONNECTION;
import java.awt.*;
import java.awt.event.*;
import java.sql.SQLException;
public class mainframe extends JFrame implements ActionListener{
//系统托盘的实现
private SystemTray tray;
private Image image;
private PopupMenu popmenu;
private MenuItem jmiexit,jmishow;
private TrayIcon trayIcon;
//声明菜单相关变量
private JMenuBar jmb;
private JMenu jmsettings;
private JMenu jmhandle;
private JMenuItem jmipsw,jmifind,jmiadd,jmidel,jmiather;
//声明工具栏相关变量
private JToolBar jtb;
private JButton jbadd,jbdel,jbfind,jbather;
//声明状态栏相关变量
private JLabel jlstat;
//声明树和表格变量
private MyTree mytree;
private MyExcel myexcel;
//树
private JSplitPane jspp;
private DealTable dtable;
FindDialog findlg;
public mainframe()
{
SystePan();
dtable = new DealTable();
findlg = new FindDialog();
//初始化菜单相关变量
jmb = new JMenuBar();
jmsettings = new JMenu("系统设置");
jmhandle = new JMenu("基本操作");
jmipsw = new JMenuItem("修改密码");
jmifind = new JMenuItem("查找联系人");
jmiadd = new JMenuItem("添加联系人");
jmidel = new JMenuItem("删除联系人");
jmiather = new JMenuItem("修改联系人");
//将菜单项添加到菜单栏中
jmb.add(jmsettings);
jmb.add(jmhandle);
jmsettings.add(jmipsw);
jmhandle.add(jmifind);
jmhandle.addSeparator();
jmhandle.add(jmiadd);
jmhandle.addSeparator();
jmhandle.add(jmiather);
jmhandle.addSeparator();
jmhandle.add(jmidel);
//初始化工具栏相关变量
jtb = new JToolBar();
jtb.setEnabled(false);
jbadd = new JButton("添加");//"添加联系人"
jbdel = new JButton("删除");//"删除联系"
jbfind = new JButton("查找");//"联系人"
jbather = new JButton("修改");//"联系人"
jbadd.setToolTipText("添加联系人");
jbdel.setToolTipText("删除联系人");
jbfind.setToolTipText("查找联系人");
jbather.setToolTipText("修改联系人");
//将button添加到工具栏中
jtb.add(jbadd);
jtb.add(jbather);
jtb.add(jbdel);
jtb.add(jbfind);
jtb.add(findlg);
//状态栏初始化
jlstat = new JLabel("课程设计");
//初始化树
mytree = new MyTree();
myexcel = new MyExcel();
jspp = new JSplitPane();
jspp.setOneTouchExpandable(true);
jspp.setContinuousLayout(true);
jspp.setPreferredSize(new Dimension(100,200));
jspp.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
jspp.setLeftComponent(mytree);
jspp.setRightComponent(myexcel);
jspp.setDividerLocation(150);
jspp.setResizeWeight(0.1);
jspp.setDividerSize(10);
jspp.setEnabled(false);
//将控件添加到窗口中
this.setJMenuBar(jmb);
this.add(jtb,BorderLayout.NORTH);
this.add(jlstat,BorderLayout.SOUTH);
this.add(jspp);
//窗口设置
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screen.width - 750) / 2;
int y = (screen.height - 500) / 2;
this.setSize(750, 500);
this.setLocation(x,y);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("通信录管理系统");
this.setVisible(true);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
setVisible(false);
}
});
//按钮及菜单添加事件处理
jbadd.addActionListener(this);
jmiadd.addActionListener(this);
jbather.addActionListener(this);
jmiather.addActionListener(this);
jbdel.addActionListener(this);
jmidel.addActionListener(this);
jmipsw.addActionListener(this);
jbfind.addActionListener(this);
jmifind.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object btn = e.getSource();
if(btn == jbadd || btn == jmiadd)
{
new Dialog(this,"添加联系人").setVisible(true);
String tsql = "SELECT *FROM TXL";
dtable.TreeToExcel(myexcel.jtb, myexcel.dtm, tsql);
}
else if(btn == jbdel || btn == jmidel)
{
int temp = JOptionPane.showConfirmDialog(null, "确认删除?","提示",JOptionPane.OK_CANCEL_OPTION);
if(temp == 0)
{
if(dtable.DelPeople(myexcel.jtb))
{
JOptionPane.showMessageDialog(null, "删除成功!","提示",JOptionPane.INFORMATION_MESSAGE);
String tsql = "SELECT *FROM TXL";
dtable.TreeToExcel(myexcel.jtb, myexcel.dtm, tsql);
}
else
JOptionPane.showMessageDialog(null,"无法删除","警告",JOptionPane.WARNING_MESSAGE);
}
}
else if(btn == jmipsw)
{
new pswDlg(this);
}
else if(btn == jbather || btn == jmiather)
{
if(dtable.tableselct(myexcel.jtb))// //myexcel.jtb.isRowSelected(1)
{
Dialog dlog = new Dialog(this,"修改联系人");
String tempstr[] = dtable.xinxi(myexcel.jtb);
dlog.setAltName(tempstr[0]);
dlog.setText(tempstr);
byte[] by = dtable.getPicture(myexcel.jtb);
dlog.setPicture(by);
dlog.setVisible(true);
//确定之后显示修改
String tsql = "SELECT *FROM TXL";
dtable.TreeToExcel(myexcel.jtb, myexcel.dtm, tsql);
}
else
JOptionPane.showMessageDialog(null, "请先选择要修改的联系人","提示",
JOptionPane.INFORMATION_MESSAGE);
}
else if(btn == jbfind || btn == jmifind)
{
if(findlg.isVisible())
{
findlg.setVisible(false);
}
else
findlg.setVisible(true);
}
else if(btn == trayIcon)
{
setVisible(true);
}
else if(btn == jmiexit)
{
System.exit(0);
}
else if(btn == jmishow)
{
setVisible(true);
}
}
public void SystePan()
{
if(SystemTray.isSupported())
{
try {
tray = SystemTray.getSystemTray();
image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("t1.png"));
popmenu = new PopupMenu();
jmiexit = new MenuItem("退出");
jmishow = new MenuItem("显示");
popmenu.add(jmishow);
popmenu.add(jmiexit);
System.out.println("debug");
trayIcon = new TrayIcon(image,"通信录管理系统",popmenu);
trayIcon.addActionListener(this);
jmishow.addActionListener(this);
jmiexit.addActionListener(this);
trayIcon.setImageAutoSize(true);
tray.add(trayIcon);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
}
}