Java---JFrame窗口实现新课程添加

  任务要求:(1)新课程信息必须唯一,如有重复,提示课程名称重复,重新录入;(2)要求判断任课教师为5位教师中的一位(此处不写明教师名称);(3)要求上课地点开头为”一教,二教,三教,基教“四个地点中的一个;(4)将信息保存入库,此处老师要求将信息存入txt文档即可

        代码如下:

  1 import java.awt.Font;
  2 import java.awt.event.*;
  3 import java.io.BufferedWriter;
  4 import java.io.BufferedReader;
  5 import java.io.File;
  6 import java.io.FileReader;
  7 import java.io.FileWriter;
  8 import javax.swing.*;
  9 
 10 class screen extends JFrame{
 11         private JFrame js = new JFrame("提示");
 12         private JPanel jsp = new JPanel();
 13         private JLabel error1l = new JLabel("课程名称重复,请重新录入");
 14         private JLabel error2l = new JLabel("教师信息出错");
 15         private JLabel error3l = new JLabel("上课地点错误");
 16         private JLabel finishl = new JLabel("操作成功");
 17         
 18         public screen() {               //生成窗体
 19             js.setSize(400, 150);
 20             js.setLocationRelativeTo(null);
 21             js.add(jsp);
 22             js.setDefaultCloseOperation(2);
 23             js.setVisible(true);
 24         }
 25         
 26         public void err1() {          //提示错误1:课程名称错误
 27             error1l.setFont(new Font("Dialog",1,20));
 28             jsp.add(error1l);
 29         }
 30         
 31         public void err2() {         //提示错误2:教师信息错误
 32             error2l.setFont(new Font("Dialog",1,20));
 33             jsp.add(error2l);
 34         }
 35         
 36         public void err3() {        //提示错误3:上课地点错误
 37             error3l.setFont(new Font("Dialog",1,20));
 38             jsp.add(error3l);
 39         }
 40         public void fin() {         //提示成功 
 41             finishl.setFont(new Font("Dialog",1,20));
 42             jsp.add(finishl);
 43         }
 44         
 45 }
 46 public class NewClassIn extends JFrame{
 47     private JFrame jf = new JFrame("LOGIN");
 48     private JPanel jp = new JPanel();
 49     private JLabel classL = new JLabel("课程名称:");
 50     private static JTextField classT = new JTextField();
 51     private JLabel teacherL = new JLabel("任课教师:");
 52     private static JTextField teacherT = new JTextField();
 53     private JLabel locationL = new JLabel("上课地点:");
 54     private static JTextField locationT = new JTextField();
 55     private JButton loginB = new JButton("保存");
 56     
 57     File file = new File("manage.txt");    //存入所有信息的文档
 58     File file2 = new File("class.txt");    //存入课程信息的文档,用于判定课程是否重复
 59     String jud1[] = {"王建民","刘立嘉","刘丹","王辉","杨子光"};
 60     String jud2[] = {"一教","二教","三教","基教"};
 61     
 62     public NewClassIn() {
 63         jf.setSize(450, 300);
 64         jf.setLocationRelativeTo(null);
 65         jf.add(jp);
 66         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 67         Components(jp);
 68         jf.setVisible(true);
 69         loginB.addActionListener(new ActionListener() {    //监听事件
 70             public void actionPerformed(ActionEvent c) {
 71                 String s1 = classT.getText();
 72                 String s2 = teacherT.getText();
 73                 String s3 = locationT.getText();
 74                 int temp = 1;       //配合if语句进行检查操作。
 75                 if(temp == 1)       //检查课程名称
 76                 {
 77                     try {
 78                         FileReader fr = new FileReader(file2);
 79                         BufferedReader bufr = new BufferedReader(fr);
 80                         String s0 = null;
 81                         while((s0 = bufr.readLine())!=null) {
 82                             if(s1.equals(s0))
 83                             {
 84                                 screen k1 = new screen();
 85                                 k1.err1();
 86                                 temp--;
 87                                 break;
 88                             }
 89                         }
 90                         bufr.close();
 91                         fr.close();
 92                     }catch(Exception e) {
 93                         e.printStackTrace();
 94                     }
 95                     temp++;
 96                 }
 97                 if(temp == 2)        // 检查教师信息
 98                 {
 99                     int temp2 = 0;
100                     for(int i = 0;i < jud1.length;i++)
101                     {
102                         if(s2.equals(jud1[i])) 
103                         {
104                             temp2 = 1;
105                             break;
106                         }
107                     }
108                     if(temp2 == 0)
109                     {
110                         temp--;
111                         screen k2 = new screen();
112                         k2.err2();
113                     }
114                     else
115                     {
116                         temp++;
117                     }
118                 }
119                 if(temp == 3)         //检查上课地点
120                 {
121                     int temp3 = 0;
122                     String subs3 = s3.substring(0, 2);
123                     for(int i = 0; i < jud2.length; i++)
124                     {
125                         if(subs3.equals(jud2[i]))
126                         {
127                             temp3 = 1;
128                             break;
129                         }
130                     }
131                     if(temp3 == 0)
132                     {
133                         temp--;
134                         screen k3 = new screen();
135                         k3.err3();
136                     }
137                     else
138                     {
139                         temp++;
140                     }
141                 }
142                 if(temp == 4)           //确认无误,存入文档
143                 {
144                     try {
145                         FileWriter out = new FileWriter(file,true);
146                         FileWriter out2 = new FileWriter(file2,true);
147                         BufferedWriter bufw = new BufferedWriter(out);
148                         BufferedWriter bufw2 = new BufferedWriter(out2);
149                         String str1 = classT.getText();
150                         String str2 = teacherT.getText();
151                         String str3 = locationT.getText();
152                         bufw.write(str1);
153                         bufw.newLine();
154                         bufw2.write(str1);
155                         bufw2.newLine();
156                         bufw.write(str2);
157                         bufw.newLine();
158                         bufw.write(str3);
159                         bufw.newLine();
160                         bufw.close();
161                         bufw2.close();
162                         out.close();
163                         out2.close();
164                     }catch(Exception e) {
165                         e.printStackTrace();
166                     }
167                     screen k4 = new screen();     //弹出操作成功提示框
168                     k4.fin();
169                 }
170             }
171         });
172     }
173     
174     private void Components(JPanel p) {            //向窗体添加标签
175         p.setLayout(null);
176         classL.setBounds(60, 30, 100, 25);
177         classL.setFont(new Font("Dialog",1,20));
178         p.add(classL);
179         classT.setBounds(160, 30, 165, 25);
180         p.add(classT);
181         teacherL.setBounds(60, 60, 100, 25);
182         teacherL.setFont(new Font("Dialog",1,20));
183         p.add(teacherL);
184         teacherT.setBounds(160, 60, 165, 25);
185         p.add(teacherT);
186         locationL.setBounds(60, 90, 100, 25);
187         locationL.setFont(new Font("Dialog",1,20));
188         p.add(locationL);
189         locationT.setBounds(160, 90, 165, 25);
190         p.add(locationT);
191         loginB.setBounds(150, 150, 80, 25);
192         p.add(loginB);
193     }
194     public static void main(String[] args) {         //主函数,执行操作
195         new NewClassIn();
196     }
197 }

运行结果显示:

 

 

 

 

   因未知原因,原JFrame窗口中的字体大小与主窗体(LOGIN)中按钮的“保存”字体一样大小,因此使用setFont调整了字体大小。完成该任务核心在于窗体构建,信息录入以及核对信息。抓取输入文本框的信息运用getText()函数。核对时,教师信息和上课地点要求有明确规划,直接用字符串数组存入,届时遍历数组比较即可。而课程信息存储数量未知,因此除了用于存储全部信息的“manage.txt”文件外,另外设置了单独存储课程名称信息的“class.txt”文件,在核对课程名称信息时,只需读取该文件并进行比较即可。

   另外,为了方便文件的读取操作,这里使用的是BufferedWriter和BufferedReader,目的是将信息单行录入,读取时只要单行读取即可。

  最后就是窗体构建,着重使用JFrame,JPanel,JLabel和JButton,其窗体大小和组件大小数值可自行调试,代码中的数值是多次调试之后确定的个人比较满意的数值。

猜你喜欢

转载自www.cnblogs.com/20183711PYD/p/11701318.html
今日推荐