Java & Mysql 餐饮管理系统 过程心得记录
------------------------------------------Have a Good Day~----------------------------------
准备国赛和ACM省赛
随缘更新
本次的主要目的想用JAVA写一个类似于饭店自动点餐的程序,分为三个主要用户:客人,员工,经理
同时利用MySQL对餐厅的营业额,食材剩余量,员工开销进行实时维护
饼越画越大,感觉再补充点东西当毕业设计也可以= =
2019.3.25
第一天代码已全部重写
主窗口布局改为NULL布局
主要窗口转换思想保留
Customer窗口全部重写
窗口的初步搭建
涉及:
JFrame 窗口
JPanel 面板组件 (暂时不知道具体咋实现的 日后搞懂再补充)
不同窗口的转换 (暂时不知道咋关 这就很尴尬)
JFrame 窗口搭建
Toolkit kit=Toolkit.getDefaultToolkit();
//获取当前屏幕的大小
Dimension screenSize=kit.getScreenSize();
int screenHight=screenSize.height;
int screenWight=screenSize.width;
//窗口大小
setSize(screenWight/2,screenHight/2);
setLocationByPlatform(true);
//窗口位置
setLocation(550,150);
icon 小图标的获取
//获取图标
Image img=new ImageIcon("F:\\Java_program\\Catering_management_system\\src\\catering_Management\\bin\\icon.png").getImage();
setIconImage(img);
background 背景设置
//背景图片设置
public void paint(Graphics g)
{
File file = new File("F:\\Java_program\\Catering_management_system\\src\\catering_Management\\bin\\background.png"); //异常处理~
try
{
BufferedImage image=ImageIO.read(file);
g.drawImage(image,0,0,null);
}
catch(Exception e)
{
e.printStackTrace();
} }
然后是最主要的
窗口转换
//顾客按键 进入顾客界面
JButton customerButton= new JButton("Customer"); //等一手 lambda语句简化~~~~
customerButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//创建一个顾客窗口
Customer customerWindow = new Customer();
customerWindow.setTitle("Welcome~");
customerWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
customerWindow.setVisible(true); //当前窗口关闭 } }
);
我觉得可以lambda简化~~~
我觉得是这么实现的:
首先 JButton 一个按键
然后对这个按键有一个 ActionListener 事件响应
对应的事件为创建一个 Customer 对象
Customer实际上也继承了 JFrame 也是一个窗口类
然后创建Customer对象就等于创建了一个新的窗口
再将当前窗口关闭即可~
今天全部代码
今天的训练赛没打..........
博弈论我是真的不会啊T T
2019.3.26
lambda语句实现
窗口关闭实现
重写了Customer类 T T
3.27对Customer类再次重写
我求求你别再出BUG了
T T
lambda 语句实现:
customerButton.addActionListener(e->
{ //创建一个顾客窗口
Customer customerWindow = new Customer();
customerWindow.setTitle("Welcome~");
customerWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
customerWindow.setVisible(true); //当前窗口关闭
closeThis(); });
具体lamda 语句以后补充
现在只知道当一个类只有一种方法需要实现时,不需要新建对象,直接lamda实现就好
然后窗口关闭:
/*
* 窗口关闭 调用父类方法写在本身的方法中直接调用
* 在点击Button 触发的 ActionListener 中 创建的是其他类
* 无法直接调用JFrame 中关闭窗口的方法
*/
public void closeThis()
{
super.dispose();
}
定义这个函数的原因是
在CustomerButton 中继承的是ActionListener 无法调用dispose方法
只能新建一种方法实现父类的 dispose
然后在
CustomerButton.addActionListener中直接调用这个方法
因为是在一个类中
所以语法是合法的
重头戏:
别看了 GG了
Customer 类 3.27 已重写
原因请看 3.27
废了我一下午+一晚上重写Customer 类:
原因是当你重载JFrame的paint方法时
你在添加组件是会出现背景加载失败的情况
这样有一个问题
就是必须创建一个ImagePanel对象
也可能是我忘了JAVA的一些特性
我总感觉不用创建对象也可以
以后补充
这样我在选择窗口使用的null布局就不能使用了
2019.3.27
主要问题
重写了Customer类
实现了文本框的显示
重写Customer:
在实现文本框透明化后
所有的文字会被背景遮挡
解决方案 ImagePanel类不再继承Panle 类
改为继承JPanle类
然后重载 JPanle类中的PaintComponent方法
实现对组件背景的绘制
2.26提到的 为什么new ImagePanel 并且重载 PaintComponent
是因为我们要在内容窗格上进行各种组件的添加
而new ImagePanel等于创建了一个和JFrame窗口等大的内容窗格并对JFame窗口覆盖
所以要对JPanle 中的PaintComponent方法重载 来获取内容窗格的背景
2019.4.1
简化了Customer的代码
添加了选择框和提示文本
近期准备国赛和省赛
精力不够
随缘更新吧
2019.4.26更新
最近遇到的问题汇总一下
JAVA&Mysql连接问题
//URL指向要访问的数据库名
url="jdbc:mysql://localhost:3306/cateringsystem?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
URL要这么写,涉及到很多修正问题啥的
咱也不懂,咱也不敢问
//数据库连接参数
Connection con;
String driver;
String url;
String user;
String password;
//创建statement对象,执行SQL语句
Statement satement,addsatement;
//创建PreparedStatement对象,执行插入语句
PreparedStatement prsq; //要执行的SQL语句
String dql,dml;
//ResultSet类,用来存放获取的结果集
ResultSet rs;
用到的基本参数
还有一个问题
rs= satement.executeQuery(dql);
一个statement 对象可以对应多个resultset对象
不过对其中一个resultset进行操作的时候 其他的都是关闭的
也就是不能同时对同一个statement的resultset对象操作
我的解决办法是创捷多个statement对象
稳得一匹~
然后就是一个类创建队对象数组的时候
比如这样
private JLabel[] line = new JLabel[20];
好像是只声明了空间
如果操作的话会出现
空指针异常
Exception in thread "AWT-EventQueue-0"
所以还要
line[index] = new JLabel();
大体的主框架已经差不多了
感觉5.1左右差不多能肝出来
美化啥的咱也不敢想
-----------------------------未完待续-----------------------------------------------
Java & Mysql 餐饮管理系统 过程心得记录的更多相关文章
- Java+Mysql+学生管理系统
最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具 ...
- 使用雅虎YUI Compressor压缩JS过程心得记录
对待发布的项目进行测试时,发现js下载量比较大,从jquery的min版想到了压缩项目中的js文件.很简单的google之(在此,强调一下google的重要性),搜到一个叫做YUI Compresso ...
- 毕业设计java实验室预约管理系统SSH机房预约系统javaweb机房实验室排课系统mysql机房管理系统 实验室管理系统 课程设计 代码讲解 调试运行
毕业设计java实验室预约管理系统SSH机房预约系统javaweb机房实验室排课系统mysql机房管理系统 实验室管理系统 课程设计 代码讲解 调试运行 注意:该项目只展示部分功能,如需了解,评论区咨 ...
- Mysql 8 使用过程中的命令记录
Mysql 8 使用过程中的命令记录 注: 当前 MySQL 数据库的版本 8.0.27 修改密码 1. 使用其他用户修改root 密码 ALTER USER 'root'@'localhost' I ...
- Java Web项目搭建过程记录(struts2)
开发工具:eclipse 搭建环境:jdk1.7 tomcat 8.0 基础的java开发环境搭建过程不再赘述,下面从打开eclipse 之后的操作开始 第一步: 创建项目,File -> ...
- step by step 之餐饮管理系统二
昨天写了餐饮管理系统的相关需求,得到了园友的一些好的建议,感到很高兴,确实写的也不全面,现在补充一下需要的业务,这次主要做的主要是前台收银系统,所以业务主要集中在前台点菜收银这块,而后面数据管理这块则 ...
- JAVA / MySql 编程——第二章 初始MySQL
1. MySQL: ● MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL最流行的关系型数据库管理系统, ...
- Windows使用MySQL数据库管理系统中文乱码问题
声明:本文关于MySQL中文乱码问题的解决方案均基于Windows 10操作系统,如果是Linux系统会有较多不适用之处,请谨慎参考. 一.MySQL中文乱码情况 1. sqlDevelper远程登陆 ...
- Java学习的一般过程
伴随着科学技术的不断发展,世界开始走向信息化.网络化.大数据化.自然而然,计算机专业变得十分热门.尽管如此,计算机专业人才对社会来说仍然是供不应求,当然,这里指的是高层次技术人才.因此,对于我们这些占 ...
随机推荐
- vtk画折线,并且禁止鼠标交互
VTK画图,禁止鼠标拖动时滚动图形,鼠标滚轮滚动时放大/缩小图形的方法. renderLine.InteractiveOff(); 下面是VTK画折线的代码 // Create five points ...
- ubuntu下自动获取ip设置
vi /etc/network/interfaces文件为如下内容 wq保存 重启网卡:sudo /etc/init.d/networking restart
- 利用nginx做反向代理解决前端跨域问题
最近朋友再群里提了一个问题,他们公司给他提供了一个获取数据的接口,在浏览器访问这个接口能获取到json数据,但是放在项目里使用ajax就产生了跨域问题,一般这个需要提供接口的后台方面需要做跨域处理,但 ...
- 从内存上看python的对象
python中有一个说法:一切皆是对象,怎么理解这句话呢?我们可以通过查看数字,字符串在内存中的表示形式来对这句话有个更深的认识. 那么,怎么查看对象在内存中是什么样的呢?可以先参考一些这篇文章:ht ...
- Botanical Dimensions:借助第九代智能英特尔® 酷睿™ 处理器实现独特沉浸式体验
本文介绍位于洛杉矶的互动体验设计工作室 Master of Shapes (MOS) 打造 Botanical Dimensions 时所做出的技术努力.在这种互动式多世界体验中,参与者将穿越丛林,寻 ...
- OpenStack组件——Horizon Web界面管理服务
1.horizon 介绍 理解 horizon Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 , ...
- 学习前端D1
第一次写博客,有些小激动,以前写学习的记录都是在有道云笔记上写的,在博客园上更多的是膜拜大佬.偷师学艺.前段时间,我和朋友闲聊时,知道用博客每天写知识会提高学习的热情,这感情好呀,于是乎,今天,我依旧 ...
- 8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
版本不兼容的问题,低版本的gulp只能在低版本的node上执行. 修改一下node-modules/require-dir/index.js的97行代码即可,如下:
- Java 虚拟机的运行模式
这几天在读周志明老师的<深入理解JVM虚拟机> 讲到了 java的运行模式, 有mixed 模式 interpret模式还有compile模式.效果如下面所示 java -version ...
- 走环概率问题(至今有点迷)--牛客第二场( Eddy Walker)
思路: 概率结论题,好像属于线性递推,现在也不太懂(lll¬ω¬) #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include < ...