不知道有多少人有我这样的烦恼,中午点外卖不知道吃什么,为了这个问题要死好多个脑细胞,其实哪种都不好吃,考虑来考虑去根本没有什么作用,所以我就写了个小程序,抽到什么吃什么~~~
做起来也是so easy啊,实现的功能点嘛就几个,
1.手动添加餐厅;
2.餐厅列表保存在本地文件里,顺手判个重;
3.然后就是随机算法抽一个啦!
这里为了简便,并没有连接数据库,就直接放在了一个本地文本文件里,省去了很多麻烦。
接下来就粗暴的晒代码啦啦啦!!!

package com.yolanda.fun.swing;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;import com.yolanda.fun.event.EnterRestaurant;public class EnterMenuFrame extends JFrame {private JPanel jPanel1;private JScrollPane jPanel2;private JButton jbAdd, jbChoose; // 添加按钮private JTextField jtNameField; // 餐厅名字private JLabel jLabel1,jLabel2; // 标签private static JTextArea jTextArea;// 已有餐馆列表public EnterMenuFrame() {init();}public void init() {jPanel1 = new JPanel();jtNameField = new JTextField();jLabel1 = new JLabel("餐厅名");jLabel2 = new JLabel("已有餐厅");jbAdd = new JButton("添加");jbChoose = new JButton("抽取");jbAdd.setPreferredSize(new Dimension(60, 30));jbChoose.setPreferredSize(new Dimension(60, 30));jtNameField.setPreferredSize(new Dimension(150, 30));// 设置布局,这个要放在前面,放在后面有面板显示不出this.setLayout(new BorderLayout());// 将元素加入到面板中jPanel1.add(jLabel1);jPanel1.add(jtNameField);jPanel1.add(jbAdd);jPanel1.add(jbChoose);jPanel1.setSize(600,200);jTextArea = new JTextArea();jPanel2 = new JScrollPane(jTextArea);jPanel2.setBackground(Color.LIGHT_GRAY);jPanel2.setBounds(41, 34, 313, 194);jPanel2.setBorder(BorderFactory.createTitledBorder("餐厅列表"));jPanel2.setSize(300, 100);// 不加这一句话,就无法显示带有按钮什么的面板this.add(jPanel1, BorderLayout.NORTH);this.add(jPanel2, BorderLayout.CENTER);// 设置显示框大小,不写的话很搞笑this.setSize(600, 400);// 要显示出框体必须写出这一行this.setVisible(true);jbAdd.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {EnterRestaurant er = new EnterRestaurant();String warnStr = er.enterRestToTxt(jtNameField);JOptionPane.showMessageDialog(null, warnStr);// 清空一下列表jTextArea.setText("");er.readFile(jTextArea);}});jbChoose.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String listStr = jTextArea.getText();List<String> listRestaurant = new ArrayList<String>();if (null != listStr && "" != listStr){String[] listArray = listStr.split("\n");for (String str : listArray) {listRestaurant.add(str);}Random random = new Random();int length = listRestaurant.size();int num = random.nextInt(length);System.out.println(num);String choice = listRestaurant.get(num);JOptionPane.showMessageDialog(null, "您的选择是:" + choice);System.out.println(choice);}}});}public static void main(String[] args) {new EnterMenuFrame();EnterRestaurant er = new EnterRestaurant();er.readFile(jTextArea);}}

以上就是界面的代码了,就用了几个简单的元素,布局也是很简单呐~~~

package com.yolanda.fun.event;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;import javax.swing.JTextArea;
import javax.swing.JTextField;public class EnterRestaurant {private JTextField jtNameField;private JTextArea jTextArea;public EnterRestaurant() {}public EnterRestaurant(JTextField jtNameField) {this.jtNameField = jtNameField;}/*** 将文本框里的餐厅名加入到固定目录的文本文件中* @param jtNameField*/public String enterRestToTxt(JTextField jtNameField) {// 固定目录位置,查找当前目录,在父级下创建该文本File fileCurrent = new File(System.getProperty("user.dir"));String path = fileCurrent.getParent()+"\\restaurant.txt";
//      System.out.println(path);File file = new File(path);createFile(file);String resName = jtNameField.getText();boolean isExist = false;try {// 获取文件路径BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));String readLine = null;while ((readLine = br.readLine()) != null) {String[] str = readLine.split(";");for (String s : str) {if (resName.equalsIgnoreCase(s)) {isExist = true;}   }}br.close();if (isExist) {return "该餐厅名已经存在于列表!";} else {/***  这里有个了不得的事情啊!如果写成FileOutputStream os = new FileOutputStream(file);这样不加true的话*  只能存当前的值,但是加了以后,就可以在后面加了啊,好神奇啊*/FileOutputStream os = new FileOutputStream(file,true);os.write((jtNameField.getText()+";").getBytes());os.flush();os.close();return "添加成功!";}} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return "";}public void readFile(JTextArea jTextArea) {// 获取文件路径File fileCurrent = new File(System.getProperty("user.dir"));String path = fileCurrent.getParent()+"\\restaurant.txt";try {BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));String readLine = null;while ((readLine = br.readLine()) != null) {String[] str = readLine.split(";");for (String s : str) {jTextArea.append(s + "\n");             }}br.close();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 判断文件是否存在,不存在就创建一个* @param fileName*/public static File createFile(File fileName) {try {if (!fileName.exists()) {fileName.createNewFile();}} catch (IOException e) {e.printStackTrace();}return fileName;}public static void main(String[] args) {//enterRestToTxt();}}

这个就是工具类的代码啦,主要就是把手动输入的餐厅名字添加到本地的文本文件里保存一下,用到的就是流的输入跟输出啦,然后就是随机函数抽个数字出来再从列表里取就好啦。这里为了程序的独立,获取了当前工程的固定目录,将文本文件放在这个固定目录下,省得目录乱七八糟找不到,我也是个细心的人呢!

那么效果就是酱紫啦!
登录界面:

添加成功了:

重复添加:

抽取:

是的,这个界面确实朴实无华了一些,但是功能实现了就好了嘛~~~

其实还可以做很多附加的功能的,可以给每个餐厅加个权重再随机抽的,还可以把饿了么、美团什么的餐厅数据扒下来再抽的,但是,因为各种原因,其实主要就是因为懒,我暂时不做了,有兴趣的童鞋可以继续扩展呐~~~

随机抽取外卖餐厅小程序(附简单页面)相关推荐

  1. 手把手教你搭建美团饿了么电影票外卖cps小程序 附源码

    手把手教你搭建美团饿了么电影票外卖cps小程序 附源码 外卖红包项目的优势 1.刚需:吃饭是每日刚需,尤其是城市白领,上班族,宅男宅女,等群体点外卖的需求,需求更是高频率(每天). 2.门槛低:平台门 ...

  2. 微信小程序的简单页面设计(不涉及后端)

    大一萌新在朋友推荐下尝试写博客记录下自己的学习经历 因为参加了学校的比赛的原因,需要自学一下微信小程序的制作. 目前只学习了简单的页面设计,本次做个小结 首先 简单学习了墨刀的使用 通过B站的视频学习 ...

  3. 微信小程序入门-简单页面编写

    前言 今天微信小程序正式上线,抱着学习新技术的心态开始第一次接触微信小程序,无论外面怎么吹微信小程序怎么干掉大量的原生的app,作为一个新的事物,存在就必定有其存在的价值,作为一个学习者要保持一个正确 ...

  4. SSM+高校食堂外卖服务小程序 毕业设计-附源码200910

    Springboot基于微信小程序的高校食堂外卖服务 摘要 随着生活质量的日益改善以及生活节奏的日益加快,人们对餐饮需求的质量以及速度也随之发生着变化.为了满足社会需求,餐饮的高质量和快节奏也渐渐使电 ...

  5. 【微信小程序系列】微信小程序超简单教程,基本语法,获取用户基本数据信息,实现对云数据库的增删改查及小程序外部api的引用示例(附源码)

    [微信小程序系列]微信小程序超简单教程 小程序项目结构 静态页面的构成 HTML:结构 css:样式 js:行为 小程序 页面全部存放在pages, 而且pages目录只能存放页面 页面包括4个文件, ...

  6. 给大家分享一款由Java+MYSQL搭建的外卖跑腿小程序源码

    该源码是由Java搭建的,搭建比较方便 项目介绍: 夜市外卖: 商家可入驻开店铺发布商品 用户下单购买商品,平台发布订单, 骑手在app端接单,进行配送 跑腿: 用户下单指定事件,骑手可进行接单,赚取 ...

  7. 外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接

    外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接 上次利用闲暇时间弄了个外卖CPS小程序,并把代码开源出来,还是有挺多小伙伴来领取源码的.不仅有同行的人,还有跨行的人,也摸索着搞出来小程序推一 ...

  8. 美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码

    美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码 外卖CPS小程序源码分享 饿了么.美团优惠开发(外卖cps,三级裂变源码) 源码或搭建 http://y.mybei.cn/ 截图 功能 ...

  9. 餐饮外卖平台小程序源码_餐饮连锁店,加盟,入住

    Fan996外卖平台系统可以用于搭建外卖平台系统,餐饮连锁店,加盟,入住,等形式的餐饮平台,类似 简单版的 饿了么.美团,让商户能低成本的搭建自有的线上平台. Fan996外卖平台系统分为3个端: 服 ...

  10. 餐饮外卖平台小程序源码,附带详细教程

    餐饮外卖平台小程序V正式版,打造自己的美团/饿了么?平台.店铺在后台扣除自定义设置,资金统一进入平台账户,然后平台赚钱给商家店铺. 客户端小程序 客户端:自助点餐可以随时获取商家的商品动态,订单信息一 ...

最新文章

  1. ubuntu系统声音_今日热闻 | 小米11有望首发骁龙875、折叠iPhone测试、新规禁止网购忽悠打折、印度真米粉、M1 Mac运行Ubuntu...
  2. 动态更新ViewPager?
  3. 良心发现?百度网盘不用开会员,下载速度也能达到7M/S了
  4. ls -Slh du -h
  5. ASP.NET Core——身份验证UI安装
  6. 机器学习之工程师入门路线
  7. C语言工程实践--物业费管理系统
  8. NB-IOT平台之电信平台FOTA 升级记录
  9. php对接亿乐社区,亿乐社区对接教程
  10. Studio3T连接远程服务器上的mongo数据库
  11. 数据备份与数据容灾全解析
  12. C++中mian中的参数
  13. SDL 加载显示JPEG图片
  14. android修改自动背光,自动背光算法-Android 8.1
  15. sqlserver获取周数
  16. 吴恩达机器学习(十二)—— 机器学习系统的设计
  17. 仿淘宝的详情页图片切换
  18. 引流复盘:从知乎引流20万粉,我只用了1个月
  19. webpack css loader
  20. 如何将前端代码写的优雅?

热门文章

  1. oracle 行转列参考
  2. 以感恩为主题的演讲稿
  3. 洲际酒店集团在全球范围内启动“明日方州”计划
  4. Flutter悬浮UI的设计Overlay组件
  5. 性能测试-基础web
  6. 宽以光电厚以激光 组合式测宽测厚仪 性价比更高
  7. 万网服务器虚拟机php.ini设置
  8. Unity 热更新技术 |(五)Lua与Unity_C# 交互总结
  9. python的第二次作业
  10. 全球首部开源汽车Tabby:像宜家一样DIY汽车