技术标签: 面试 java 阿里巴巴 maven mysql 数据库 学习路线
此项目包括四个类
- StartMySql → 用于启动登录界面
- Login → 登录进入操作界面
- MySQLGUI → 图形用户界面
- OperationMySql → 对数据库数据的操作功能实现
mysql 中 Table 的设计
涉及三个表
数据库名 StudentInfo 表名分别为 grade、course、summary
grade
ID
Name
Chinese
Math
English
course
ID
Name
Course
Credit
summary
Course
Average
实现概貌:
直接上代码啦
启动单独成类
// StartMySql.java
package StudentInfo;
public class StartMySql {
// 启动登录界面
public static void main(String[] args) {
new Login();
}
}
这是一个登录界面的小框框
// Login.java
package StudentInfo;
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Login implements ActionListener {
// 定义主窗口
private final JFrame jf;
// 定义输入用户名和密码的标签提示
private final JLabel InputUserName;
private final JLabel InputPassWord;
// 定义输入用户名文本框
private final JTextField UserName;
// 定义输入密码框
private final JPasswordField PassWord;
// 定义登录和取消按钮
private final JButton Login;
private final JButton Cancel;
Login() {
// 各组件实例化过程
jf = new JFrame("Login");
InputUserName = new JLabel(" ID: ");
InputPassWord = new JLabel("password:");
UserName = new JTextField();
PassWord = new JPasswordField();
Login = new JButton("登录");
Cancel = new JButton("退出");
// 设置主窗口大小、位置和布局
jf.setSize(400, 150);
jf.setLocation(600, 400);
// 设置窗口流式布局
jf.setLayout(new FlowLayout());
// 设置用户名和密码框大小
UserName.setPreferredSize(new Dimension(300, 30));
PassWord.setPreferredSize(new Dimension(300, 30));
// 依次向主窗口添加各组件
jf.getContentPane().add(InputUserName);
jf.getContentPane().add(UserName);
jf.getContentPane().add(InputPassWord);
jf.getContentPane().add(PassWord);
jf.getContentPane().add(Login);
jf.getContentPane().add(Cancel);
// 设置主窗口不可调节大小
jf.setResizable(false);
// 设置主窗口默认关闭操作
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 给登录和取消按钮添加 Action 监听器
Login.addActionListener(this);
Cancel.addActionListener(this);
// 设置主窗口可见
jf.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// 如果单击【退出】按钮则程序退出
if (e.getSource().equals(Cancel)) {
System.exit(0);
}
// 如果单击【登录】按钮则检查用户名和密码是否匹配
else if (e.getSource().equals(Login)) {
// 如果用户名和密码匹配,则打开具体操作面板
if (UserName.getText().equals("admin") && String.valueOf(PassWord.getPassword()).equals("1234")) {
// MySQLGUI myS = new MySQLGUI();
// myS.initial();
new MySQLGUI();
jf.setVisible(false);
jf.dispose();
}
// 如果用户名和密码不匹配,则给出提示对话框
else {
JOptionPane.showOptionDialog(jf, "用户名或密码错误", "登陆失败",
JOptionPane.CLOSED_OPTION,
JOptionPane.ERROR_MESSAGE, null, null, null);
}
}
}
}
这是 GUI 界面代码
// MySQLGUI.java
package StudentInfo;
import javax.swing.;
import java.awt.;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class MySQLGUI extends JFrame implements MouseListener, ItemListener {
// 定义选项卡
private JTabbedPane Base;
// 定义选项卡上的嵌板
/*
* jp1, 添加记录
* jp2, 删除记录
* jp3, 更新记录
* jp4, 查找记录
* jp5, 选课记录
* jp6 课程平均分
* /
private JPanel jp1, jp2, jp3, jp4, jp5, jp6;
// 定义各按钮
/
* InsertRecord, 添加记录按钮
* InsertReset, 添加取消按钮
* DeleteRecord, 删除记录按钮
* DeleteReset, 删除取消按钮
* QueryRecord, 查询记录按钮
* UpdateRecord, 更改记录按钮
* UpdateReset, 重置更新框
* CourseQuery, 选课表查询按钮
* GradeQuery, 成绩查询按钮
* /
private JButton InsertRecord, InsertReset, DeleteRecord, DeleteReset,
QueryRecord, UpdateRecord, UpdateReset, CourseQuery, GradeQuery;
// 定义各标签
/
* InsertID1, 插入学号提示标签
* InsertName1, 插入姓名提示标签
* InsertChinese1, 插入语文成绩提示标签
* InsertMath1, 插入数学提示标签
* InsertEnglish1, 插入英语提示标签
* DeleteID1, 删除学号提示标签
* UpdateID1, 更新学号提示标签
* /
private JLabel InsertID1, InsertName1, InsertChinese1, InsertMath1,
InsertEnglish1, DeleteID1, UpdateID1;
// 定义各文本框
/
* InsertID2, 插入学号文本框
* InsertName2, 插入姓名文本框
* InsertChinese2, 插入语文文本框
* InsertMath2, 插入数学文本框
* InsertEnglish2, 插入英语文本框
* DeleteID2, 所要删除学号的文本框
* UpdateID2, 所要更新学号的文本框
* UpdateContent, 更新内容填写文本框
* IDCondition, 查询ID文本框
* NameCondition, 查询姓名文本框
* ChineseCondition,查询语文文本框
* MathCondition, 查询数学文本框
* EnglishCondition,查询英语文本框
* /
private JTextField InsertID2, InsertName2, InsertChinese2, InsertMath2, InsertEnglish2,
DeleteID2, UpdateID2, UpdateContent, IDCondition, NameCondition, ChineseCondition, MathCondition,
EnglishCondition;
// 定义显示结果文本域 显示 jp4 jp5 jp6 的查询结果
/
* QueryRecordResult, 查询学生信息结果文本域
* CourseQueryResult, 查询课程信息文本域
* GradeQueryResult, 查询课程成绩平均分文本域
* /
private JTextArea QueryRecordResult, CourseQueryResult, GradeQueryResult;
// 定义查询选项
/
* ID, 选择学号查询
* Name, 选择姓名查询
* Chinese, 选择语文查询
* Math, 选择数学查询
* English, 选择英语查询
* */
private JRadioButton ID, Name, Chinese, Math, English;
// 定义一个数据库操作的实例
private OperationMySql db = null;
// 定义滚动条
private JScrollPane scroll = null;
private JScrollPane CourseScroll = null;
private JScrollPane GradeScroll = null;
// 定义一个复选框用于选择更新的项目
private JComboBox UpdateItem = null;
// 定义复选框用于选择查询的项目
private JComboBox CourseItem = null; // 课程信息复选框
private JComboBox GradeItem = null; // 课程成绩复选框
MySQLGUI() {
// 设置各按钮信息
setButton();
// 设置各标签信息
setLabel();
// 设置各文本框信息
setTextField();
// 设置各面板信息
setPanel();
// 设置布局信息
setLayout();
// 设置选项卡信息
setBase();
// 设置主窗口信息
setThis();
// 设置数据库信息
setDB();
}
// 设置各按钮信息的方法
private void setButton() {
// jp1 上的按钮
InsertRecord = new JButton("添加");
InsertReco
文章浏览阅读978次,点赞3次,收藏21次。该项目是浙江大学地理空间数据库课程作业8:空间分析中,使用 flask + pyecharts搭建的简单新冠肺炎疫情数据可视化交互分析平台的一部分,完整的实现包含疫情数据获取、态势感知、预测分析、舆情监测等任务;包含完整代码、数据集和实现的github地址: https://github.com/yunwei37/COVID-19-NLP-vis项目分析报告已部署到网页端,可点击 http://flask.yunwei123.tech/ 进行查看,数据已更新到6.17本项目采用flask作为_疫情舆情分析代码
文章浏览阅读254次。详细请参考:https://www.cnblogs.com/Neeo/articles/11212374.html1、元组的基本操作1>创建元组Python中,元组(tuple)用一对小括号()表示,元组内的各元素以逗号分隔。t = ()print(type(t)) # <type 'tuple'>t1 = ('name', )print(t1) ..._tuple元祖for循环取值
文章浏览阅读860次。关于c语言创建dll文件及dll文件的调用近来又有人在群里问如何用c语言编制dll文件(动态链接库)。原来没有对这个问题太在意过,也没有尝试过任何解决方案,毕竟原来我是用vb的(现在用.net),做个dll只不过是点选一下建立activeX dll工程的图标而已。今天在网上与朋友聊天,看了他指给我的几个几个文件,用MingW将C程序编译成dll文件的例子,我恍然大悟,原来讲C程序编译成dll文件只..._keil c语言 生成dll
文章浏览阅读6.8k次,点赞11次,收藏111次。一、背景介绍BP神经网络是一类多层的前馈神经网络。它的名字源于在网络训练的过程中,调整网络的权值的算法是误差的反向传播的学习算法,即为BP学习算法。BP神经网络是人工神经网络中应用广泛的算法,但依然存在着一些缺陷,例如学习收敛速度太慢、不能保证收敛到全局最小点、网络结构不易确定等。另外,网络结构、初始连接权值和阈值的选择对网络训练的影响很大,但是又无法准确获得,针对这些特点可以采用遗传算法对神经网络进行优化。二、算法流程创建网络;确定网络的初始权重值和阈值,对其进行编码得到初始种群;while_遗传算法优化 bp 染色体
文章浏览阅读316次。Sentinel(哨兵)进程是用于监控Redis集群中Master主服务器工作的状态在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用(HA)其已经被集成在redis2.6+的版本中,Redis的哨兵模式到了2.8版本之后就稳定了下来。......_redis 6 哨兵
文章浏览阅读363次。单向链表,定义、插入、剔除操作,模块化能直接调用_snode *init()
文章浏览阅读6.7k次,点赞3次,收藏17次。一、Json字符串和Json对象定义:1、Json字符串:所谓字符串:单引号或者双引号引起来,是一个String类型的字符串:如下:var person='{"name":"shily","sex":"女","age":"23"}';//json字符串console.log(person)console.log(person.name)console.log(typeof person) 2、Json对象:最显著的特征:对象的值可以用 “对象.属性” 进行访问,_json字符串数组
文章浏览阅读718次。CentOS 7:ip link set interface_name up 或 ip link set interface_name down。Ubuntu:ifconfig interface_name up 或 ifconfig interface_name down。CentOS 7:编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件。Ubuntu:编辑 /etc/network/interfaces 文件。_ubuntu 命令跟centos
文章浏览阅读652次。jpegsr9e windows vs2019生成方法,以及库下载_jpeg library error vs2019
文章浏览阅读647次。总的来说,华为Mate 60/Pro系列手机的高速网速表现引起了广泛的关注,这也是消费者对该系列手机购买热情高涨的一个重要因素。可以看出,华为Mate 60/Pro系列手机的网速表现非常出色,这也是消费者购买该系列手机的一个重要原因。此前,华为Mate 60 Pro的供应量已经增至1500万至1700万台,而最新消息称,华为Mate 60 Pro和Mate 60 Pro+的出货量甚至已上调至2000万台。目前,在中国市场上,手机竞争愈发激烈,不仅华为Mate 60系列,其他品牌的手机也都受到了高温的迎接。_华为mate60pro+核实网络
文章浏览阅读7.1k次。公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。话题:access怎样利用出生日期计算年龄呀!回答:lt;%set rs = server.createobject("adodb.recordset") curid=request("id") sql = "UPDATE pany SET a_num=a_num+1,day_count=day_count+1 WHERE day_lda..._access出生年份表达式
文章浏览阅读75次。Python内置函数(1)——absPython内置函数(2)——divmodPython内置函数(3)——maxPython内置函数(4)——minPython内置函数(5)——powPython内置函数(6)——roundPython内置函数(7)——sumPython内置函数(8)——bool...