谁能推荐一个微信点餐系统统?

百度知道 - 信息提示
知道宝贝找不到问题了&_&!!
该问题可能已经失效。
秒以后自动返回点餐系统_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
你可能喜欢Java小项目点餐系统(一)之客户端
这段时间在学校开了Java课程之后动手写了一个小项目――点餐系统,我会分四篇博客去记录整个项目。
一:客户端
二:服务端
三:数据库端
四:项目心得和移植到linux环境下遇到的问题
源代码已上传:http://download.csdn.net/detail/u38421
中包含客户端和服务端,文件没有包含,在看完这几篇博客之后,可以自己动手去添加一些数据编译整个工程。
客户端详解:
一.界面分析
1.初始界面
vcq9yrXP1tfu0KG7r7rNudix1Txicj4KPC9wPgo8cD6199PDuq/K/TtBV1RVdGlsaXRpZXMuc2V0V2luZG93T3BhcXVlKHRoaXMsIGZhbHNlKSDJ6NbDtLDM5c24w/c8L3A+CjxwPrS0vajSu7j2SkxhYmVsttTP86Os08PE48/r0qq1xLGzvrDNvMasyKXM7rPko6zIu7rzwPvTw2pmcmFtZbXEyP2y473hubmjrLDRSkxhYmVsttTP88ztvNO1vbfWs8m0sCYjMjY2ODQ7tcTX7rXXsuPX986xsbO+sM28xqyjrMi7uvOw0TwvcD4KPHA+xNrI3bSwJiMyNjY4NDvJ6NbDzqrNuMP3o6y8tL/JyrXP1snPzbzQp7n7o6zKsdbTysfTw1RpbWW1pbbAv6rKvNK7uPbP37PMu63Jz8iltcQ8L3A+CjxwPrSwzOWxs76wtPrC6zrV4sDv1rvKx73YyKG0+sLrt9bO9qOsvt/M5cq1z9ayzrz71LTC6zxwcmUgY2xhc3M9"brush:">
//获取屏幕大小
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
//设置窗体的位置和大小
setBounds((screenSize.width-640)/2,(screenSize.height-480)/2,640,480);
//不要标题栏的修饰
setUndecorated(true);
//设置窗体透明
AWTUtilities.setWindowOpaque(this, false);
background = init.backI// 背景图片
bgLabel = new JLabel(background);// 把背景图片显示在一个标签里面
// 把标签的大小位置设置为图片刚好填充整个面板
bgLabel.setBounds(0, 0, background.getIconWidth(),
background.getIconHeight());
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
JPanel imagePanel = (JPanel)this.getContentPane();
imagePanel.setOpaque(false);
// 内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(new FlowLayout());
getLayeredPane().setLayout(null);
// 把imagePanel.add(new JButton("测试按钮"));
//背景图片添加到分层窗格的最底层作为背景
getLayeredPane().add(bgLabel, new Integer(Integer.MIN_VALUE));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(background.getIconWidth(), background.getIconHeight());
setResizable(false);
最小化和关闭用按钮的话就去实现ActionListenr接口的actionPerformed函数
这里使用的是标签,要实现MouseListener接口的五个接口函数(有些用不到也要实现),代码如下
//添加监听
minButton.addMouseListener(this);
exitButton.addMouseListener(this);
//实现接口函数
public void mouseClicked(MouseEvent e)
if(e.getSource() == minButton)
setExtendedState(JFrame.ICONIFIED);
else if(e.getSource() == exitButton)
dispose();
public void mousePressed(MouseEvent e)
public void mouseReleased(MouseEvent e)
public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
定时器线程代码:
import java.awt.BasicS
import java.awt.C
import java.awt.G
import java.awt.Graphics2D;
import java.awt.event.ActionE
import java.awt.event.ActionL
import java.awt.geom.Line2D;
import java.util.D
import javax.swing.JL
import javax.swing.T
public class CreateClock extends JLabel implements ActionListener
double pointsx[]=new double[60];
double pointsy[]=new double[60];
double pointmx[]=new double[60];
double pointmy[]=new double[60];
double pointhx[]=new double[60];
double pointhy[]=new double[60];
public int second,hour,
public Line2D secondline,hourline,
public int a,b,c;
public CreateClock()
///初始化各个点的坐标
pointsx[0]=pointmx[0]=pointhx[0]=0;
pointsy[0]=-70;
pointmy[0]=-55;
pointhy[0]=-40;
double angle=6* Math.PI/180;
for(int i=0;i<59;i++)
pointsx[i+1]=pointsx[i]*Math.cos(angle)-pointsy[i]*Math.sin(angle);
pointsy[i+1]=pointsy[i]*Math.cos(angle)+pointsx[i]*Math.sin(angle);
pointmx[i+1]=pointmx[i]*Math.cos(angle)-pointmy[i]*Math.sin(angle);
pointmy[i+1]=pointmy[i]*Math.cos(angle)+pointmx[i]*Math.sin(angle);
pointhx[i+1]=pointhx[i]*Math.cos(angle)-pointhy[i]*Math.sin(angle);
pointhy[i+1]=pointhy[i]*Math.cos(angle)+pointhx[i]*Math.sin(angle);
for(int i=0;i<60;i++)
pointsx[i]=pointsx[i]+80;
pointsy[i]=pointsy[i]+100;
pointmx[i]=pointmx[i]+80;
pointmy[i]=pointmy[i]+100;
pointhx[i]=pointhx[i]+80;
pointhy[i]=pointhy[i]+100;
/////初始化各条线
secondline=new Line2D.Double(0,0,0,0);
minuteline=new Line2D.Double(0,0,0,0);
hourline=new Line2D.Double(0,0,0,0);
////////////////////////////////
//////设置定时器
timer=new Timer(1000,this);
timer.start();
public void paint(Graphics g)
for(int i=0;i<60;i++)
int m=(int)pointsx[i];
int n=(int)pointsy[i];
if(i%5==0)
g.setColor(Color.blue);
g.fillOval(m-4, n-4, 8, 8);
g.setColor(Color.green);
g.fillOval(m-2,n-2,4,4);
g.fillOval(75,95,10,10);
Graphics2D grap=(Graphics2D)g;
BasicStroke bb=new BasicStroke(2f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
grap.setStroke(bb);
grap.setColor(Color.green);
grap.draw(secondline);
BasicStroke bs=new BasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
grap.setStroke(bs);
grap.setColor(Color.BLUE);
grap.draw(minuteline);
BasicStroke bss=new BasicStroke(6f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
grap.setStroke(bss);
grap.setColor(Color.YELLOW);
grap.draw(hourline);
public void actionPerformed(ActionEvent arg0)
// TODO Auto-generated method stub
if(arg0.getSource()==timer)
date=new Date();
String str=date.toString();
second=Integer.parseInt(str.substring(17,19));
minute=Integer.parseInt(str.substring(14,16));
hour=Integer.parseInt(str.substring(11,13));
int h=hour%12;
c=h*5+minute/12;
secondline.setLine(80,100,pointsx[a],pointsy[a]);
minuteline.setLine(80,100,pointmx[b],pointmy[b]);
hourline.setLine(80,100,pointhx[c],pointhy[c]);
repaint();
2.主界面分析
这里在进入主界面的时候会进行登陆,服务端根据登陆的账号判断你是普通学生还是商家,在登陆后会根据返回信息确定进入哪个身份的界面
,这里只是简单介绍一下学生界面。
主界面使用一个JPanel对象mainPanel,对此mainPanel使用盒式布局,然后每一个功能区继承重写一个JPanel,添加到mainPanel,
当鼠标点击功能标签时,在监听标签的接口函数中调用card.show()函数进行JPanel的切换。
这里还对每个功能标签准备了两张图片,在点击相应的标签时,改变其背景图片与其他三张不一样就可以实现图上的效果。
监听函数中相应的代码如下://添加监听
每日推荐.addMouseListener(this);
店铺一览.addMouseListener(this);
我的菜单.addMouseListener(this);
吐槽专区.addMouseListener(this);
public void mouseClicked(MouseEvent e)
if(e.getSource() == 每日推荐)
//改变标签的图片
每日推荐.setIcon(init.suggestImage_enter);
店铺一览.setIcon(init.shopImage);
我的菜单.setIcon(init.myOrderImage);
吐槽专区.setIcon(init.opinionImage);
//切换面板
card.show(mainPanel,"suggest");
else if (e.getSource() == 店铺一览)
每日推荐.setIcon(init.suggestImage);
店铺一览.setIcon(init.shopImage_enter);
我的菜单.setIcon(init.myOrderImage);
吐槽专区.setIcon(init.opinionImage);
card.show(mainPanel,"shop");
else if(e.getSource() == 我的菜单)
每日推荐.setIcon(init.suggestImage);
店铺一览.setIcon(init.shopImage);
我的菜单.setIcon(init.myOrderImage_enter);
吐槽专区.setIcon(init.opinionImage);
myOrderPanel.update();
card.show(mainPanel,"myOrder");
else if(e.getSource() == 吐槽专区)
每日推荐.setIcon(init.suggestImage);
店铺一览.setIcon(init.shopImage);
我的菜单.setIcon(init.myOrderImage);
吐槽专区.setIcon(init.opinionImage_enter);
JOptionPane.showMessageDialog(mainWindow.getContentPane(),
"时间紧迫,此功能尚未开通,敬请期待!!", "信息", RMATION_MESSAGE);
public void mousePressed(MouseEvent e)
public void mouseReleased(MouseEvent e)
public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
二.Socket连接服务端
在登陆界面要求用户输入账号,密码,ip地址和端口号,客户端城尝试与服务端建立连接,验证用户并返回用户信息,
根据返回信息判断进入哪一个界面
String ip = loginPanel.ipTextField.getText(),
account = loginPanel.accountTextField.getText(),
passwd = new String(loginPanel.passwdTextField.getPassword());
port = Integer.parseInt(loginPanel.portTextField.getText());
if(clientSocket.isConnected())
InetAddress address = InetAddress.getByName(ip);
InetSocketAddress socketAddress = new InetSocketAddress(address,port);
clientSocket.connect(socketAddress);
catch (IOException e1)
JOptionPane.showMessageDialog(getContentPane(),
"网络连接异常", "系统信息", JOptionPane.ERROR_MESSAGE);
in = new DataInputStream(clientSocket.getInputStream());
out = new DataOutputStream(clientSocket.getOutputStream());
out.writeUTF("LOGIN");
out.writeUTF(account);
out.writeUTF(passwd);
String reply = in.readUTF();
if(reply.equals("student"))
studentPanel = new StudentPanel(init,in,out,this);
mainPanel.add("student",studentPanel);
card.show(mainPanel,"student");
else if(reply.equals("seller"))
sellerPanel = new SellerPanel(init,in,out);
mainPanel.add("seller",sellerPanel);
card.show(mainPanel,"seller");
else if(reply.equals("defeat"))
JOptionPane.showMessageDialog(getContentPane(),
"用户名或密码输入错误", "系统信息", JOptionPane.ERROR_MESSAGE);
catch (IOException e1)
三.功能分析
功能简介:
该点餐系统在用户(学生)登陆后,会从服务器端获取当天的推荐菜单信息,店铺信息和店铺商品信息。用户可以从推荐界面和店铺里进行点餐,并在我的菜单里修改菜单,提交订单和付款。点餐系统在商家登陆后可以管理自己店铺的菜单,获取学生的订单并对订单进行处理,然后反馈信息给服务端,所有与数据库进行的信息交互都在服务端完成,功能比较简单。
1.推荐菜单
先从服务器端获取信息,然后显示用JTabel来显示,并在JTabel中添加JCheckBox来直接通过对JCheckBox的操作来选中和取消相应的菜单项。
代码:SuggetPanel.java
import init.I
import java.awt.D
import java.awt.event.ActionE
import java.awt.event.ActionL
import java.io.DataInputS
import java.io.DataOutputS
import java.io.IOE
import java.util.LinkedL
import javax.swing.DefaultCellE
import javax.swing.JB
import javax.swing.JCheckB
import javax.swing.JL
import javax.swing.JP
import javax.swing.JScrollP
import javax.swing.JT
import javax.swing.table.DefaultTableCellR
import javax.swing.table.TableC
import mytool.F
import mytool.SuggestTabelM
import mytool.SuggestTableCellR
public class SuggestPanel extends JPanel implements ActionListener{
DataInputStream in =;
DataOutputStream out =
public int food_
public LinkedList
public LinkedList
final String[] headers = {"编号","菜名","店铺","类别","价格/元","推荐度",""};
Object[][] cellData =
SuggestTabelM
JScrollPane jscrollP
private TableColumn column =
private JButton enterB
public SuggestPanel(Init init,DataInputStream in,DataOutputStream out)
selectfood = new LinkedList();
model = new SuggestTabelModel(cellData,headers);
new JTable(model);
jscrollPane = new JScrollPane(table);
jscrollPane.setPreferredSize(new Dimension(340, 270));
enterButton = new JButton("加入菜单");
enterButton.setPreferredSize(new Dimension(340,30));
add(jscrollPane);
add(enterButton);
enterButton.addActionListener(this);
//居中显示
DefaultTableCellRenderer r=new DefaultTableCellRenderer();
r.setHorizontalAlignment(JLabel.CENTER);
table.setDefaultRenderer(Object.class,r);
column = table.getColumnModel().getColumn(0);
column.setPreferredWidth(120);
column =table.getColumnModel().getColumn(1);
column.setPreferredWidth(140);
column =table.getColumnModel().getColumn(2);
column.setPreferredWidth(170);
column =table.getColumnModel().getColumn(6);
column.setPreferredWidth(30);
model.setRowCount(0);
food_num = in.readInt();
System.out.println(food_num);
food = new LinkedList();
for(i=0;i<food_i++)
Food tempfood=new Food();
tempfood.num = in.readInt();
tempfood.name = in.readUTF();
tempfood.shop = in.readUTF();
tempfood.type = in.readUTF();
tempfood.price = in.readFloat();
tempfood.satisfication = in.readUTF();
food.add(tempfood);
catch(IOException e)
for(i=0;i<food.size();i++)
model.addRow(new Object[]{food.get(i).num,food.get(i).name,food.get(i).shop,food.get(i).type
,food.get(i).price,food.get(i).satisfication,new Boolean(false)});
table.getColumnModel().getColumn(6).setCellEditor
(new DefaultCellEditor(new JCheckBox()));
table.getColumnModel().getColumn(6).setCellRenderer
(new SuggestTableCellRenderer());
table.invalidate();
public void actionPerformed(ActionEvent e)
if(e.getSource() == enterButton)
for(int i=0;i<food_i++)
if(Boolean.parseBoolean(table.getValueAt(i, 6).toString()) == true)
System.out.println(table.getValueAt(i,1).toString());
selectfood.add(food.get(i));
table.setValueAt(false, i, 6);
2.店家预览
系统把从服务端获取的店铺信息已JTable的形式显示出来,用户可以在对应店铺的选中条上双击进入店铺
代码:ShopPanel.java
import java.awt.CardL
import java.awt.D
import java.awt.event.MouseA
import java.awt.event.MouseE
import java.io.IOE
import java.util.LinkedL
import javax.swing.JL
import javax.swing.JP
import javax.swing.JScrollP
import javax.swing.JT
import javax.swing.table.DefaultTableCellR
import javax.swing.table.TableC
import mytool.F
import mytool.S
import mytool.SuggestTabelM
public class ShopPanel extends JPanel{
LinkedList
public LinkedList orderF
public LinkedList shop1;
public LinkedList shop2;
public LinkedList shop3;
int shop_num,shop1_num,shop2_num,shop3_
SuggestTabelM
JScrollPane jscrollP
final String[] headers = {"序号","编号","店铺名"};
Object[][] cellData =
private TableColumn column =
public ShopPanel(StudentPanel studentPanel)
shop = new LinkedList();
orderFood = new LinkedList();
shop1 = new LinkedList();
shop2 = new LinkedList();
shop3 = new LinkedList();
model = new SuggestTabelModel(cellData,headers);
new JTable(model);
jscrollPane = new JScrollPane(table);
jscrollPane.setPreferredSize(new Dimension(340, 310));
add(jscrollPane);
//居中显示
DefaultTableCellRenderer r=new DefaultTableCellRenderer();
r.setHorizontalAlignment(JLabel.CENTER);
table.setDefaultRenderer(Object.class,r);
column = table.getColumnModel().getColumn(0);
column.setPreferredWidth(120);
column =table.getColumnModel().getColumn(1);
column.setPreferredWidth(140);
column =table.getColumnModel().getColumn(2);
column.setPreferredWidth(170);
column =table.getColumnModel().getColumn(6);
column.setPreferredWidth(30);
shop_num = studentPanel.in.readInt();
System.out.println(shop_num);
for(int i=0;i<shop_i++)
Shop tempshop=new Shop();
tempshop.num = studentPanel.in.readInt();
tempshop.name = studentPanel.in.readUTF();
shop.add(tempshop);
shop1_num = studentPanel.in.readInt();
for(int i=0;i<shop1_i++)
Food tempfood=new Food();
tempfood.num = studentPanel.in.readInt();
tempfood.name = studentPanel.in.readUTF();
tempfood.shop = "龙鑫赣味小炒";
tempfood.type = studentPanel.in.readUTF();
tempfood.price = studentPanel.in.readFloat();
shop1.add(tempfood);
shop2_num = studentPanel.in.readInt();
for(int i=0;i<shop2_i++)
Food tempfood=new Food();
tempfood.num = studentPanel.in.readInt();
tempfood.name = studentPanel.in.readUTF();
tempfood.shop = "牛肉面馆";
tempfood.type = studentPanel.in.readUTF();
tempfood.price = studentPanel.in.readFloat();
shop2.add(tempfood);
shop3_num = studentPanel.in.readInt();
for(int i=0;i<shop3_i++)
Food tempfood=new Food();
tempfood.num = studentPanel.in.readInt();
tempfood.name = studentPanel.in.readUTF();
tempfood.shop = "dashitou";
tempfood.type = studentPanel.in.readUTF();
tempfood.price = studentPanel.in.readFloat();
shop3.add(tempfood);
catch(IOException e)
model.setRowCount(0);
for(int i=0;i<shop.size();i++)
model.addRow(new Object[]{i+1,shop.get(i).num,shop.get(i).name});
table.addMouseListener(studentPanel);
new MouseAdapter()
public void mouseClicked(MouseEvent e)
if(e.getClickCount() == 2)
int row =((JTable)e.getSource()).rowAtPoint(e.getPoint()); //获得行位置
col=((JTable)e.getSource()).columnAtPoint(e.getPoint()); //获得列位置
System.out.println("行号:"+row+"列号:"+col+"数据:");
if(row == 0)
shopFoodPanel.updatePanel(1);
studentPanel.card.show(studentPanel, "foodPanel");
else if(row == 1)
else if(row == 2)
table.invalidate();
public ShopPanel()
3.我的菜单
在用户选择了菜单后系统会添加到我的菜单里,用户可以在该功能界面进行预览和修改菜单,确认后可以提交并进入付款界面
对应的类为MyOrderPanel.java和PayPanel.java,代码在源码中查看,不再贴出来。
4.吐槽专区
该功能尚未实现,打算用UDP来传输信息,由于时间问题,以后再说吧。如果大家有好的方法,可以在底下回复我。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。
按住视频可进行拖动
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
收藏成功,可进入查看所有收藏列表
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看:
高端的未来点餐系统
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/164eL4
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/164eL4
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
爸爸去哪儿2游戏 立即参与
高端的未来点餐系统
播放量数据:
你可能还想订阅他们:
&正在加载...
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"&
&a href="javascript:void(0);"&
&span>{{start}}-{{end}}&/span&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"&
&a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《》剧集:
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入300字
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制}

我要回帖

更多关于 点餐系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信