Advertisement
iemadxi

Final report

Apr 22nd, 2021
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.54 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import javafx.application.Application;
  3. import javafx.event.ActionEvent;
  4. import javafx.event.EventHandler;
  5. import javafx.geometry.Insets;
  6. import javafx.geometry.Pos;
  7. import javafx.scene.Scene;
  8. import javafx.scene.control.Button;
  9. import javafx.scene.control.ComboBox;
  10. import javafx.scene.control.Label;
  11. import javafx.scene.control.RadioButton;
  12. import javafx.scene.control.TextField;
  13. import javafx.scene.layout.BorderPane;
  14. import javafx.scene.layout.HBox;
  15. import javafx.scene.layout.VBox;
  16. import javafx.stage.Stage;
  17. import java.io.*;
  18.  
  19.  
  20. public class Main extends Application implements EventHandler<ActionEvent>{
  21. Scene scene;
  22. Label correctOrNo;
  23. Button Create1, Create2, Edit1, Edit2, Delete, cancelCreate,cancelEdit;
  24. RadioButton a1,a2,ans1,ans2,editAns1,editAns2;
  25.  
  26. TextField createText = new TextField();
  27. TextField createAnswer1 = new TextField();
  28. TextField createAnswer2 = new TextField();
  29.  
  30. TextField editText = new TextField();
  31. TextField editAnswer1 = new TextField();
  32. TextField editAnswer2 = new TextField();
  33.  
  34. VBox answers = new VBox(10);
  35. VBox createButton = new VBox(5);
  36. VBox EditButton = new VBox(5);
  37. HBox buttons = new HBox(10);
  38. HBox layout1 = new HBox(50);
  39. HBox createCancel = new HBox(5);
  40. HBox editCancel = new HBox(5);
  41. HBox createAnswers1 = new HBox(5);
  42. HBox createAnswers2 = new HBox(5);
  43. HBox correctAnswre1 = new HBox(5);
  44. HBox correctAnswre2 = new HBox(5);
  45.  
  46. BorderPane pane = new BorderPane();
  47. static ArrayList<String> questions = new ArrayList<>();
  48. static ArrayList<String> viewQuestions = new ArrayList<>();
  49.  
  50. private ComboBox<String> combo = new ComboBox<String>();
  51.  
  52. @Override
  53. public void start(Stage primaryStage) throws IOException {
  54. //To read old file contents and save it in the array list
  55. try {
  56. DataInputStream input = new DataInputStream(new FileInputStream("QuestionBank.dat"));
  57. String temp;
  58. while((temp = input.readUTF()) != null) {
  59. questions.add(temp);
  60. }
  61. }
  62. catch(Exception e) {}
  63.  
  64.  
  65.  
  66. primaryStage.setTitle("Bank Creator");
  67. Create1 = new Button("Create");
  68. Create2 = new Button("Create new question");
  69.  
  70. //Create1.setDisable(true);
  71. createText.setPromptText("Write Your Question Here");
  72. createAnswer1.setPromptText("Write Answer 1");
  73. createAnswer2.setPromptText("Write Answer 1");
  74.  
  75. Edit1 = new Button("Edit");
  76. Edit1.setDisable(true);
  77. Edit2 = new Button("Edit");
  78.  
  79. Delete = new Button("Delete");
  80. Delete.setDisable(true);
  81. cancelCreate = new Button("Cancel");
  82. cancelEdit = new Button("Cancel");
  83.  
  84. createCancel.getChildren().addAll(Create2,cancelCreate);
  85. editCancel.getChildren().addAll(Edit2,cancelEdit);
  86.  
  87. ans1 = new RadioButton("Answer 1");
  88. ans2 = new RadioButton("Answer 2");
  89. correctAnswre1.getChildren().addAll(new Label("Which answer is correct?"),ans1,ans2);
  90. createAnswers1.getChildren().addAll(createAnswer1, createAnswer2);
  91. createAnswers1.setAlignment(Pos.BOTTOM_CENTER);
  92. createButton.getChildren().addAll(createText ,createAnswers1,correctAnswre1,createCancel);
  93.  
  94. editAns1 = new RadioButton("Answer 1");
  95. editAns2 = new RadioButton("Answer 2");
  96. correctAnswre2.getChildren().addAll(new Label("Which answer is correct?"),editAns1,editAns2);
  97. createAnswers2.getChildren().addAll(new Label("Answer 1 "),editAnswer1,new Label("Answer 2 "),editAnswer2);
  98. createAnswers2.setAlignment(Pos.BOTTOM_CENTER);
  99. EditButton.getChildren().addAll(editText ,createAnswers2,correctAnswre2, editCancel);
  100.  
  101. correctOrNo = new Label();
  102. a1 = new RadioButton("Answer 1");
  103. a2 = new RadioButton("Answer 2");
  104. answers.getChildren().addAll(a1 , a2,correctOrNo);
  105.  
  106. answers.setAlignment(Pos.CENTER_LEFT);
  107.  
  108. buttons.getChildren().addAll(Create1 , Edit1, Delete);
  109. buttons.setAlignment(Pos.CENTER);
  110.  
  111.  
  112. //Add only questions to viewQuestions ArrayList to view them in the combo box
  113. for (int i =0 ; i < questions.size() ; i++) {
  114. String temp = questions.get(i);
  115. viewQuestions.add(temp.split(":")[0]);
  116. }
  117. combo.getItems().addAll(viewQuestions);
  118. combo.setValue("Choose a question");
  119.  
  120.  
  121. layout1.getChildren().addAll(new Label("View Questions: "),combo);
  122. pane.setPadding(new Insets(10,10,10,10));
  123. pane.setTop(layout1);
  124. pane.setBottom(buttons);
  125.  
  126. //--------------------------------------------------------------
  127. Create1.setOnAction(this);
  128. Create2.setOnAction(this);
  129. Delete.setOnAction(this);
  130. Edit1.setOnAction(this);
  131. Edit2.setOnAction(this);
  132. combo.setOnAction(this);
  133. a1.setOnAction(this);
  134. a2.setOnAction(this);
  135. ans1.setOnAction(this);
  136. ans2.setOnAction(this);
  137. editAns1.setOnAction(this);
  138. editAns2.setOnAction(this);
  139. cancelCreate.setOnAction(this);
  140. cancelEdit.setOnAction(this);
  141. scene = new Scene(pane, 450, 250);
  142. primaryStage.setScene(scene);
  143. primaryStage.show();
  144. }
  145.  
  146.  
  147. @Override
  148. public void handle(ActionEvent event){
  149.  
  150. //Create 1 button
  151. if (event.getSource() == Create1) {
  152. pane.setBottom(createButton);
  153. pane.setCenter(null);
  154. }
  155.  
  156. //Create 2 button
  157. if (event.getSource() == Create2) {
  158. int correctAnswer;
  159. if (ans1.isSelected())
  160. correctAnswer = 1;
  161. else
  162. correctAnswer = 2;
  163.  
  164. combo.getItems().add(createText.getText());
  165. questions.add(createText.getText() + ":" + createAnswer1.getText() + ":" + createAnswer2.getText() + ":" + correctAnswer);
  166. viewQuestions.add(createText.getText());
  167. pane.setBottom(buttons);
  168. pane.setCenter(answers);
  169. a1.setSelected(false);
  170. a2.setSelected(false);
  171. correctOrNo.setText("");
  172. combo.setValue(createText.getText());
  173. writeQuesions();
  174.  
  175. }
  176.  
  177. //Delete button
  178.  
  179. if (event.getSource() == Delete) {
  180.  
  181.  
  182.  
  183. String temp = combo.getValue();
  184. int pos = combo.getItems().indexOf(temp);
  185. questions.remove(pos);
  186. combo.getItems().remove(viewQuestions.get(pos));
  187. viewQuestions.remove(pos);
  188. writeQuesions();
  189. if(pane.getCenter() != null)
  190. pane.setCenter(null);
  191.  
  192.  
  193.  
  194.  
  195. }
  196.  
  197.  
  198. //Edit 1 button
  199. if (event.getSource() == Edit1) {
  200.  
  201. pane.setBottom(EditButton);
  202. pane.setCenter(null);
  203. editText.setText(combo.getValue());
  204. editAnswer1.setText(a1.getText());
  205. editAnswer2.setText(a2.getText());
  206.  
  207.  
  208. }
  209.  
  210. //Edit 2 button
  211. if (event.getSource() == Edit2) {
  212. int pos = combo.getItems().indexOf(combo.getValue());
  213. String[] answer = questions.get(pos).split(":");
  214.  
  215. combo.getItems().set(pos, editText.getText());
  216. a1.setText(editAnswer1.getText());
  217. a2.setText(editAnswer2.getText());
  218.  
  219. int correctAnswer;
  220. if (editAns1.isSelected())
  221. correctAnswer = 1;
  222. else
  223. correctAnswer = 2;
  224.  
  225.  
  226. String question = editText.getText() + ":" + editAnswer1.getText() + ":" + editAnswer2.getText() + ":" + correctAnswer;
  227. questions.set(pos, question);
  228. pane.setBottom(buttons);
  229. pane.setCenter(answers);
  230. a1.setSelected(false);
  231. a2.setSelected(false);
  232. correctOrNo.setText("");
  233. writeQuesions();
  234.  
  235.  
  236. }
  237.  
  238. //Combo Box
  239. if (event.getSource() == combo) {
  240. try {
  241. if (combo.getValue() == null) {
  242. Edit1.setDisable(true);
  243. Delete.setDisable(true);
  244. pane.setCenter(null);
  245.  
  246. }
  247. int pos = combo.getItems().indexOf(combo.getValue());
  248. String[] answer = questions.get(pos).split(":");
  249. pane.setCenter(answers);
  250. a1.setText(answer[1]);
  251. a2.setText(answer[2]);
  252. a1.setSelected(false);
  253. a2.setSelected(false);
  254. correctOrNo.setText("");
  255. Edit1.setDisable(false);
  256. Delete.setDisable(false);
  257. }catch(Exception e) {}
  258. }
  259.  
  260. // View Answer 1
  261. if (event.getSource() == a1) {
  262. try {
  263.  
  264. int pos = combo.getItems().indexOf(combo.getValue());
  265. String[] answer = questions.get(pos).split(":");
  266.  
  267. if(a1.isSelected())
  268. a2.setSelected(false);
  269.  
  270. if((Integer.parseInt(answer[3]) == 1 && a1.isSelected()) || (Integer.parseInt(answer[3]) == 2 && a2.isSelected()))
  271. correctOrNo.setText("Answer is correct");
  272. else {
  273. correctOrNo.setText("Wrong answer!");
  274. }
  275. if(a1.isSelected() == false && a2.isSelected() == false)
  276. correctOrNo.setText("");
  277.  
  278. }catch(Exception e){}
  279.  
  280.  
  281. }
  282.  
  283. // View Answer 2
  284. if (event.getSource() == a2) {
  285. try {
  286. int pos = combo.getItems().indexOf(combo.getValue());
  287. String[] answer = questions.get(pos).split(":");
  288.  
  289. if(a2.isSelected())
  290. a1.setSelected(false);
  291.  
  292. if((Integer.parseInt(answer[3]) == 1 && a1.isSelected()) || (Integer.parseInt(answer[3]) == 2 && a2.isSelected()))
  293. correctOrNo.setText("Answer is correct");
  294. else {
  295. correctOrNo.setText("Wrong answer!");
  296. }
  297. if(a1.isSelected() == false && a2.isSelected() == false)
  298. correctOrNo.setText("");
  299.  
  300.  
  301. }catch(Exception e){}
  302.  
  303. }
  304.  
  305. // Create Answer 1
  306. if (event.getSource() == ans1) {
  307. if(ans1.isSelected())
  308. ans2.setSelected(false);
  309. }
  310.  
  311. // Create Answer 2
  312. if (event.getSource() == ans2) {
  313. if(ans2.isSelected())
  314. ans1.setSelected(false);
  315. }
  316.  
  317. // Edit Answer 1
  318. if (event.getSource() == editAns1) {
  319. if(editAns1.isSelected())
  320. editAns2.setSelected(false);
  321. }
  322.  
  323. // Edit Answer 2
  324. if (event.getSource() == editAns2) {
  325. if(editAns2.isSelected())
  326. editAns1.setSelected(false);
  327. }
  328.  
  329. if(event.getSource() == cancelCreate) {
  330. pane.setBottom(buttons);
  331.  
  332. }
  333.  
  334. if(event.getSource() == cancelEdit) {
  335. pane.setBottom(buttons);
  336. }
  337.  
  338.  
  339.  
  340. }
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358. //This method to write the questions in the binary file
  359. public static void writeQuesions() {
  360. try {
  361. DataOutputStream output = new DataOutputStream(new FileOutputStream("QuestionBank.dat"));
  362. for(int i = 0 ; i < questions.size() ; i++) {
  363. output.writeUTF(questions.get(i));;
  364. }
  365. }
  366. catch(Exception e) {}
  367. }
  368.  
  369.  
  370.  
  371. public static void main(String[] args) {
  372. launch(args);
  373. }
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement