⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 course.java

📁 JAVA的一个小程序代码,是一个算法,主要程序还需要自己独立完成
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.util.*;
import  java.text.DecimalFormat;

public class Course extends JFrame{
	
//inputpanel
	private JPanel inputPanel=new JPanel();
	private JLabel numLabel=new JLabel("课程号:");
	private JLabel nameLabel=new JLabel("课程名:");
	private JLabel adhereLabel=new JLabel("依赖课程号:");
	private JLabel termLabel=new JLabel("总学期数:");
	
    //定义输入框的大小
	private JTextField numText=new JTextField(4);
	private JTextField nameText=new JTextField(10);
	private JTextField adhereText=new JTextField(4);
	private JTextField termText=new JTextField(4);
	
	//定义输入按钮样式(字)
	private JButton  inputButton = new JButton("输入");
	
//outputpanel
	private JPanel outputPanel=new JPanel();
	private JPanel panel=new JPanel();
	private JLabel num1Label=new JLabel("课程号");
	private JLabel name1Label=new JLabel("课程名");
	private JLabel adhere1Label=new JLabel("    依赖  ");
	private JLabel term1Label=new JLabel("总学期数");
	private JButton courseButton = new JButton("开始排课");
	private JTextArea courseText=new JTextArea();
	
//analysePanel	
    private JPanel analysePanel=new JPanel();
    private JPanel jpanel=new JPanel(); 
    private JTextArea coursesText=new JTextArea();
    
//数组
            int count=0,length=0; //length是输入的课程总数
            int[][] array;
            int num,adhere,term; //num是课程号,adhere是依赖号,term是总学期数
            String name;         
            
// ArrayList
	ArrayList<int[]> v = new ArrayList<int[]>();
	
//总体版面设计    
    public Course(int width,int height){
		setSize(width,height);
		setTitle("排课系统");
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension  screenSize = kit.getScreenSize();
		int x=(screenSize.width-width)/2;
		int y=(screenSize.height-height)/2;
		setLocation(x,y);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
//设置输入框版面
		inputPanel.add(numLabel);
		inputPanel.add(numText);
		inputPanel.add(nameLabel);
		inputPanel.add(nameText);
		inputPanel.add(adhereLabel);
		inputPanel.add(adhereText);
		inputPanel.add(termLabel);
		inputPanel.add(termText);
		inputPanel.add(inputButton);
	    inputPanel.setBorder(BorderFactory.createTitledBorder("输入"));
	    
//设置输出框版面
		courseText.setColumns(15);
		panel.add(num1Label);
		panel.add(name1Label);
		panel.add(adhere1Label);
		panel.add(term1Label);
		panel.add(courseButton);
		outputPanel.setLayout(new BorderLayout());
		outputPanel.add(panel,"North");
		outputPanel.add(new JScrollPane(courseText),"Center");
		courseText.setEditable(false);
		outputPanel.setBorder(BorderFactory.createTitledBorder("输出"));
	    analysePanel.setLayout(new BorderLayout());
		analysePanel.setBorder(BorderFactory.createTitledBorder("排课结果"));		
		analysePanel.add(new JScrollPane(coursesText),"Center");
		
//设置总体板块排布
	  	Container c=this.getContentPane();
		c.add(inputPanel,"North");
		c.add(outputPanel,"West");
        c.add(analysePanel,"Center");


//输入按钮设置(功能设置)
		inputButton.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
				GetText();
				String s=Integer.toString(num,adhere);
                 length++;
				System.out.println("length======="+length);
				//使输入的数据全部输出到输出框
				courseText.append(num+"              "//第一个text框的
				                +name+"              "
				              +adhere+"              "
				                +term+"          \n");			    
	             int t[] = new int[2];
	             t[0] = num;
	             t[1] = adhere;
	             v.add(t);	             	             	             
				}
			});
			
//设置排课按钮的功能(功能设置,调用arrange函数)			
		courseButton.addActionListener(new ActionListener(){
		      public void actionPerformed(ActionEvent e){		    
		       	arrange();		      	
}
});
}

public void GetText(){
	num=Integer.parseInt(numText.getText());
	name=nameText.getText();
	adhere=Integer.parseInt(adhereText.getText());
	term=Integer.parseInt(termText.getText());
	}
	
//核心部分:排课程序的实现
public void arrange(){	
	array = new int [v.size ()][2];
	int c = 0;
	for (int[] t : v)
		array[c++] = t;
	
	int i,j,k,l,n,m=1; //设置参数i,j,k,l,n,m,控制循环的参数
	
	//输出提示信息:排课结果所显示的数字是课程号
	coursesText.append("排课结果所显示的数字是课程号"+"\n"); 
	
    for(n=1;n<=term;n++){		//进行term次循环
   	 coursesText.append("第"+n+"个学期:"+"\n"); //用来输出学期数
   	 
   	 	for(i=length-1;i>=0;i--){
		if(array[i][0]!=0&&array[i][1]==0&&m<=length/term+1)
		//如果课程号不为0,依赖号等于0,而且该学期已输出的课程数小于每学期的总课程数
			{
			coursesText.append(array[i][0]+"\n");//输出该课程号
			m++;//该学期已输出的课程数加1
			for(j=length-1;j>=0;j--)//该循环用于检验刚输出的课程有没有被依赖
			{
				if(array[j][1]==array[i][0])//如果其他课程依赖于刚输出的课程
				{
					array[j][1]=0;//其他课程的依赖号清零
					for(k=length-1;k>=0;k--){//该循环用于检查该课程有没有依赖其他的课程
						if(array[k][0]==array[j][0]&&k!=j)//若该课程还有依赖其他课程
						{
							array[j][0]=0;//课程号清零
						}
					}
				}
				}
			array[i][0]=0;	//把刚输出的课程的课程号清零
			}
			
	}
		
		for(i=length-1;i>=0;i--){		//遍历整个课程(以课程号为对象)
			if(array[i][1]==array[i][0]&&array[i][0]!=0&&array[i][1]!=0&&m<=length/term+1)
			//若该课程没有依赖其他课程,课程号与依赖号都不为0,而且该学期已输出的课程数小于每学期的总课程数
		{	
					coursesText.append(array[i][0]+"\n");//输出该课程号
						m++;//该学期已输出的课程数加1
				for(l=length-1;l>=0;l--){//该循环用于检验刚输出的课程有没有被依赖
		     		if(array[l][1]==array[i][0]&&l!=i){ //如果其他课程依赖于刚输出的课程
		     			array[l][1]=0;	//课程号清零	     		
						for(j=length-1;j>=0;j--){ //该循环用于检查该课程有没有依赖其他的课程
							if(array[j][0]==array[l][0]&&j!=l&&array[l][0]!=0)
							//若该课程还有依赖其他课程
							{
								array[l][0]=0; //课程号清零				 				 
				}
			}			
			}
		}
		array[i][0]=0;//课程号清零
		}							
	}
	m=0;		//把输出的课程数置"0"
}
}
	public static void main(String args[]){
		try{
			 UIManager.setLookAndFeel(
			 	"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			 	
		}catch(Exception e){
			System.err.println("程序异常:"+e.getMessage());
		}
		Course frame= new Course(600,400);
		frame.setVisible(true);
	}		    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -