Java+MySQL圖形界面編程模擬通訊錄系統

需求分析

通訊錄信息管理系統的功能總結起來,共需要以下幾個方面:
1、通訊錄中聯繫人的增加、保存功能
2、聯繫人的信息檢索功能,包括對聯繫人的信息排序(如:按年齡排序),精確查找,條件查詢等快捷功能
3、聯繫人信息修改與刪除功能,通過本系統可快速修改聯繫人信息,批量刪除和全部刪除。

結構設計

根據對系統的需求分析,本系統將分爲 3 個模塊:

  • 輸入信息管理: 管理聯繫人的基本信息錄入。
  • 查詢信息管理:查詢聯繫人的基本信息,包括聯繫人的信息排序查詢(如:按年齡排序),精確查找,條件查詢等(如:性別、年齡、姓名等)。
  • 修改信息管理: 修改聯繫人的基本信息,包括姓名,年齡、聯繫方式等。

功能結構圖

在這裏插入圖片描述

功能流程以及工作流描述

1、錄入聯繫人信息
系統操作人員打開輸入信息加界面,輸入相關的信息(姓名、年齡、性別、電話、地址、其他等),在數據庫中添加相關數據。
2、查詢聯繫人信息
條件查詢:根據姓名,性別,年齡等條件查詢出聯繫人的相關信息。年齡排序查詢:根據年齡排序查詢聯繫人的相關信息。姓名排序查詢:根據姓名排序查詢聯繫人的相關信息。查詢全部:查詢所有聯繫人的相關信息。
3、刪除聯繫人信息
根據姓名刪除該聯繫人的相關信息、刪除全部聯繫人的相關信息,確定刪除後,在數據庫中刪除該信息。
4、修改聯繫人信息
根據姓名對聯繫人的相關信息進行修改,包括姓名、年齡、性別、電話、地址、其他等

數據庫設計

此係統使用的是MySQL數據庫,由於此係統需要的數據量不是很大, 所以選擇比較簡便的MySQL數據庫。此係統的數據庫名稱是 day2,創建語句如下:
Create database day2;

數據表的設計

數據庫中只有1個表,即是聯繫人表(ziliao),設計要求如下表所示。
在這裏插入圖片描述
在這裏插入圖片描述
數據表 Student 的數據庫操作語句是:

create table ziliao( sname varchar(20) , sage int, sex varchar(30), telephone varchar(20), address varchar(50), other varchar(50) );

程序

源碼下載鏈接:
https://download.csdn.net/download/m0_37738838/10575962

package menu;

import javax.swing.*;

import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.awt.*;
import java.awt.event.*;

import javax.swing.event.*;
public class Menu extends JFrame{




	TextField text1=new TextField(50);
	TextField text2=new TextField(50);
	TextField text3=new TextField(50);
	TextField text4=new TextField(50);
	TextField text5=new TextField(50);
	TextField text6=new TextField(50);
	TextField t1=new TextField(50);
	TextField t2=new TextField(50);
	TextField t3=new TextField(50);
	TextField t4=new TextField(50);
	TextField t5=new TextField(50);
	TextField t6=new TextField(50);
	TextField ta1=new TextField(5);
	TextField ta2=new TextField(5);
	TextField ta3=new TextField(5);

	TextArea txt1 =new TextArea(50,50);

	JButton b1=new JButton("清除");
	JButton b2=new JButton("保存");
	JButton b3=new JButton("修改");
	JButton b4=new JButton("刪除");
	JButton b5=new JButton("查詢");




	Label l1=new Label(" 輸入姓名   :");
	Label l2=new Label(" 輸入年齡   :");
	Label l3=new Label(" 輸入性別   :");
	Label l4=new Label(" 輸入電話   :");
	Label l5=new Label(" 輸入地址   :");
	Label l6=new Label(" 輸入其他   :");
	Label a1=new Label(" 輸入姓名   :");
	Label a2=new Label(" 輸入年齡   :");
	Label a3=new Label(" 輸入性別   :");
	Label a4=new Label(" 輸入電話   :");
	Label a5=new Label(" 輸入地址   :");
	Label a6=new Label(" 輸入其他   :");
	Label a7=new Label("(輸入姓名即可刪除)");
	Label la1=new Label("姓名:");
	Label la2=new Label("年齡:");
	Label la3=new Label("性別:");
	Label la4=new Label("    ");
	Label la8=new Label("    ");
	Label la9=new Label("    ");
	Label la11=new Label("    ");
	Label la12=new Label("    ");
	Label la5=new Label("");
	Label la6=new Label("");
	Label la7=new Label("");







	JMenuBar bar;
	JMenu file,sear,dele,order;
	JMenuItem name,sex,age,show,clear,sall,dall,oage,oname;



	JPanel ff=new JPanel();	
	JPanel f1=new JPanel();
	JPanel f2=new JPanel();
	JPanel f3=new JPanel();
	JPanel f4=new JPanel();
	JPanel f5=new JPanel();


	JTabbedPane Tpan=new JTabbedPane();//定義分頁面板對象



	public Menu()           //構造方法實現圖形化界面
	{
		super("通訊錄");//用jframe設置title

		ff=(JPanel)this.getContentPane();//ff對象獲取框架


		text1.setBounds(50, 50, 130, 20);
		text2.setBounds(50, 70, 130, 20);

		f1.setVisible(true);
		f1.setBounds(0, 0, 300, 200);
		f1.setLayout(new FlowLayout());//設置頁面的佈局

		f1.add(l1);
		f1.add(text1);
		f1.add(l2);
		f1.add(text2);
		f1.add(l3);
		f1.add(text3);
		f1.add(l4);
		f1.add(text4);
		f1.add(l5);
		f1.add(text5);
		f1.add(l6);
		f1.add(text6);
		f1.add(b1);
		f1.add(b2);


		f2.setLayout(new BorderLayout(10,50)); //設計f2的佈局

		bar=new JMenuBar(); 
		sear=new JMenu("查找");
		file=new JMenu("文件");
		order=new JMenu("排序");
		dele=new JMenu("刪除");


		name =new JMenuItem("姓名");
		sex  =new JMenuItem("性別");  
		age  =new JMenuItem("年齡");
		show =new JMenuItem("顯示");    
		clear=new JMenuItem("清空");
		sall =new JMenuItem("查找全部");
		dall =new JMenuItem("刪除全部");
		oage =new JMenuItem("年齡排序");
		oname=new JMenuItem("姓名排序");


		bar.add(file);
		bar.add(order);
		bar.add(sear);
		bar.add(dele);

		sear.add(sall);

		order.add(oage);
		order.add(oname);



		dele.add(dall);



		file.add(show);
		file.add(clear);

		setJMenuBar(bar);//現實或隱藏此組件
		setVisible(true);

		//設置文本框




		f2.add(txt1,BorderLayout.CENTER);
		f2.add(bar ,BorderLayout.NORTH);
		f2.add(f4  ,BorderLayout.WEST);
		f2.add(la5 ,BorderLayout.EAST);
		f2.add(la6 ,BorderLayout.SOUTH);

		//****************************************************************************	  

		b1.addActionListener(new clean());     
		b2.addActionListener(new sav()); 
		b3.addActionListener(new alter());
		b4.addActionListener(new delec()); 

		b5.addActionListener(new search());                                                               //添加相應的監聽者
		show.addActionListener(new shower());
		sall.addActionListener(new shower());
		dall.addActionListener(new dall());
		clear.addActionListener(new clean());
		oname.addActionListener(new order());
		oage.addActionListener(new order());


		//*************************************************************************************	  


		ff.add(Tpan);//把兩個容器放到分頁面板tpan中然後放入同一個容器ff中
		Tpan.add(f1,0);
		Tpan.add(f2,1);
		Tpan.add(f3,2);


		Tpan.setTitleAt(0, "輸入信息");
		Tpan.setTitleAt(1, "查看信息");
		Tpan.setTitleAt(2, "修改信息");

		Tpan.setSelectedIndex(0); //設置初始頁
		//設置第三個面板***********************************************************************************        

		f1.setLayout(new FlowLayout());
		f3.add(a1); f3.add(t1);
		f3.add(a2); f3.add(t2); 
		f3.add(a3); f3.add(t3);   
		f3.add(a4); f3.add(t4);
		f3.add(a5); f3.add(t5);
		f3.add(a6); f3.add(t6);
		f3.add(b3); f3.add(b4);
		f3.add(a7);
		//****************設置第二個中的West面板************************************************	  


		f4.setLayout(new GridLayout(4,5));
		f4.add(la1);f4.add(ta1);
		f4.add(la2);f4.add(ta2);
		f4.add(la3);f4.add(ta3);
		f4.add(la4);f4.add(b5);
		f4.add(la7);
		f4.add(la8);f4.add(la9);
		f4.add(la11);f4.add(la12);
		txt1.setSize(50, 50);




		/////////***************************************************************************      
		setSize(500,400);
		show();

	}	
	class clean implements ActionListener{             //實現“清除”功能
		public void actionPerformed(ActionEvent e){
			Object source=e.getSource();
			if(source==b1)
				text1.setText("");
			text2.setText("");
			text3.setText("");
			text4.setText("");
			text5.setText("");
			text6.setText("");
			txt1 .setText("");
		}
	}
	class dall implements ActionListener{              //類dall實現刪除全部數據
		public void actionPerformed(ActionEvent e)
		{


			String driver="com.mysql.jdbc.Driver"; 
			//jdbc協議:數據庫子協議:主機:端口/連接的數據庫
			String url="jdbc:mysql://localhost:3306/day2";
			String use="root";
			String password="root";
			try{                                                          //加載驅動程序
				// 通過得到字節碼對象的方式加載靜態代碼塊,從而註冊驅動程序
				Class.forName(driver);                                        //建立連接
				Connection con=DriverManager.getConnection(url,use,password);//執行sql語句
				Statement  stmt=con.createStatement();
				String sql="delete from ziliao";
				stmt.executeUpdate(sql);




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

		}

	}


	class shower implements ActionListener{           //類shower用來實現將數據從文件讀如到文本區域中
		public void actionPerformed(ActionEvent e)
		{

			Object source=e.getSource();

			String driver="com.mysql.jdbc.Driver"; 
			String url="jdbc:mysql://localhost:3306/day2";
			String use="root";
			String password="root";
			if(source==show | source==sall)
			{
				try
				{
					Class.forName(driver);			 
					Connection con=DriverManager.getConnection(url,use,password);			
					Statement  stmt=con.createStatement();			 
					String sql="select * from ziliao ";
					ResultSet rs=stmt.executeQuery(sql);
					txt1 .setText("");
					while(rs.next())
					{

						txt1.insertText("其他: "+rs.getObject(6)+"\n\n\n",0);
						txt1.insertText("地址: "+rs.getString(5)+"\n",0);
						txt1.insertText("電話: "+rs.getString(4)+"\n",0);
						txt1.insertText("性別: "+rs.getString(3)+"\n",0);		
						txt1.insertText("年齡: "+rs.getString(2)+"\n",0);
						txt1.insertText("姓名: "+rs.getString(1)+"\n",0);

					}
					rs.close();
					stmt.close();
				}
				catch(Exception ce)
				{
					ce.printStackTrace();
				}
			}
		}}
	class order implements ActionListener{           //order 用來實現排序功能
		public void actionPerformed(ActionEvent e)
		{

			Object source=e.getSource();

			String driver="com.mysql.jdbc.Driver"; 
			String url="jdbc:mysql://localhost:3306/day2";
			String use="root";
			String password="root";
			if(source==oname)
			{
				try
				{
					Class.forName(driver);			 
					Connection con=DriverManager.getConnection(url,use,password);			
					Statement  stmt=con.createStatement();	
					String sql="select * from ziliao order by sname";
					ResultSet rs=stmt.executeQuery(sql);
					txt1 .setText("");
					while(rs.next())
					{
						
						txt1.insertText("其他: "+rs.getObject(6)+"\n\n\n",0);
						txt1.insertText("地址: "+rs.getString(5)+"\n",0);
						txt1.insertText("電話: "+rs.getString(4)+"\n",0);
						txt1.insertText("性別: "+rs.getString(3)+"\n",0);		
						txt1.insertText("年齡: "+rs.getString(2)+"\n",0);
						txt1.insertText("姓名: "+rs.getString(1)+"\n",0);

					}

					rs.close();
					stmt.close();
				}

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


			if(source==oage)
			{
				try
				{
					Class.forName(driver);			 
					Connection con=DriverManager.getConnection(url,use,password);			
					Statement  stmt=con.createStatement();			 
					String sql="select * from ziliao order by sage desc";
					ResultSet rs=stmt.executeQuery(sql);
					txt1 .setText("");
					while(rs.next())
					{
						
						txt1.insertText("其他: "+rs.getObject(6)+"\n\n\n",0);
						txt1.insertText("地址: "+rs.getString(5)+"\n",0);
						txt1.insertText("電話: "+rs.getString(4)+"\n",0);
						txt1.insertText("性別: "+rs.getString(3)+"\n",0);		
						txt1.insertText("年齡: "+rs.getString(2)+"\n",0);
						txt1.insertText("姓名: "+rs.getString(1)+"\n",0);

					}

					rs.close();
					stmt.close();
				}


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

		}}	

	class sav implements ActionListener{         //類sav用來實現將數據讀入到數據庫中
		public void actionPerformed(ActionEvent e)
		{



			String driver="com.mysql.jdbc.Driver"; 
			String url="jdbc:mysql://localhost:3306/day2";
			String use="root";
			String password="root";

			try
			{				
				Class.forName(driver);			 
				Connection con=DriverManager.getConnection(url,use,password);			
				Statement  stmt=con.createStatement();			 
				String sql="insert into ziliao values('"+text1.getText()+"','"+text2.getText()+"','"+text3.getText()+"','"+text4.getText()+"','"+text5.getText()+"','"+text6.getText()+"')"; 

				if (text1.getText().length() == 0|text2.getText().length() ==0|text3.getText().length() == 0|text4.getText().length() == 0|text5.getText().length() == 0|text6.getText().length() == 0) 
				{
					String t="錯誤";
					String d="請輸入整信息後保存";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE;           //錯誤的處理
					JOptionPane.showMessageDialog(null,d,t,dtype);
					text1.setText("");
					text2.setText("");
					text3.setText("");
					text4.setText("");
					text5.setText("");
					text6.setText("");
				}


				else if(text3.getText().equals("男")||text3.getText().equals("女")){
					stmt.executeUpdate(sql); 
					String t="成功";
					String d="保存成功";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);
					text1.setText("");
					text2.setText("");
					text3.setText("");
					text4.setText("");
					text5.setText("");
					text6.setText("");
				}
				else {
					String t="錯誤";
					String d="請重新輸入性別";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE;           //錯誤的處理
					JOptionPane.showMessageDialog(null,d,t,dtype);
					text3.setText("");
				}
			}
			catch(SQLException ex)                                    // 捕捉異常
			{
				String t="錯誤";
				String d="年齡、電話應爲數字";
				int dtype=JOptionPane.PLAIN_MESSAGE;
				dtype=JOptionPane.WARNING_MESSAGE;           //錯誤的處理
				JOptionPane.showMessageDialog(null,d,t,dtype);
				while (ex != null)
				{

					ex = ex.getNextException();
				}
			}
			catch(Exception ce)
			{
				ce.printStackTrace();
			}
		}
	}

	class alter implements ActionListener{           //修改按鈕 


		public void actionPerformed(ActionEvent e)                    // 處理修改按鈕的ActionEvent
		{

			String driver="com.mysql.jdbc.Driver"; 
			String url="jdbc:mysql://localhost:3306/day2";
			String use="root";
			String password="root";


			try
			{				
				try {
					Class.forName(driver);
				} catch (ClassNotFoundException e1) {			
					e1.printStackTrace();
				}			 
				Connection con=DriverManager.getConnection(url,use,password);			
				Statement  stmt=con.createStatement();

				if (t1.getText().length() == 0)
				{
					String t="錯誤";
					String d="姓名爲必填項目";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);
				}
				else {
					if (t2.getText().length() != 0)
			 			stmt.executeUpdate("update ziliao set sage='" +
								t2.getText() + "' where sname='" +
								t1.getText() + "'"); // 更新表中姓名相關的年齡記錄
					if (t3.getText().length() != 0)
						stmt.executeUpdate("update ziliao set sex='" +
								t3.getText() + "' where sname='" +
								t1.getText() + "'"); // 更新表中姓名相關的性別記錄
					if (t4.getText().length() != 0)
						stmt.executeUpdate("update ziliao set telephone='" +
								t4.getText() + "' where name='" +
								t1.getText() + "'"); // 更新表中與姓名相關的電話記錄
					if (t5.getText().length() != 0)
						stmt.executeUpdate("update ziliao set address='" +
								t5.getText() + "' where sname='" +
								t1.getText() + "'"); // 更新表中與姓名相關的地址的記錄
					if (t6.getText().length() != 0)
						stmt.executeUpdate("update ziliao set other='" +
								t6.getText() + "' where sname='" +
								t1.getText() + "'"); // 更新表中與姓名相關的其他的記錄
				}
				if (t2.getText().length() == 0 &t3.getText().length() == 0 &t4.getText().length() == 0&t5.getText().length() == 0&t6.getText().length() == 0) 
				{
					String t="錯誤";
					String d="修改不成功請重新輸入";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);
					t1.setText("");
					t2.setText("");
					t3.setText("");
					t4.setText("");
					t5.setText("");
					t6.setText("");
				}
				else {
					String t="成功";
					String d="修改成功";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);
					t1.setText("");
					t2.setText("");
					t3.setText("");
					t4.setText("");
					t5.setText("");
					t6.setText("");
				}
			}
			catch(SQLException ex)                                    // 捕捉異常
			{
				String t="錯誤";
				String d="修改類型錯誤電話年齡爲數字";
				int dtype=JOptionPane.PLAIN_MESSAGE;
				dtype=JOptionPane.WARNING_MESSAGE; 
				JOptionPane.showMessageDialog(null,d,t,dtype);
				t1.setText("");
				t2.setText("");
				t3.setText("");
				t4.setText("");
				t5.setText("");
				t6.setText("");
			}


		}
	}


	class delec implements ActionListener
	{           


		public void actionPerformed(ActionEvent e)                    // 處理修改按鈕的ActionEvent
		{

			String driver="com.mysql.jdbc.Driver"; 
			String url="jdbc:mysql://localhost:3306/day2";
			String use="root";
			String password="root";
			try
			{
				Class.forName(driver);           // 實例化JDBC-ODBC橋的驅動
				Connection con=DriverManager.getConnection(url,use,password);  // 連接數據庫
				String sql="select sname from ziliao";
				Statement  stmt=con.createStatement();
				ResultSet rs = stmt.executeQuery(sql);
				if (rs.next()==false)                        // 判斷數據庫中是否有要刪除的記錄,如沒有則顯示提示框
				{
					t1.setText("");
					String t="提示";
					String d="沒有您要刪除的記錄";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);
				}
				else
				{
					String sql2="delete from ziliao where sname='"+t1.getText()+"'";
					stmt.executeUpdate(sql2);             // 刪除表中對應姓名的數據記錄
					// 清空信息框
					t1.setText("");
					t2.setText("");
					t3.setText("");
					t4.setText("");
					t5.setText("");
					t6.setText("");
					String t="提示";
					String d="刪除記錄成功";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);
				}
			}
			catch(SQLException ex)                      // 捕捉異常
			{

				while (ex != null)
				{
					ex = ex.getNextException();
				}
			}
			catch(Exception ex )
			{
				ex.printStackTrace();
			}


		}	 
	}
	class search implements ActionListener
	{           


		public void actionPerformed(ActionEvent e)                    // 處理查詢按鈕的ActionEvent
		{

			String driver="com.mysql.jdbc.Driver"; 
			String url="jdbc:mysql://localhost:3306/day2";
			String use="root";
			String password="root";
			try
			{
				Class.forName(driver);           // 實例化JDBC-ODBC橋的驅動
				Connection con=DriverManager.getConnection(url,use,password);  // 連接數據庫
				String sql = null;
				Statement  stmt=con.createStatement();


				if (ta1.getText().length() == 0&ta2.getText().length() == 0&ta3.getText().length() == 0)
				{
					String t="錯誤";
					String d="您沒有輸入要查詢的項目";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);
				}
				else {
					if (ta1.getText().length() != 0)
						sql="select * from ziliao where sname='" +
								ta1.getText() + "'"; // 查詢表中相關姓名的記錄
					if (ta2.getText().length() != 0)
						sql="select * from ziliao where sage='" +
								ta2.getText() + "'"; // 查詢表中相關年齡的記錄
					if (ta3.getText().length() != 0)
						sql="select * from ziliao where sex='" +
								ta3.getText() + "'"; // 查詢表中相關性別的記錄
				}
				ResultSet rs = stmt.executeQuery(sql);
				while(rs.next())
				{
					txt1 .setText("");
					txt1.insertText("其他: "+rs.getObject(6)+"\n\n\n",0);
					txt1.insertText("地址: "+rs.getString(5)+"\n",0);
					txt1.insertText("電話: "+rs.getString(4)+"\n",0);
					txt1.insertText("性別: "+rs.getString(3)+"\n",0);		
					txt1.insertText("年齡: "+rs.getString(2)+"\n",0);
					txt1.insertText("姓名: "+rs.getString(1)+"\n",0);

				}
				rs.close();
				stmt.close();
				if (txt1.getText().length() == 0) 
				{
					String t="錯誤";
					String d="表中沒有你要查詢的記錄";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);
					ta1.setText("");
					ta2.setText("");
					ta3.setText("");

				}
				else {
					String t="成功";
					String d="查找成功";
					int dtype=JOptionPane.PLAIN_MESSAGE;
					dtype=JOptionPane.WARNING_MESSAGE; 
					JOptionPane.showMessageDialog(null,d,t,dtype);

					ta1.setText("");
					ta2.setText("");
					ta3.setText("");

				}
			}
			catch(SQLException ex)                      // 捕捉異常
			{

				while (ex != null)
				{
					ex = ex.getNextException();
				}
			}
			catch(Exception ex )
			{
				ex.printStackTrace();
			}


		}	 
	}

	public static void main(String args[])
	{ 
		Menu app=new Menu();
		app.addWindowListener
		(
				new WindowAdapter()
				{

					public void windowClosing(WindowEvent e){System.exit(0);}
				}  		
				);  

	}
}

效果

輸入信息管理系統主界面模塊
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

在這裏插入圖片描述在這裏插入圖片描述

我們將錄入四個人的聯繫信息作爲演示
在這裏插入圖片描述

查詢信息管理模塊
在這裏插入圖片描述

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

修改信息管理模塊
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

刪除信息管理模塊
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述 在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章