package src01;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintStream;
import java.io.Writer;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
public class Menu extends AbstractTableModel implements ActionListener{
public static String title[]={"单号","发货人","收货人","发货地址","收货地址","手机号","创建时间"};
public static Object inf[][]={{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""},
{"","","","","","",""},{"","","","","","",""}};
public static final String datd="com.mysql.jdbc.Driver";
public static final String datu="jdbc:mysql://localhost:3306/express";
public static final String dname="root";
public static final String dpass="123456";
public static final String sql="select id,fname,sname,faddress,saddress,number,ctime from expressInfo";
JFrame f=new JFrame("快递信息管理系统");
JButton display=new JButton("显示");
JButton search=new JButton("查找");
JButton modify=new JButton("修改");
JButton adda=new JButton("添加");
JButton delete=new JButton("删除");
JButton save=new JButton("保存文件");
JButton quit=new JButton("退出");
JTable tab=null;
DefaultTableModel tabmo=null;
Connection con=null; //数据库连接
Statement sta=null; //数据库操作
ResultSet rs=null; //保存查询结果
PrintStream ps=null;
public Menu() throws Exception{
Class.forName(datd); //加载驱动程序
con=DriverManager.getConnection(datu,dname,dpass);
sta=con.createStatement();
tabmo=new DefaultTableModel(inf,title);
tab=new JTable(tabmo);
JScrollPane js=new JScrollPane(tab);
JPanel jp=new JPanel();
jp.add(display);
jp.add(search);
jp.add(modify);
jp.add(adda);
jp.add(delete);
jp.add(save);
jp.add(quit);
f.add(jp,BorderLayout.NORTH);
f.add(js,BorderLayout.CENTER);
f.setSize(880,500);
f.setLocation(250,70);
f.setVisible(true);
display.addActionListener(this);
search.addActionListener(this);
modify.addActionListener(this);
adda.addActionListener(this);
delete.addActionListener(this);
save.addActionListener(this);
quit.addActionListener(this);
}
public int getColumnCount(){
return title.length;
}
public int getRowCount(){
return inf.length;
}
public Object getValueAt(int row,int col){
return inf[row][col];
}
public String getColumnName(int col){
return title[col];
}
public Class<?>getColumnClass(int col){
return this.getValueAt(0,col).getClass();
}
public boolean isCellEditable(int row,int col){
return false;
}
public void setValueAt(Object newv,int row,int col){
this.inf[row][col]=newv;
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==display){
try{
this.show(sql,0,"");
}catch(Exception ex){}
}
if(e.getSource()==search){
try{
f.dispose();
new Search();
if(tabmo.getValueAt(0,0).equals("")){
JOptionPane.showMessageDialog(null,"数据库中不存在你查找的快递信息,请重新输入!","提示!",JOptionPane.INFORMATION_MESSAGE); ;
f.dispose();
}
}catch(Exception ex){}
}
if(e.getSource()==modify){
try{
f.dispose();
new Modify();
}catch(Exception ex){}
}
if(e.getSource()==adda){
try{
f.dispose();
new Adda();
}catch(Exception ex){}
}
if(e.getSource()==delete){
try{
f.dispose();
new Delete();
}catch(Exception ex){}
}
if(e.getSource()==save){
try{
this.Save();
JOptionPane.showMessageDialog(null,"保存文件成功,可以在D盘根目录查看文件!","提示!",JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){}
}
if(e.getSource()==quit){
try{
sta.close();
con.close();
System.exit(1);
}catch(Exception ex){}
}
}
public void show(String s,int p,String t)throws Exception{ //p=0:只显示数据,p=1:update数据在显示
//con=DriverManager.getConnection(datu,dname,dpass); //s:要显示的sql,t:数据库更新语句
//sta=con.createStatement();
if(p==0){
rs=sta.executeQuery(s); //实例化查询结果对象
}else{
sta.executeUpdate(t); //执行数据库更新操作
rs=sta.executeQuery(s);
}
int id;
String fname=null;
String sname=null;
String faddress=null;
String saddress=null;
String number=null;
String ctime=null;
int i=0;
while(rs.next()){
id=rs.getInt("id");
fname=rs.getString("fname");
sname=rs.getString("sname");
faddress=rs.getString("faddress");
saddress=rs.getString("saddress");
number=rs.getString("number");
ctime=rs.getString("ctime");
tabmo.setValueAt(id,i,0);
tabmo.setValueAt(fname,i,1);
tabmo.setValueAt(sname,i,2);
tabmo.setValueAt(faddress,i,3);
tabmo.setValueAt(saddress,i,4);
tabmo.setValueAt(number,i,5);
tabmo.setValueAt(ctime,i,6);
i+=1;
if (i>=tabmo.getRowCount()) {
tabmo.addRow(new Object[]{});
}
}
//sta.executeUpdate("create table stuce;");
}
public void Save()throws Exception{
String id[]=new String[1000];
String fname[]=new String[1000];
String sname[]=new String[1000];
String faddress[]=new String[1000];
String saddress[]=new String[1000];
String number[]=new String[1000];
String ctime[]=new String[1000];
int i=0;
Writer out= new FileWriter(new File("d:"+File.separator+"express.txt"));
rs=sta.executeQuery(sql);
while(rs.next()){
id[i]=rs.getString("id");
fname[i]=rs.getString("fname");
sname[i]=rs.getString("sname");
faddress[i]=rs.getString("faddress");
saddress[i]=rs.getString("saddress");
number[i]=rs.getString("number");
ctime[i]=rs.getString("ctime");
i+=1;
}
for(int j=0;j<i;j++){
out.write(id[j]+"\t");
out.write(fname[j]+"\t");
out.write(sname[j]+"\t");
out.write(faddress[j]+"\t");
out.write(saddress[j]+"\t");
out.write(number[j]+"\t");
out.write(ctime[j]);
out.write("\r");
}
out.close();
}
}
Java GUI(快递信息管理系统)
需积分: 0 179 浏览量
更新于2024-01-06
收藏 34KB RAR 举报
Java GUI(快递信息管理系统)是基于Java编程语言开发的一款用户界面友好的系统,主要用于管理和跟踪快递公司的包裹信息。这个系统采用图形用户界面(GUI)来提供直观的操作方式,使得非技术用户也能方便地进行快递信息的录入、查询、更新和删除等操作。以下是关于Java GUI快递信息管理系统的相关知识点:
1. **Java GUI基础**:Java GUI是Java应用程序的图形用户接口,主要由Java Swing和JavaFX库提供支持。Swing是Java标准版的一部分,提供了丰富的组件集合,如按钮、文本框、表格和对话框等,可以构建复杂的窗口应用。
2. **AWT与Swing**:Abstract Window Toolkit (AWT)是Java早期的GUI库,而Swing是建立在AWT之上的,提供了更多的组件和更现代的外观。Swing组件是轻量级的,比AWT更高效,且能跨平台运行。
3. **JFrame与JPanel**:JFrame是Java窗口的主要类,用于创建程序的主窗口。JPanel则是一个容器,可以在其中添加其他组件,如按钮和文本框,实现界面布局。
4. **事件处理**:在GUI中,用户与组件的交互需要通过事件监听器来处理。例如,当用户点击按钮时,对应的事件处理器会被调用,执行相应的业务逻辑。
5. **数据模型**:快递信息管理系统通常会包含一个数据模型,用于存储和管理快递包裹的信息,如收件人、寄件人、快递单号等。这可能涉及到ArrayList、LinkedList或自定义的类来存储和操作数据。
6. **JTable组件**:JTable是展示二维数据的组件,非常适合用来显示和编辑快递包裹列表。可以通过DefaultTableModel或者自定义的TableModel来控制表格的内容和行为。
7. **数据库连接**:为了持久化存储快递信息,系统可能会使用数据库,如MySQL或SQLite。Java提供JDBC(Java Database Connectivity)API来连接和操作数据库,实现数据的增删查改。
8. **Swing布局管理器**:为了在界面上合理地排列组件,需要使用布局管理器,如FlowLayout、BorderLayout、GridLayout和GridBagLayout等。布局管理器决定了组件的大小和位置。
9. **异常处理**:在处理用户输入和数据库操作时,应进行异常处理,以确保程序的稳定性和健壮性。例如,使用try-catch语句捕获并处理可能出现的异常。
10. **设计模式**:在开发这样的系统时,设计模式如MVC(Model-View-Controller)可以帮助结构化代码,分离用户界面、业务逻辑和数据模型,使代码更易于维护和扩展。
11. **国际化与本地化**:考虑到可能有不同国家和地区的用户,系统可能需要支持多语言。Java提供ResourceBundle和Locale类来实现国际化和本地化功能。
12. **测试与调试**:为了确保系统功能的正确性,需要进行单元测试和集成测试。JUnit是Java常用的单元测试框架,而IDE的调试工具可以帮助定位和修复代码中的问题。
13. **用户认证与权限控制**:对于更复杂的系统,可能需要实现用户登录功能,以及基于角色的权限控制,以保护数据安全。
14. **日志记录**:为了追踪程序运行情况和错误信息,通常会引入日志记录库,如Log4j或java.util.logging,记录系统的操作和异常事件。
15. **性能优化**:对于大型数据量的处理,需要考虑性能优化,如使用PreparedStatement替代Statement来防止SQL注入并提高查询效率,或者使用缓存策略来减少数据库访问。
以上就是Java GUI快递信息管理系统涉及的一些核心知识点,涵盖了GUI设计、事件处理、数据存储、异常处理等多个方面。通过这些技术,开发者可以构建出一个高效、易用的快递信息管理平台。
清穷
- 粉丝: 33
- 资源: 1
最新资源
- springboot261高校专业实习管理系统的设计和开发_0303174040.zip
- springboot065基于智能推荐的卫生健康系统.zip
- springboot066人事系统.zip
- springboot262基于spring boot的小型诊疗预约平台的设计与开发.zip
- springboot067中小型医院网站.zip
- pcl源码point-types.h
- 双馈风机惯性控制参与系统一次调频的Matlab Simulink模型 系统为三机九节点模型,所有参数已调好且可调,可直接运行,风电渗透率19.4% 风机采用惯性控制,转速回复模块,在系统频率跌落时释放
- Radar Archetecture
- springboot069视频网站系统的设计与实现.zip
- springboot068桂林旅游景点导游平台.zip
- springboot262基于spring boot的小型诊疗预约平台的设计与开发_0303174040.zip
- springboot070基于springboot的大创管理系统.zip
- springboot263校园组团平台.zip
- springboot263校园组团平台_0303174040.zip
- springboot071基于springboot的图书进销存管理系统.zip
- springboot070基于springboot的大创管理系统_0303152757.zip