随机筛选美食

       编写一个今天吃什么软件,要能存储和删除一些美食,美食要进行分类存储(鲁菜或川菜,海鲜或肉类等等。。)。确定所有美食或某一类美食,然后从飞速变化的这些美食名字中,抽取一个美食,要有 美食飞速变化的效果。(提示建议所用知识:集合,线程,数据库或数据持久化)

要点:
       该项目主要是实现对数据库的操作,包括读取数据库中的表中的数据,删除表中的数据,向表中添加数据.
       该项目还涉及线程操作.线程和数据库操作相结合
       该项目的实现首先要成功连接到数据库.首先要先向项目中导入连接数据库的jar包,该jar包可以网上查找和下载.然后通过编写java语句连接数据库
语句如下:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Food", "sa","980720");

步骤:

  1. 首先搭建一个简单的GUI框架
           创建一个简单的GUI界面,界面中有可以实现存储,删除,分离功能的菜单栏;再创建一个菜系标签和食物种类标签,分别在这两个标签的后面设置一个下拉列表用于用户选择所喜欢的菜系(如川菜,粤菜等)和喜欢的食物种类(如肉类,水果,蔬菜等).最后创建一个标签用于显示没事飞速变化的效果和显示选择结果,创建一个按钮用于开始筛选和终止筛选.
    代码如下:
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界面中的组件添加相应的动作监听使其实现相应的功能.
       新建菜单项:通过读取输入的菜的菜名,菜系,食物种类信息将该菜存入数据库的表中,在存入之前先判断是否数据库的表中是否已经存在该菜,若存在,则不添加并反馈给使用者.
       删除菜单项:通过读取输入的菜的菜名,菜系,食物种类信息从数据库的表中检索是否存在该菜,若不存在,则不删除并反馈信息给管理者;若存在,则删除.
      分离菜单项:因为该程序我的设计思路是在数据库总表中添加和删除,分离菜单项可以将总表中所有的菜按菜系分成不同的子表(总表依然存在).
      开始按钮:点击按钮即可使菜名标签显示滚动效果,再点击该按钮即可停止滚动,随机选出符合要求的菜.
      点击此处下载工程代码查看

总结:在此次设计中,难点在于如何实现滚动效果,如何实现连续滚动,停止,滚动效果,此处设计线程的启动与停止.用布尔值来控制线程的暂停与恢复我认为是很好的方法.

在MATLAB中,可以使用随机森林算法进行随机筛选数据。随机森林算法是一种利用多棵决策树对样本进行训练并集成预测的分类器。它通过随机抽取数据构造多个样本,并使用节点的随机分裂技术构造多棵决策树。最后,将多棵决策树组合,并通过投票得出最终预测结果。\[2\] 在MATLAB中,可以使用自带的随机森林函数进行特征选择。这个函数可以帮助我们筛选出大量特征数据中对于回归预测最重要的特征,并对各特征进行重要性排序,充分反应不同特征的重要性。特征选择是从已有的特征中选择出一些最有效特征以降低数据集维度的过程,是提高学习算法性能的一个重要手段。\[1\] 使用MATLAB自带的随机森林函数进行特征选择的步骤如下: 1. 准备数据集:将需要进行特征选择的数据集准备好。 2. 调用随机森林函数:使用MATLAB中的随机森林函数,传入数据集和其他参数,如决策树数量、特征选择方法等。 3. 进行特征选择:随机森林函数会根据传入的参数进行特征选择,并返回特征的重要性排序结果。 4. 分析结果:根据返回的特征重要性排序结果,可以选择保留排名靠前的特征,以降低数据集的维度。 需要注意的是,随机森林特征选择方法可以有效地选择出最重要的特征,实现从大量特征到少数重要特征的特征降维筛选,极大地降低了特征的冗余性。\[3\] 希望这个回答对您有帮助! #### 引用[.reference_title] - *1* *2* *3* [基于随机森林实现特征选择降维及回归预测(Matlab代码实现)](https://blog.csdn.net/weixin_46039719/article/details/128097735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟-程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值