随机筛选美食

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

要点:
       该项目主要是实现对数据库的操作,包括读取数据库中的表中的数据,删除表中的数据,向表中添加数据.
       该项目还涉及线程操作.线程和数据库操作相结合
       该项目的实现首先要成功连接到数据库.首先要先向项目中导入连接数据库的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界面如下:
随机筛选美食_第1张图片
2.为GUI界面中的组件添加相应的动作监听使其实现相应的功能.
       新建菜单项:通过读取输入的菜的菜名,菜系,食物种类信息将该菜存入数据库的表中,在存入之前先判断是否数据库的表中是否已经存在该菜,若存在,则不添加并反馈给使用者.
       删除菜单项:通过读取输入的菜的菜名,菜系,食物种类信息从数据库的表中检索是否存在该菜,若不存在,则不删除并反馈信息给管理者;若存在,则删除.
      分离菜单项:因为该程序我的设计思路是在数据库总表中添加和删除,分离菜单项可以将总表中所有的菜按菜系分成不同的子表(总表依然存在).
      开始按钮:点击按钮即可使菜名标签显示滚动效果,再点击该按钮即可停止滚动,随机选出符合要求的菜.
      点击此处下载工程代码查看

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

你可能感兴趣的:(java,数据库操作,线程操作,线程与数据库结合,java小程序)