Advertisement
iemadxi

Final report2

Apr 24th, 2021
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.76 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 answer1,answer2,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 viewQues = 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. createText.setPromptText("Write Your Question Here");
  71. createAnswer1.setPromptText("Write Answer 1");
  72. createAnswer2.setPromptText("Write Answer 1");
  73.  
  74. Edit1 = new Button("Edit");
  75. Edit1.setDisable(true);
  76. Edit2 = new Button("Edit");
  77.  
  78. Delete = new Button("Delete");
  79. Delete.setDisable(true);
  80. cancelCreate = new Button("Cancel");
  81. cancelEdit = new Button("Cancel");
  82.  
  83. createCancel.getChildren().addAll(Create2,cancelCreate);
  84. editCancel.getChildren().addAll(Edit2,cancelEdit);
  85.  
  86. ans1 = new RadioButton("Answer 1");
  87. ans2 = new RadioButton("Answer 2");
  88. correctAnswre1.getChildren().addAll(new Label("Which answer is correct?"),ans1,ans2);
  89. createAnswers1.getChildren().addAll(createAnswer1, createAnswer2);
  90. createAnswers1.setAlignment(Pos.BOTTOM_CENTER);
  91. createButton.getChildren().addAll(createText ,createAnswers1,correctAnswre1,createCancel);
  92.  
  93. editAns1 = new RadioButton("Answer 1");
  94. editAns2 = new RadioButton("Answer 2");
  95. correctAnswre2.getChildren().addAll(new Label("Which answer is correct?"),editAns1,editAns2);
  96. createAnswers2.getChildren().addAll(new Label("Answer 1 "),editAnswer1,new Label("Answer 2 "),editAnswer2);
  97. createAnswers2.setAlignment(Pos.BOTTOM_CENTER);
  98. EditButton.getChildren().addAll(editText ,createAnswers2,correctAnswre2, editCancel);
  99.  
  100. correctOrNo = new Label();
  101. answer1 = new RadioButton("Answer 1");
  102. answer2 = new RadioButton("Answer 2");
  103. answers.getChildren().addAll(answer1 , answer2,correctOrNo);
  104.  
  105. answers.setAlignment(Pos.CENTER_LEFT);
  106.  
  107. buttons.getChildren().addAll(Create1 , Edit1, Delete);
  108. buttons.setAlignment(Pos.CENTER);
  109.  
  110.  
  111. //Add only questions to viewQuestions ArrayList to view them in the combo box
  112. for (int i =0 ; i < questions.size() ; i++) {
  113. String temp = questions.get(i);
  114. viewQuestions.add(temp.split(":")[0]);
  115. }
  116. combo.getItems().addAll(viewQuestions);
  117. combo.setValue("Choose a question");
  118.  
  119.  
  120. viewQues.getChildren().addAll(new Label("View Questions: "),combo);
  121. pane.setPadding(new Insets(10,10,10,10));
  122. pane.setTop(viewQues);
  123. pane.setBottom(buttons);
  124.  
  125. //--------------------------------------------------------------
  126. Create1.setOnAction(this);
  127. Create2.setOnAction(this);
  128. Delete.setOnAction(this);
  129. Edit1.setOnAction(this);
  130. Edit2.setOnAction(this);
  131. combo.setOnAction(this);
  132. answer1.setOnAction(this);
  133. answer2.setOnAction(this);
  134. ans1.setOnAction(this);
  135. ans2.setOnAction(this);
  136. editAns1.setOnAction(this);
  137. editAns2.setOnAction(this);
  138. cancelCreate.setOnAction(this);
  139. cancelEdit.setOnAction(this);
  140. scene = new Scene(pane, 450, 250);
  141. primaryStage.setScene(scene);
  142. primaryStage.show();
  143. }
  144.  
  145.  
  146. @Override
  147. public void handle(ActionEvent event){
  148.  
  149. //Create 1 button
  150. if (event.getSource() == Create1) {
  151. pane.setBottom(createButton);
  152. pane.setCenter(null);
  153. }
  154.  
  155. //Create 2 button
  156. if (event.getSource() == Create2) {
  157. int correctAnswer;
  158. if (ans1.isSelected())
  159. correctAnswer = 1;
  160. else
  161. correctAnswer = 2;
  162.  
  163. combo.getItems().add(createText.getText());
  164.  
  165. // Question:Answer1:Answer2:CorrectAnswer(Answer 1 or 2) ==> Add this form to questions ArrayList
  166. questions.add(createText.getText() + ":" + createAnswer1.getText() + ":" + createAnswer2.getText() + ":" + correctAnswer);
  167. viewQuestions.add(createText.getText());
  168. pane.setBottom(buttons);
  169. pane.setCenter(answers);
  170. answer1.setSelected(false);
  171. answer2.setSelected(false);
  172. correctOrNo.setText("");
  173. combo.setValue(createText.getText());
  174. writeQuesions();
  175.  
  176. }
  177.  
  178. //Delete button
  179.  
  180. if (event.getSource() == Delete) {
  181. String temp = combo.getValue();
  182. int pos = combo.getItems().indexOf(temp);
  183. questions.remove(pos);
  184. combo.getItems().remove(viewQuestions.get(pos));
  185. viewQuestions.remove(pos);
  186. writeQuesions();
  187. if(pane.getCenter() != null)
  188. pane.setCenter(null);
  189.  
  190. }
  191.  
  192.  
  193. //Edit 1 button
  194. if (event.getSource() == Edit1) {
  195.  
  196. pane.setBottom(EditButton);
  197. pane.setCenter(null);
  198. editText.setText(combo.getValue());
  199. editAnswer1.setText(answer1.getText());
  200. editAnswer2.setText(answer2.getText());
  201.  
  202.  
  203. }
  204.  
  205. //Edit 2 button
  206. if (event.getSource() == Edit2) {
  207. int pos = combo.getItems().indexOf(combo.getValue());
  208. String[] answer = questions.get(pos).split(":");
  209.  
  210. combo.getItems().set(pos, editText.getText());
  211. answer1.setText(editAnswer1.getText());
  212. answer2.setText(editAnswer2.getText());
  213.  
  214. int correctAnswer;
  215. if (editAns1.isSelected())
  216. correctAnswer = 1;
  217. else
  218. correctAnswer = 2;
  219.  
  220.  
  221. String question = editText.getText() + ":" + editAnswer1.getText() + ":" + editAnswer2.getText() + ":" + correctAnswer;
  222. questions.set(pos, question);
  223. pane.setBottom(buttons);
  224. pane.setCenter(answers);
  225. answer1.setSelected(false);
  226. answer2.setSelected(false);
  227. correctOrNo.setText("");
  228. writeQuesions();
  229.  
  230.  
  231. }
  232.  
  233. //Combo Box
  234. if (event.getSource() == combo) {
  235. try {
  236. if (combo.getValue() == null) {
  237. Edit1.setDisable(true);
  238. Delete.setDisable(true);
  239. pane.setCenter(null);
  240.  
  241. }
  242. int pos = combo.getItems().indexOf(combo.getValue());
  243. String[] answer = questions.get(pos).split(":");
  244. pane.setCenter(answers);
  245. answer1.setText(answer[1]);
  246. answer2.setText(answer[2]);
  247. answer1.setSelected(false);
  248. answer2.setSelected(false);
  249. correctOrNo.setText("");
  250. Edit1.setDisable(false);
  251. Delete.setDisable(false);
  252. }catch(Exception e) {}
  253. }
  254.  
  255. // View Answer 1
  256. if (event.getSource() == answer1) {
  257. try {
  258.  
  259. int pos = combo.getItems().indexOf(combo.getValue());
  260. String[] answer = questions.get(pos).split(":");
  261.  
  262. if(answer1.isSelected())
  263. answer2.setSelected(false);
  264.  
  265. if((Integer.parseInt(answer[3]) == 1 && answer1.isSelected()) || (Integer.parseInt(answer[3]) == 2 && answer2.isSelected()))
  266. correctOrNo.setText("Answer is correct");
  267. else {
  268. correctOrNo.setText("Wrong answer!");
  269. }
  270. if(answer1.isSelected() == false && answer2.isSelected() == false)
  271. correctOrNo.setText("");
  272.  
  273. }catch(Exception e){}
  274.  
  275.  
  276. }
  277.  
  278. // View Answer 2
  279. if (event.getSource() == answer2) {
  280. try {
  281. int pos = combo.getItems().indexOf(combo.getValue());
  282. String[] answer = questions.get(pos).split(":");
  283.  
  284. if(answer2.isSelected())
  285. answer1.setSelected(false);
  286.  
  287. if((Integer.parseInt(answer[3]) == 1 && answer1.isSelected()) || (Integer.parseInt(answer[3]) == 2 && answer2.isSelected()))
  288. correctOrNo.setText("Answer is correct");
  289. else {
  290. correctOrNo.setText("Wrong answer!");
  291. }
  292. if(answer1.isSelected() == false && answer2.isSelected() == false)
  293. correctOrNo.setText("");
  294.  
  295.  
  296. }catch(Exception e){}
  297.  
  298. }
  299.  
  300. // Create Answer 1
  301. if (event.getSource() == ans1) {
  302. if(ans1.isSelected())
  303. ans2.setSelected(false);
  304. }
  305.  
  306. // Create Answer 2
  307. if (event.getSource() == ans2) {
  308. if(ans2.isSelected())
  309. ans1.setSelected(false);
  310. }
  311.  
  312. // Edit Answer 1
  313. if (event.getSource() == editAns1) {
  314. if(editAns1.isSelected())
  315. editAns2.setSelected(false);
  316. }
  317.  
  318. // Edit Answer 2
  319. if (event.getSource() == editAns2) {
  320. if(editAns2.isSelected())
  321. editAns1.setSelected(false);
  322. }
  323.  
  324. // Cancel creating button
  325. if(event.getSource() == cancelCreate) {
  326. pane.setBottom(buttons);
  327.  
  328. }
  329.  
  330. // Cancel editing button
  331. if(event.getSource() == cancelEdit) {
  332. pane.setBottom(buttons);
  333. }
  334.  
  335. }
  336.  
  337.  
  338. //This method to write the questions in the binary file
  339. public static void writeQuesions() {
  340. try {
  341. DataOutputStream output = new DataOutputStream(new FileOutputStream("QuestionBank.dat"));
  342. for(int i = 0 ; i < questions.size() ; i++) {
  343. output.writeUTF(questions.get(i));;
  344. }
  345. }
  346. catch(Exception e) {}
  347. }
  348.  
  349.  
  350.  
  351. public static void main(String[] args) {
  352. launch(args);
  353. }
  354. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement