Guest User

Untitled

a guest
May 22nd, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.83 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3.  
  4. import javax.swing.*;
  5. public class Lab9_1 extends JFrame implements ActionListener {
  6. Student std[];
  7. SubjectNew sub[];
  8. String studentStr[], subjectStr[];
  9. Container container;
  10. JComboBox stdCombo, subCombo;
  11. JLabel stdLabel, subLabel, addsubLabel, codeLabel, nameLabel, creditLabel;
  12. JLabel addstdLabel, stdcodeLabel, stdnameLabel, stdsurnameLabel;
  13. JButton addstdBtn, addsubBtn, saveBtn, clearBtn, cancleBtn;
  14. JButton addnewsubBtn, editsubBtn, deletesubBtn, clearsubBtn;
  15. JButton addnewstdBtn, editstdBtn, deletestdBtn, clearstdBtn;
  16. JTextField stdText, codeText, nameText, creditText, statusText;
  17. JTextField stdcodeText, stdnameText, stdsurnameText, stdstatusText;
  18. JTextArea subTextArea, subTextArea2, stdTextArea;
  19. JScrollPane subScroll, subScroll2;
  20. Register reg;
  21. int count = 0, money_total = 0, credit_total = 0;
  22. final int submax = 12, stdmax = 5;
  23. static Lab9_1 a;
  24.  
  25. public Lab9_1() {
  26. super("ลงทะเบียน");
  27. initStudent();
  28. initSubject();
  29. initGui();
  30. reg = new Register(new Student(), 5);
  31. statusText.setText("Number Object : " + SubjectNew.getCount());
  32. stdstatusText.setText("Number Object : " + Student.getCount());
  33. subTextArea2.setText(readString(sub));
  34. stdTextArea.setText(readString(std));
  35. }
  36.  
  37. public Lab9_1(Lab9_1 a) {
  38. super("ลงทะเบียน");
  39. this.a = a;
  40. initStudent();
  41. initSubject();
  42. initGui();
  43. reg = new Register(new Student(), 5);
  44. statusText.setText("Number Object : " + SubjectNew.getCount());
  45. stdstatusText.setText("Number Object : " + Student.getCount());
  46. subTextArea2.setText(readString(sub));
  47. stdTextArea.setText(readString(std));
  48. }
  49.  
  50. public void initStudent() {
  51. std = new Student[stdmax];
  52. studentStr = new String[stdmax];
  53. std[0] = new Student("6066260010", "Pankamol", "Kaewboon");
  54. std[1] = new Student("6066260024", "Wikanda", "Wongjae");
  55. std[2] = new Student("6066260035", "Benjawan", "Punnam");
  56. studentStr[0] = std[0].toString();
  57. studentStr[1] = std[1].toString();
  58. studentStr[2] = std[2].toString();
  59. }
  60.  
  61. public void initSubject() {
  62. sub = new SubjectNew[submax];
  63. subjectStr = new String[submax];
  64. sub[0] = new SubjectNew("662305", "IT Laboratory II", 1);
  65. sub[1] = new SubjectNew("662309", "Data Structure", 3);
  66. sub[2] = new SubjectNew("662310", "Database System", 3);
  67. sub[3] = new SubjectNew("662317", "Data Communication", 3);
  68. sub[4] = new SubjectNew("662327", "Advanced Computer Programming", 3);
  69. subjectStr[0] = sub[0].toString();
  70. subjectStr[1] = sub[1].toString();
  71. subjectStr[2] = sub[2].toString();
  72. subjectStr[3] = sub[3].toString();
  73. subjectStr[4] = sub[4].toString();
  74. }
  75.  
  76. public void initGui() {
  77. String line = " ";
  78. line += line;
  79. container = getContentPane();
  80. container.setLayout(new FlowLayout());
  81.  
  82. stdLabel = new JLabel("Select Student : ");
  83. container.add(stdLabel);
  84.  
  85. stdCombo = new JComboBox();
  86. for(int i=0;i<stdmax;i++) {
  87. if(studentStr[i] != null)
  88. stdCombo.addItem(studentStr[i]);
  89. }
  90. stdCombo.setMaximumRowCount(stdmax);
  91. container.add(stdCombo);
  92.  
  93. addstdBtn = new JButton("Add Student");
  94. addstdBtn.addActionListener(this);
  95. container.add(addstdBtn);
  96. stdText = new JTextField(40);
  97. stdText.setEditable(false);
  98. container.add(stdText);
  99.  
  100. subLabel = new JLabel("Select Subject : ");
  101. container.add(subLabel);
  102.  
  103. subCombo = new JComboBox();
  104. for(int i=0;i<submax;i++) {
  105. if(subjectStr[i] != null)
  106. subCombo.addItem(subjectStr[i]);
  107. }
  108. subCombo.setMaximumRowCount(submax);
  109. container.add(subCombo);
  110.  
  111. addsubBtn = new JButton("Add Subject");
  112. addsubBtn.setEnabled(false);
  113. addsubBtn.addActionListener(this);
  114. container.add(addsubBtn);
  115.  
  116. subTextArea = new JTextArea(5, 40);
  117. subTextArea.setEditable(false);
  118. subScroll = new JScrollPane(subTextArea);
  119. container.add(subScroll);
  120. container.add(new JLabel(" "));
  121.  
  122. saveBtn = new JButton(" Save ");
  123. saveBtn.setEnabled(false);
  124. saveBtn.addActionListener(this);
  125. container.add(saveBtn);
  126. container.add(new JLabel(" "));
  127.  
  128. cancleBtn = new JButton(" Cancle ");
  129. cancleBtn.setEnabled(false);
  130. cancleBtn.addActionListener(this);
  131. container.add(cancleBtn);
  132. container.add(new JLabel(" "));
  133.  
  134. // ---- Add new subject
  135. addsubLabel = new JLabel(" Add new subject");
  136. container.add(addsubLabel);
  137.  
  138. container.add(new JLabel(line));
  139. codeLabel = new JLabel(" Subject Code : ");
  140. container.add(codeLabel);
  141. codeText = new JTextField(10);
  142. container.add(codeText);
  143. container.add(new JLabel(" "));
  144. container.add(new JLabel(" "));
  145.  
  146. nameLabel = new JLabel(" Subject Name : ");
  147. container.add(nameLabel);
  148. nameText = new JTextField(20);
  149. container.add(nameText);
  150. container.add(new JLabel(" "));
  151.  
  152. creditLabel = new JLabel("Subject Credit : ");
  153. container.add(creditLabel);
  154. creditText = new JTextField(5);
  155. container.add(creditText);
  156. container.add(new JLabel(" "));
  157.  
  158. addnewsubBtn = new JButton("Add");
  159. addnewsubBtn.addActionListener(this);
  160. container.add(addnewsubBtn);
  161.  
  162. editsubBtn = new JButton("Edit");
  163. editsubBtn.addActionListener(this);
  164. container.add(editsubBtn);
  165.  
  166. deletesubBtn = new JButton("Delete");
  167. deletesubBtn.addActionListener(this);
  168. container.add(deletesubBtn);
  169.  
  170. clearsubBtn = new JButton("Clear");
  171. clearsubBtn.addActionListener(this);
  172. container.add(clearsubBtn);
  173. subTextArea2 = new JTextArea(8, 25);
  174. subTextArea2.setEditable(false);
  175. subScroll2 = new JScrollPane(subTextArea2);
  176. container.add(subScroll2);
  177.  
  178. statusText = new JTextField(30);
  179. statusText.setEnabled(false);
  180. container.add(statusText);
  181.  
  182. // --------- Add new student
  183. addstdLabel = new JLabel(" Add new student");
  184. container.add(addstdLabel);
  185.  
  186. container.add(new JLabel(line));
  187. stdcodeLabel = new JLabel(" Student Code : ");
  188. container.add(stdcodeLabel);
  189. stdcodeText = new JTextField(10);
  190. container.add(stdcodeText);
  191. container.add(new JLabel(" "));
  192. container.add(new JLabel(" "));
  193.  
  194. stdnameLabel = new JLabel(" Student Name : ");
  195. container.add(stdnameLabel);
  196. stdnameText = new JTextField(10);
  197. container.add(stdnameText);
  198. container.add(new JLabel(" "));
  199. container.add(new JLabel(" "));
  200.  
  201. stdsurnameLabel = new JLabel("Student Surname : ");
  202. container.add(stdsurnameLabel);
  203. stdsurnameText = new JTextField(13);
  204. container.add(stdsurnameText);
  205. container.add(new JLabel(" "));
  206.  
  207. addnewstdBtn = new JButton("Add");
  208. addnewstdBtn.addActionListener(this);
  209. container.add(addnewstdBtn);
  210.  
  211. editstdBtn = new JButton("Edit");
  212. editstdBtn.addActionListener(this);
  213. container.add(editstdBtn);
  214.  
  215. deletestdBtn = new JButton("Delete");
  216. deletestdBtn.addActionListener(this);
  217. container.add(deletestdBtn);
  218.  
  219. clearstdBtn = new JButton("Clear");
  220. clearstdBtn.addActionListener(this);
  221. container.add(clearstdBtn);
  222. stdTextArea = new JTextArea(8, 25);
  223. stdTextArea.setEditable(false);
  224. subScroll2 = new JScrollPane(stdTextArea);
  225. container.add(subScroll2);
  226.  
  227. stdstatusText = new JTextField(30);
  228. stdstatusText.setEnabled(false);
  229. container.add(stdstatusText);
  230. }
  231.  
  232. public void actionPerformed(ActionEvent event) {
  233. if(event.getSource() == addstdBtn) {
  234. int n = stdCombo.getSelectedIndex();
  235. int item = n;
  236.  
  237. while(std[n] == null || std[n].toString().equals(stdCombo.getItemAt(item)) == false) {
  238. n++;
  239. }
  240.  
  241. stdText.setText(std[n].toString());
  242. reg.setStudent(std[n]);
  243. addstdBtn.setEnabled(false);
  244. addsubBtn.setEnabled(true);
  245. saveBtn.setEnabled(true);
  246. cancleBtn.setEnabled(true);
  247. }
  248. else if(event.getSource() == addsubBtn) {
  249. int n = subCombo.getSelectedIndex();
  250. int item = n, credit;
  251.  
  252. while(sub[n] == null || sub[n].toString().equals(subCombo.getItemAt(item)) == false) {
  253. n++;
  254. }
  255.  
  256. if(count == 0) {
  257. credit = sub[n].getSubjectCredit();
  258. if(credit_total + credit > 10) {
  259. JOptionPane.showMessageDialog(this, "ลงทะเบียนสูงสุดได้ไม่เกิน 10 หน่วยกิต",
  260. "Message", JOptionPane.INFORMATION_MESSAGE);
  261. return;
  262. }
  263. reg.setSubject(sub[n], count);
  264. subTextArea.append("[" + (++count) + "] " + sub[n].toString() + " จำนวน " + credit + " หน่วยกิต");
  265. subTextArea.append(" เป็นเงิน " + (credit * 500) + " บาท\n");
  266. credit_total += credit;
  267. money_total += credit * 500;
  268. saveBtn.setEnabled(true);
  269. }
  270. else {
  271. boolean chk = true;
  272. for(int j=0;j<count;j++) {
  273. if(sub[n].toString().equals(reg.getSubject(j))) {
  274. chk = false;
  275. break;
  276. }
  277. }
  278. if(chk) {
  279. credit = sub[n].getSubjectCredit();
  280. if(credit_total + credit > 10) {
  281. JOptionPane.showMessageDialog(this, "ลงทะเบียนสูงสุดได้ไม่เกิน 10 หน่วยกิต",
  282. "Message", JOptionPane.INFORMATION_MESSAGE);
  283. return;
  284. }
  285. reg.setSubject(sub[n], count);
  286. subTextArea.append("[" + (++count) + "] " + sub[n].toString() + " จำนวน " + credit + " หน่วยกิต");
  287. subTextArea.append(" เป็นเงิน " + (credit * 500) + " บาท\n");
  288. credit_total += credit;
  289. money_total += credit * 500;
  290. }
  291. }
  292. if(count == 5) addsubBtn.setEnabled(false);
  293. }
  294. else if(event.getSource() == saveBtn) {
  295. String output = "";
  296. int credit = 0;
  297. output = "นักศึกษา : " + reg.getStudent();
  298. output += "\nวิชาที่ลงทะเบียน\n";
  299. for(int n = 0; n < count; n++) {
  300. credit = reg.getSubjectCredit(n);
  301. output += "[" + (n+1) + "] " + reg.getSubject(n) + " จำนวน " + credit + " หน่วยกิต";
  302. output += " เป็นเงิน " + (credit * 500) + " บาท\n";
  303. }
  304. output += "รวม "+ credit_total + " หน่วยกิต เป็นเงิน " + money_total + " บาท";
  305. JOptionPane.showMessageDialog(this, output, "Registration Data", JOptionPane.INFORMATION_MESSAGE);
  306. resetBtn();
  307. }
  308. else if(event.getSource() == cancleBtn) {
  309. stdText.setText("");
  310. subTextArea.setText("");
  311. count = 0;
  312. resetBtn();
  313. }
  314. // ------- Subject button
  315. else if(event.getSource() == addnewsubBtn) {
  316. if(SubjectNew.getCount() == sub.length) {
  317. JOptionPane.showMessageDialog(this, "Array full , can not add",
  318. "Message", JOptionPane.INFORMATION_MESSAGE);
  319. return;
  320. }
  321. int pos = CheckArrayEmpty();
  322. int n = Integer.parseInt(creditText.getText());
  323. sub[pos] = new SubjectNew(codeText.getText(), nameText.getText(), n);
  324. subTextArea2.setText(readString(sub));
  325. JOptionPane.showMessageDialog(this, "Add Subject already", "Message", JOptionPane.INFORMATION_MESSAGE);
  326. clearTextField();
  327. updateGui();
  328. }
  329. else if(event.getSource() == editsubBtn) {
  330. String s = codeText.getText();
  331. int n = searchSubject(sub, s);
  332. if(n >= 5 ) {
  333. sub[n].setSubjectName(nameText.getText());
  334. sub[n].setSubjectCredit(Integer.parseInt(creditText.getText()));
  335. subTextArea2.setText(readString(sub));
  336. JOptionPane.showMessageDialog(this, "Edit Subject already", "Message", JOptionPane.INFORMATION_MESSAGE);
  337. clearTextField();
  338. updateGui();
  339. }
  340. else if(n >= 0) {
  341. JOptionPane.showMessageDialog(this, "Can not edit main subject", "Error Message", JOptionPane.ERROR_MESSAGE);
  342. }
  343. else {
  344. JOptionPane.showMessageDialog(this, "Can not found subject code", "Error Message", JOptionPane.ERROR_MESSAGE);
  345. }
  346. }
  347. else if(event.getSource() == deletesubBtn) {
  348. String s = codeText.getText();
  349. int n = searchSubject(sub, s);
  350. if(n >= 5) {
  351. nameText.setText(sub[n].getSubjectName());
  352. creditText.setText(sub[n].getSubjectCredit() + "");
  353. int ans = JOptionPane.showConfirmDialog(this, "Delete subject", "Confirm", JOptionPane.YES_NO_OPTION);
  354. if(ans == 0) {
  355. sub[n] = null;
  356. subjectStr[n] = null;
  357. System.gc();
  358. subTextArea2.setText(readString(sub));
  359. updateGui();
  360. }
  361. clearTextField();
  362. }
  363. else if(n >= 0) {
  364. JOptionPane.showMessageDialog(this, "Can not delete main subject", "Error Message", JOptionPane.ERROR_MESSAGE);
  365. }
  366. else {
  367. JOptionPane.showMessageDialog(this, "Can not found subject code", "Error Messgae", JOptionPane.ERROR_MESSAGE);
  368. }
  369. }
  370. else if(event.getSource() == clearsubBtn) {
  371. clearTextField();
  372. }
  373. // ------- Student button
  374. else if(event.getSource() == addnewstdBtn) {
  375. if(Student.getCount() == std.length) {
  376. JOptionPane.showMessageDialog(this, "Array full , can not add",
  377. "Message", JOptionPane.INFORMATION_MESSAGE);
  378. return;
  379. }
  380. int pos = CheckArrayEmpty2();
  381. std[pos] = new Student(stdcodeText.getText(), stdnameText.getText(), stdsurnameText.getText());
  382. stdTextArea.setText(readString(std));
  383. JOptionPane.showMessageDialog(this, "Add Student already", "Message", JOptionPane.INFORMATION_MESSAGE);
  384. clearTextField2();
  385. updateGui2();
  386. }
  387. else if(event.getSource() == editstdBtn) {
  388. String s = stdcodeText.getText();
  389. int n = searchStudent(std, s);
  390. if(n >= 3 ) {
  391. std[n].setStudentName(stdnameText.getText());
  392. std[n].setStudentSurName(stdsurnameText.getText());
  393. stdTextArea.setText(readString(std));
  394. JOptionPane.showMessageDialog(this, "Edit Student already", "Message", JOptionPane.INFORMATION_MESSAGE);
  395. clearTextField2();
  396. updateGui2();
  397. }
  398. else if(n >= 0) {
  399. JOptionPane.showMessageDialog(this, "Can not edit main student", "Error Message", JOptionPane.ERROR_MESSAGE);
  400. }
  401. else {
  402. JOptionPane.showMessageDialog(this, "Can not found student code", "Error Message", JOptionPane.ERROR_MESSAGE);
  403. }
  404. }
  405. else if(event.getSource() == deletestdBtn) {
  406. String s = stdcodeText.getText();
  407. int n = searchStudent(std, s);
  408. if(n >= 3) {
  409. stdnameText.setText(std[n].getStudentName());
  410. stdsurnameText.setText(std[n].getStudentSurName());
  411. int ans = JOptionPane.showConfirmDialog(this, "Delete student", "Confirm", JOptionPane.YES_NO_OPTION);
  412. if(ans == 0) {
  413. std[n] = null;
  414. studentStr[n] = null;
  415. System.gc();
  416. stdTextArea.setText(readString(std));
  417. updateGui2();
  418. }
  419. clearTextField2();
  420. }
  421. else if(n >= 0) {
  422. JOptionPane.showMessageDialog(this, "Can not delete main student", "Error Message", JOptionPane.ERROR_MESSAGE);
  423. }
  424. else {
  425. JOptionPane.showMessageDialog(this, "Can not found student code", "Error Messgae", JOptionPane.ERROR_MESSAGE);
  426. }
  427. }
  428. else if(event.getSource() == clearstdBtn) {
  429. clearTextField2();
  430. }
  431. statusText.setText("Number Object : " + SubjectNew.getCount());
  432. stdstatusText.setText("Number Object : " + Student.getCount());
  433. }
  434.  
  435. public void resetBtn() {
  436. addstdBtn.setEnabled(true);
  437. addsubBtn.setEnabled(false);
  438. saveBtn.setEnabled(false);
  439. stdText.setText("");
  440. subTextArea.setText("");
  441. count = 0;
  442. money_total = 0;
  443. credit_total = 0;
  444. }
  445.  
  446. public int CheckArrayEmpty() {
  447. for(int n = 0; n < sub.length; n++)
  448. if(sub[n] == null) return(n);
  449. return(-1);
  450. }
  451.  
  452. public int CheckArrayEmpty2() {
  453. for(int n = 0; n < std.length; n++)
  454. if(std[n] == null) return(n);
  455. return(-1);
  456. }
  457.  
  458. public void clearTextField() {
  459. codeText.setText("");
  460. nameText.setText("");
  461. creditText.setText("");
  462. }
  463.  
  464. public void clearTextField2() {
  465. stdcodeText.setText("");
  466. stdnameText.setText("");
  467. stdsurnameText.setText("");
  468. }
  469.  
  470. public void updateGui() {
  471. for(int i=0;i<sub.length;i++) {
  472. if(sub[i] != null)
  473. subjectStr[i] = sub[i].toString();
  474. }
  475. subCombo.removeAllItems();
  476. for(int i=0;i<submax;i++) {
  477. if(subjectStr[i] != null)
  478. subCombo.addItem(subjectStr[i]);
  479. }
  480. }
  481.  
  482. public void updateGui2() {
  483. for(int i=0;i<std.length;i++) {
  484. if(std[i] != null)
  485. studentStr[i] = std[i].toString();
  486. }
  487. stdCombo.removeAllItems();
  488. for(int i=0;i<stdmax;i++) {
  489. if(studentStr[i] != null)
  490. stdCombo.addItem(studentStr[i]);
  491. }
  492. }
  493.  
  494. public int searchSubject(SubjectNew sub[], String s){
  495. for(int n = 0; n < sub.length; n++) {
  496. if(sub[n] != null)
  497. if(s.equals(sub[n].getSubjectCode()))
  498. return(n);
  499. }
  500. return(-1);
  501. }
  502.  
  503. public int searchStudent(Student std[], String s){
  504. for(int n = 0; n < std.length; n++) {
  505. if(std[n] != null)
  506. if(s.equals(std[n].getStudentCode()))
  507. return(n);
  508. }
  509. return(-1);
  510. }
  511.  
  512. public String readString(SubjectNew sub[]) {
  513. String str = "";
  514. for(int n = 0; n < sub.length; n++) {
  515. if(sub[n] != null)
  516. str += sub[n].toString() + "\n";
  517. }
  518. return(str);
  519. }
  520.  
  521. public String readString(Student std[]) {
  522. String str = "";
  523. for(int n = 0; n < std.length; n++) {
  524. if(std[n] != null)
  525. str += std[n].toString() + "\n";
  526. }
  527. return(str);
  528. }
  529.  
  530. public static void main(String[] args) {
  531. Lab9_1 lab9_1 = new Lab9_1();
  532. lab9_1.setSize(500, 880);
  533. lab9_1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  534. lab9_1.setVisible(true);
  535. }
  536. }
Add Comment
Please, Sign In to add comment