⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mall.java

📁 一个基于局域网的c/s模式网上购物系统,功能比较全面.数据库为Access.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;

class Mall implements ActionListener,ItemListener
{
	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;
	private MyTable defaultModel;
	private JFrame f;
	private JTable table;
	private JLabel s0;
	private JTextField amount,user,storeName,storeOwner,storeType;
	private JTextArea broadcast,storeInfo;
	private JComboBox cb;
	private JCheckBox openbox;
	private String selectType;
	private boolean open;
	private Customer customer;
	private ShoppingBasket basket;
	private String[] shopInfo;
	
	//////////////////////内部类:Shop/////////////////
	class Shop implements ActionListener
	{
		private JDialog d;
		private MyTable mt,btable;
		private JTable dlgtable,basketStatus;
		private String shopName;
		private BufferedReader receive;
		private PrintWriter send;
		private Socket shopSocket;
		private String IP=null;
		private String[] goodsInfo;
		
		/////////////////////查看商品对话框///////////////
		private class ViewDialog implements ActionListener
		{
			private JTextField t1,t2;
			private JTextArea t3;
			private JDialog jd;
			public ViewDialog() 
			{
				jd = new JDialog(d,"查看商品",true);
				Container contentPane = jd.getContentPane();
			
				JPanel textPanel = new JPanel();
				textPanel.setLayout(new GridBagLayout());
    			GridBagConstraints gbc = new GridBagConstraints();
    			gbc.anchor = GridBagConstraints.WEST; 
    			gbc.insets = new Insets(2,2,2,2); 
    	
	   	 		textPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2),
		  	    	            "商品信息:"+dlgtable.getValueAt(dlgtable.getSelectedRow(),0),TitledBorder.CENTER,TitledBorder.TOP));
				JLabel l1 = new JLabel("价格:");        
			    JLabel l2 = new JLabel("数量:");   
			    JLabel l3 = new JLabel("商品描述:");     
	   
    			t1 = new JTextField(12);
    			t1.setText(""+dlgtable.getValueAt(dlgtable.getSelectedRow(),1));
    			t1.setEditable(false);
				t2 = new JTextField(12);
				t2.setText(""+dlgtable.getValueAt(dlgtable.getSelectedRow(),2));
				t2.setEditable(false);
			
				t3 = new JTextArea(4,12);
				t3.setLineWrap(true);
				t3.setText(goodsInfo[dlgtable.getSelectedRow()]);
				t3.setEditable(false);
				t3.setBackground(new Color(238,238,238));

				
			    gbc.gridy=1;
			    gbc.gridx=0;
			    textPanel.add(l1,gbc);
			    gbc.gridx=1;
			    textPanel.add(t1,gbc);
	    		gbc.gridy=2;
	    		gbc.gridx=0;
    			textPanel.add(l2,gbc);
  		  		gbc.gridx=1;
   		 		textPanel.add(t2,gbc);
    			gbc.gridy=3;
    			gbc.gridx=0;
    			textPanel.add(l3,gbc);
    			gbc.gridx=1;
    			textPanel.add(new JScrollPane(t3),gbc);

				JPanel buttonPanel=new JPanel();
				JButton b=new JButton("购买");
				b.addActionListener(this);
 				buttonPanel.add(b);
				b=new JButton("取消");
				b.addActionListener(this);
				buttonPanel.add(b);
			
				contentPane.add(textPanel,BorderLayout.NORTH);
    			contentPane.add(buttonPanel,BorderLayout.CENTER);
    			jd.pack();
    			jd.setBounds(400,300,230,230);
    			jd.setVisible(true);
			}
			
			public void actionPerformed(ActionEvent e)
			{
				String cmd=e.getActionCommand();
  		 		if (cmd.equals("购买"))
  		 		{
  		 			jd.dispose();
  		 			new BuyDialog();
  		 		}
  		 		
  		 		else if (cmd.equals("取消"))
  		 		{
  		 			 jd.dispose();
  		 		}
			}
		}
		
		/////////////////////购买商品对话框///////////////
		private class BuyDialog implements ActionListener
		{
			private class Echo extends Thread
			{
				Echo()
				{
					start();
				}
				
				public void run()
				{
					try
					{
						String result = receive.readLine();
 		 			
 		 				if(result.equals("ACCEPT"))
  		 				{
  		 					JOptionPane.showMessageDialog(null,"对方接受了您的出价,交易成功!","回复信息:交易成功",1);
  		 					basket.add(shopName,name,quantity,price,in,out);
  							renovate();
  	 						
  	 						btable.addRow(new Vector());
	 						int i = btable.getRowCount()-1;
   							basketStatus.setValueAt(basket.getShop(i),i,0);
   							basketStatus.setValueAt(basket.getName(i),i,1);
   							basketStatus.setValueAt(basket.getQuantity(i),i,2);
   							basketStatus.setValueAt(basket.getPrice(i),i,3);
   							basketStatus.setValueAt(basket.getStatus(i),i,4);
	
	 					}
  		 					
  						else if(result.equals("REFUSE"))
  						{
  	 						JOptionPane.showMessageDialog(null,"对方拒绝了您的出价,交易失败!","回复信息:交易失败",1);
  	 					}
  	 				}catch(Exception ex){}
				}
			}
			
			
			private JTextField t1,t2;
			private JDialog jd;
			private String name;
			private int quantity;
			private double price;
			private Echo echo;
			
			
			public BuyDialog() 
			{
				jd = new JDialog(d,"购买商品",true);
				Container contentPane = jd.getContentPane();
			
				JPanel textPanel = new JPanel();
				textPanel.setLayout(new GridBagLayout());
    			GridBagConstraints gbc = new GridBagConstraints();
    			gbc.anchor = GridBagConstraints.WEST; 
    			gbc.insets = new Insets(2,2,2,2); 
    	
	   	 		textPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2),
		  	    	            "购买商品:"+dlgtable.getValueAt(dlgtable.getSelectedRow(),0),TitledBorder.CENTER,TitledBorder.TOP));
				JLabel l1 = new JLabel("购买数量:");        
			    JLabel l2 = new JLabel("出价(总价):");   

	   
    			t1 = new JTextField(6);
    			t1.setText(1+"");
				t2 = new JTextField(6);
				t2.setText((String)dlgtable.getValueAt(dlgtable.getSelectedRow(),1));

				
			    gbc.gridy=1;
			    gbc.gridx=0;
			    textPanel.add(l1,gbc);
			    gbc.gridx=1;
			    textPanel.add(t1,gbc);
	    		gbc.gridy=2;
	    		gbc.gridx=0;
    			textPanel.add(l2,gbc);
  		  		gbc.gridx=1;
   		 		textPanel.add(t2,gbc);

				JPanel buttonPanel=new JPanel();
				JButton b=new JButton("确定");
				b.addActionListener(this);
 				buttonPanel.add(b);
				b=new JButton("取消");
				b.addActionListener(this);
				buttonPanel.add(b);
			
				contentPane.add(textPanel,BorderLayout.NORTH);
    			contentPane.add(buttonPanel,BorderLayout.CENTER);
    			jd.pack();
    			jd.setBounds(400,300,200,160);
    			jd.setVisible(true);
			}
			
			public void actionPerformed(ActionEvent e)
			{
				String cmd=e.getActionCommand();
  		 		if (cmd.equals("确定"))
  		 		{
  		 			try
  		 			{
  		 				name = (String)dlgtable.getValueAt(dlgtable.getSelectedRow(),0);
  		 				quantity = Integer.parseInt(t1.getText());
  		 				price = Double.parseDouble(t2.getText());
  		 					
  		 				send.println("BUY");
  		 				send.println(customer.getUserName());
  		 				send.println(name);
  		 				send.println(quantity);
  		 				send.println(price);
  		 				
  		 				  		 				
  		 				jd.dispose();
  		 				
  		 				JOptionPane.showMessageDialog(null,"已发送订单请求,请不要在收到回复前退出!","提示信息",1);
  	 					
  		 				echo = new Echo();

  		 			}catch(Exception ex){ex.printStackTrace();}
  		 				
  		 		}
  		 		
  		 		else if (cmd.equals("取消"))
  		 		{
  		 			jd.dispose();
  		 		}
			}
		}
		
		///////////////////////留言框/////////////////////
		private class MessageDialog
		{
			String message,next;
			
			public MessageDialog()
			{
				message = "";
				try
				{
					send.println("GETMSG");
					next = receive.readLine();
    				while(!next.equals("OVER"))
    				{
    					message +=next+"\n";
    					next = receive.readLine();
    				}
    			}catch(Exception ex){}
				
				
				final JDialog jd = new JDialog(d,"留言板",true);
				Container contentPane = jd.getContentPane();
				
				final JTextArea msg = new JTextArea(12,25);
				msg.setBackground(new Color(238,238,238));
				msg.setEditable(false);
				msg.setLineWrap(true);
				msg.setText(message);
				JPanel textPanel = new JPanel();
				textPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,0),
		  	    	        "查看店铺:"+shopName+"留言",TitledBorder.CENTER,TitledBorder.TOP));
			
				textPanel.add(new JScrollPane(msg));

				final JTextArea leaveMsg = new JTextArea(5,25);
				leaveMsg.setLineWrap(true);
				JPanel msgPanel = new JPanel();
				msgPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,0),
		  	    	        "请给店铺:"+shopName+"留言",TitledBorder.CENTER,TitledBorder.TOP));
			
				msgPanel.add(new JScrollPane(leaveMsg));
				
				JPanel buttonPanel=new JPanel();
				JButton b=new JButton("发送");
				b.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e)
					{
						String time = DateFormat.getDateTimeInstance(2,2).format(new java.util.Date()); 
						send.println("MSG");
						send.println(customer.getUserName()+"  at "+time+":\n"+leaveMsg.getText());
						send.println("OVER");
						jd.dispose();
					}
				});
 				buttonPanel.add(b);
				b=new JButton("取消");
				b.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e)
					{
						jd.dispose();
					}
				});
				buttonPanel.add(b);
				
				contentPane.add(textPanel,BorderLayout.NORTH);
				contentPane.add(msgPanel,BorderLayout.CENTER);
    			contentPane.add(buttonPanel,BorderLayout.SOUTH);
    			jd.setBounds(362,100,300,450);
    			jd.setVisible(true);
			}
		}


		public Shop(String shopName)
		{
			this.shopName = shopName;
			goodsInfo = new String[100];
			
			d = new JDialog(f,"Shop:"+shopName,true);
    	   	Container contentPane=d.getContentPane();
    	   	
    	   	try
			{
				out.println("CONNECT");
				out.println(shopName);
			
				IP = in.readLine();
			
				shopSocket = new Socket(IP, 8000);
	    	
	    		receive = 
	    		  new BufferedReader(
	    	   		new InputStreamReader(
	    	    	  shopSocket.getInputStream()));
     
	   		 	send = 
	   		 	  new PrintWriter(
	   		 	    new BufferedWriter(
   				      new OutputStreamWriter(
   				        shopSocket.getOutputStream())), true);
   			}catch(Exception ex){}
   			
   			System.out.println("connected to shop");

       	       	
    	   	/////////////////////////////用户功能相关/////////////////////////////
    	   	JPanel p1 = new JPanel();
    	   	p1.setLayout(new GridLayout(4,1));
    	   	p1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2),
	  	                "用户功能选项",TitledBorder.CENTER,TitledBorder.TOP));

		    JPanel buttonPanel1 = new JPanel();
		    JButton b = new JButton("     聊天    ");
	       	b.addActionListener(this);
	       	buttonPanel1.add(b);
	       	
	       	JPanel buttonPanel2 = new JPanel();
	       	b = new JButton("     留言    ");
	       	b.addActionListener(this);
	       	buttonPanel2.add(b);
       	
	       	JPanel buttonPanel3 = new JPanel();
	       	b = new JButton("查看商品");
	       	b.addActionListener(this);
	       	buttonPanel3.add(b);       
	       	
	       	JPanel buttonPanel4 = new JPanel();
	       	b = new JButton("购买商品");
	       	b.addActionListener(this);
	       	buttonPanel4.add(b);  	
       	
	       	p1.add(buttonPanel1);
	       	p1.add(buttonPanel2);
	       	p1.add(buttonPanel3);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -