编写一个今天吃什么软件,要能存储和删除一些美食,美食要进行分类存储(鲁菜或川菜,海鲜或肉类等等。。)。确定所有美食或某一类美食,然后从飞速变化的这些美食名字中,抽取一个美食,要有 美食飞速变化的效果。(提示建议所用知识:集合,线程,数据库或数据持久化)
要点:
该项目主要是实现对数据库的操作,包括读取数据库中的表中的数据,删除表中的数据,向表中添加数据.
该项目还涉及线程操作.线程和数据库操作相结合
该项目的实现首先要成功连接到数据库.首先要先向项目中导入连接数据库的jar包,该jar包可以网上查找和下载.然后通过编写java语句连接数据库
语句如下:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Food", "sa","980720");
步骤:
public SeventhProgram() {
// TODO Auto-generated constructor stub
// 设置窗体属性
setLocation(600, 300);
setSize(650, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗体显示部件
panel = new JPanel();
Container container = getContentPane();// 创建窗体容器
container.add(panel);// 将面板添加到窗体容器中
panel.setLayout(null);// 设置面板布局为绝对布局
toolBar = new JToolBar("工具栏");// 初始化工具栏
storagebutton = new JButton("存储");// 初始化存储按钮
storagebutton.setFont(new Font("微软雅黑", Font.BOLD, 20));// 设置存储按钮的字体
toolBar.add(storagebutton);// 将存储按钮添加到工具栏
deletebutton = new JButton("删除");// 初始化删除按钮
deletebutton.setFont(new Font("微软雅黑", Font.BOLD, 20));// 设置删除按钮的字体
toolBar.add(deletebutton);// 将删除按钮添加到工具栏
dividebutton = new JButton("分离");
dividebutton.setFont(new Font("微软雅黑", Font.BOLD, 20));
toolBar.add(dividebutton);
toolBar.setBounds(0, 0, 650, 60);// 设置工具栏的位置及大小
panel.add(toolBar);// 将工具栏添加到面板
Titillabel = new JLabel("今天吃什么?");// 初始化标题标签
Titillabel.setFont(new Font("微软雅黑", Font.BOLD, 40));// 设置标签的字体属性
Titillabel.setHorizontalAlignment(SwingConstants.CENTER);// 设置标题标签内容居中
Titillabel.setBounds(80, 60, 400, 60);// 设置标题标签的位置及大小
panel.add(Titillabel);// 将标题标签添加到面板中
CuisineLabel = new JLabel("菜系");// 初始化菜系标签
CuisineLabel.setFont(new Font("微软雅黑", Font.BOLD, 25));// 设置菜系标签的字体属性
CuisineLabel.setHorizontalAlignment(SwingConstants.CENTER);// 设置菜系标签的内容居中
CuisineLabel.setBounds(150, 200, 100, 60);// 设置菜系标签的位置及大小
panel.add(CuisineLabel);// 将菜系标签添加到面板中
String[] aS = { "鲁菜", "苏菜", "粤菜", "川菜", "浙菜", "闽菜", "湘菜", "徽菜" };
CuisineCombox = new JComboBox<>(aS);// 初始化菜系下拉列表
CuisineCombox.setFont(new Font("微软雅黑", Font.BOLD, 25));// 设置菜系下拉列表的字体属性
CuisineCombox.setBounds(270, 200, 120, 60);// 设置菜系下拉列表的位置及大小
CuisineCombox.addItem("全部");
panel.add(CuisineCombox);// 将菜系下拉列表添加到面板中
SpeciesLabel = new JLabel("食物种类");// 初始化美食种类的下拉列表
SpeciesLabel.setFont(new Font("微软雅黑", Font.BOLD, 25));// 设置美食种类菜单的字体属性
SpeciesLabel.setHorizontalAlignment(SwingConstants.CENTER);// 设置美食种类的内容居中
SpeciesLabel.setBounds(150, 300, 100, 60);// 设置美食种类的位置及大小
panel.add(SpeciesLabel);// 将美食种类标签添加到面板中
String[] bS = { "谷类", "肉类", "蔬菜", "水果" };
SpeciesComboBox = new JComboBox<>(bS);
SpeciesComboBox.setFont(new Font("微软雅黑", Font.BOLD, 25));
SpeciesComboBox.setBounds(270, 300, 120, 60);
SpeciesComboBox.addItem("全部");
panel.add(SpeciesComboBox);
FoodLabel = new JLabel(" ");
FoodLabel.setFont(new Font("微软雅黑", Font.BOLD, 20));
FoodLabel.setHorizontalAlignment(SwingConstants.CENTER);
FoodLabel.setBounds(100, 400, 250, 60);
FoodLabel.setBorder(new LineBorder(Color.BLACK, 2));
panel.add(FoodLabel);
button = new JButton("开始");
button.setFont(new Font("微软雅黑", Font.BOLD, 20));
button.setHorizontalAlignment(SwingConstants.CENTER);
button.setBounds(400, 400, 100, 60);
panel.add(button);
Clabel = new JLabel();
Clabel.setLocation(400, 500);
panel.add(Clabel);
Slabel = new JLabel();
Slabel.setLocation(500, 500);
panel.add(Slabel);
Specieslist = new LinkedList<>();
Cuisinelist = new LinkedList<>();
}
点击此处下载完整工程代码查看
GUI界面如下:
2.为GUI界面中的组件添加相应的动作监听使其实现相应的功能.
新建菜单项:通过读取输入的菜的菜名,菜系,食物种类信息将该菜存入数据库的表中,在存入之前先判断是否数据库的表中是否已经存在该菜,若存在,则不添加并反馈给使用者.
删除菜单项:通过读取输入的菜的菜名,菜系,食物种类信息从数据库的表中检索是否存在该菜,若不存在,则不删除并反馈信息给管理者;若存在,则删除.
分离菜单项:因为该程序我的设计思路是在数据库总表中添加和删除,分离菜单项可以将总表中所有的菜按菜系分成不同的子表(总表依然存在).
开始按钮:点击按钮即可使菜名标签显示滚动效果,再点击该按钮即可停止滚动,随机选出符合要求的菜.
点击此处下载工程代码查看
总结:在此次设计中,难点在于如何实现滚动效果,如何实现连续滚动,停止,滚动效果,此处设计线程的启动与停止.用布尔值来控制线程的暂停与恢复我认为是很好的方法.