Java 写的通讯录管理系统2 带详细设计报告 功能非常齐全 完整源码

今天为大家分享一个java语言其他一个版本的通讯录管理系统,目前系统功相对前几天分享的通讯录管理系统,功能相对简单一些。但是涉及的到知识点非常多,是学习Java Swing编程、窗体、文件、数据库和事件的很好的材料。系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步

开发环境

开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。

系统框架

利用JDK自带的SWING框架开发,下载。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。

系统主要功能

性能需求

系统结构化程序设计是讲一个完整的大的系统划分成若干个合适的小的功能,每个具体的功能模块相对独立,系统设计需要遵循以下一些原则。

  1. 系统性。从整个系统的角度进行考虑,系统的代码要统一,设计规范要标准,传递语言要尽可能一致,对系统的数据采集要做到数出一处、全局共享,使一次输入得到多次利用。

  1. 灵活性

系统应具有较好的开放性和结构的可变性,采用模块化结构,提高各模块的独立性,尽可能减少模块间的数据偶合,使各子系统间的数据依赖减至最低限度

  1. 可靠性

可靠性是指系统抵御外界干扰的能力及受外界干扰时的恢复能力。一个成功的管理信息系统必须具有较高的可靠性,如安全保密性、检错及纠错能力、抗病毒能力等。

4 经济性

经济性指在满足系统需求的前提下,尽可能减小系统的开销。一方面,在硬件投资上不能盲目追求技术上的先进,而应以满足应用需要为前提;另一方面,系统设计中应尽量避免不必要的复杂化,各模块应尽量简洁,以便缩短处理流程、减少处理费用

程序启动

1 下载程序源码,解压后导入到ECLIPSE或者IDEA。导入相关的JAR,然后运行Main.java文

件,然后程序进入到系统登陆界面

2 导入数据库文件到SQL SERVER数据库中

主要模块

经过认真的需求分析和调用,系统具备的主要功能有:

  1. 注册。

  1. 登录

  1. 管理自己的通讯录。通讯录信息包括:姓名、性别、分组、家庭电话、移动电话、备注等信息

  1. 分类管理。分类的新增,删除,修改。

运行效果

关键代码

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

  • 1
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
设计课题题目 一、课程设计目的与要求 1.课程设计目的 1. 综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等 )来完成一个简单的信息管理程序的设计。 2. 充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序 设计中的实现思路和方法。 2. 课程设计要求 制作一个通讯录系统。 (1)该程序具有查找、添加、修改、删除功能。 (2)通讯录包括:、、街道、城市、省、邮编等。 二、总体设计 根据系统的要求,系统总体设计如图1所示。 图 三、详细设计 1、数据结构设计 #include<stdio.h> /*标准输入输出函数库*/ #include<stdlib.h> /*标准函数库*/ #include<string.h> /*字符串函数库*/ #define FILENAME "phone.dat" struct date //定义一个结构体类型数组 { char name[10]; /**/ char phone[12]; /**/ char email[20]; /**/ char QQ[20]; /*QQ*/ }per[10]; int menu() //主菜单选择函数 2.函数说明 (1) 主函数 main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。 (2) 其他各功能函数包括 "函数名 "功能 " "int Input(struct date "输入记录 " "per[10],int n) " " "void "信息查询 " "Query_a_record(struct " " "date per[10],int n) " " "void Display(struct date "信息展示 " "per[10],int n) " " "void writeToFile(struct "记录保存为文件 " "date per[10],int n) " " "int "信息删除 " "Delete_a_record(struct " " "date per[10],int n) " " "int menu_select(); "主菜单函数 " " " " " " " " "修改信息 " "void Change(struct date " " "per[10],int n) " " "void WritetoText(struct "信息增加 " "date per[10],int n) " " 四、程序清单 1、头文件 #include<stdio.h> /*标准输入输出函数库*/ #include<stdlib.h> /*标准函数库*/ #include<string.h> /*字符串函数库*/ #define FILENAME "phone.dat" 2、主函数 void main() //主函数 { int n=0,i; while(1) { switch (menu()) {case 1: { printf("\n\t 通讯信息录入\n"); //信息录入 n=Input(per, n); } break; case 2: printf("\n\t\t\t 通讯录记录表\n"); //显示记录 Display(per,n); break; case 3: printf("\n\t保存功能\n"); WritetoText(per,n); //保存数据 printf("\t"); system("pause"); //操作完成后进行暂停 break; case 4: printf("\n\t从通讯录中删除记录\n"); n=Delete_a_record(per,n); //删除记录 printf("\t"); system("pause"); break; case 5: printf("\n\t修改通讯录中的记录\n"); Change(per,n); //修改数据 printf("\t"); system("pause"); break; case 6: printf("\n\t添加记录到通讯录\n"); //添加记录 n=Input(per,n); break; case 7: printf("\n\t在通讯录中查找记录\n"); Query_a_record(per,n); //查找记录 printf("\t"); system("pause"); //从程序里调用"pause"命令 break; case 0: printf("\n\t\t使用,再见!\n"); //结束程序 printf("\n\t\t"); system("pause"); exit(0); } 五、总程序和分工执行结果 #include<stdio.h
实现了以下要求说明的功能: 1.要求使用GUI,采用 Swing 技术数据存储采用文件系统(可以是文本 文件、xml 文件、vCard 文件或其他自定义格式文件,但不能是 Excel 文件)。不 使用数据库。 2. 通讯录中每个项目包括: ( 1)基本信息:姓名、手机号码、电子邮箱、生日、所属组、备注、像片。 ( 2)工作单位:国家、省份、城市、地址、工作单位、所属部门、职位、 邮编、电话、传真 ( 3)网络信息:个人主页、即时通信工具及号码、备用邮箱 ( 4)家庭资料:国家、省份、城市、地址、邮编、电话 3 .通讯录数据的录入功能:输入并存储新的通讯录数据,输入时如果有同 名或同电话号码时,应该给出提示。 4 .通讯录数据的查询功能: ( 1)默认列出所有条目。 ( 2)模糊查询,可以按:姓名、电话号码、手机、姓名的汉语拼音的声母 或全拼查询。支持模糊查询即输入部分数据后,可以查询出符合条件的全部条目。 如:输入“张”,列出所有名字中有“张”的条目;输入“ 2645”列出电话中有 该 4个数字的所有条目;输入“xl ”,列出声母为该 2 个字母的所有条目 ( 3)指定分组后,列出某分组的所有条目 说明:查询结果如果有多个条目,应按照姓名排序,并使用姓或姓的第一 个汉语拼音的字母分类。 5 .删除和修改功能:查询到一个条目后,可以删除该条目或修改条目内容。 6 .通信录内容的导入和导出功能。要求能够以CSV 格式和 vCard 格式导入 和导出通讯录的全部内容。并能够与主流手机或其他通讯录软件交换数据。 7 .通讯录显示设置,可以设置在显示查询结果时,一个条目可以显示或不 显示哪些内容。 注意:本系统实现了读取和保存csv文件,同时csv文件中只保存了图片的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值