Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.10 KB | None | 0 0
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7.  
  8. import javax.swing.JOptionPane;
  9.  
  10. import javafx.animation.FadeTransition;
  11. import javafx.application.Application;
  12. import javafx.application.Platform;
  13. import javafx.event.ActionEvent;
  14. import javafx.event.EventHandler;
  15. import javafx.geometry.HPos;
  16. import javafx.geometry.Insets;
  17. import javafx.geometry.Orientation;
  18. import javafx.geometry.Pos;
  19. import javafx.scene.Scene;
  20. import javafx.scene.control.Button;
  21. import javafx.scene.control.ComboBox;
  22. import javafx.scene.control.DatePicker;
  23. import javafx.scene.control.Label;
  24. import javafx.scene.control.Menu;
  25. import javafx.scene.control.MenuBar;
  26. import javafx.scene.control.MenuItem;
  27. import javafx.scene.control.ScrollBar;
  28. import javafx.scene.control.ScrollPane;
  29. import javafx.scene.control.TextField;
  30. import javafx.scene.image.Image;
  31. import javafx.scene.image.ImageView;
  32. import javafx.scene.layout.BorderPane;
  33. import javafx.scene.layout.GridPane;
  34. import javafx.scene.layout.StackPane;
  35. import javafx.scene.paint.Color;
  36. import javafx.scene.shape.Polygon;
  37. import javafx.scene.text.Font;
  38. import javafx.scene.text.FontPosture;
  39. import javafx.scene.text.FontWeight;
  40. import javafx.scene.transform.Rotate;
  41. import javafx.stage.Stage;
  42. import javafx.util.Duration;
  43.  
  44. // scene 1 - home , scene2 -menu , scene 3 - create booking , scene 4 - animation discount, scene 5 - cancel booking
  45. public class Spa extends Application {
  46. ImageView spaLogo,menuPhoto,fileView,menuView,bookingView;
  47. Menu spaMenu,bookingMenu,fileMenu;
  48. MenuBar menuBar;
  49. Image pic, pic2, filePic, menuPic, bookingPic;
  50. BorderPane pane,menuPane;
  51. Button home, submitBtn,deleteBtn, homeScene2, homescene4, homescene5;
  52. GridPane bookingPane,cancelPane;
  53. StackPane drawPane;
  54. Stage window;
  55. Scene scene, scene2,scene3, scene4,scene5;
  56. MenuItem homeMenuItem,exitMenuItem, spaMenuItem,spaDiscount, createBooking,cancelBooking;
  57. TextField firstNameInput,lastNameInput,emailInput,phoneInput,streetInput,aptInput,cityInput,zipInput;
  58. TextField timeInput,firstNameCancel,lastNameCancel, idBookKey;
  59. DatePicker bookingDatePicker; //bookingTimePicker
  60. ComboBox<String> treatmentComboBox;
  61. int key, bookingKey;
  62.  
  63. @Override // Override the start method in the Application class
  64. public void start(Stage primaryStage) {
  65. window = primaryStage;
  66. initializeMenuBar();
  67. setPanes();
  68.  
  69.  
  70. // scenes for switching
  71. scene = new Scene(pane, 850, 700);
  72. scene2 = new Scene(menuPane, 850, 700);
  73. scene3 = new Scene(bookingPane,850, 700);
  74. scene4 = new Scene(drawPane,850, 700);
  75. scene5 = new Scene(cancelPane,850, 700);
  76. window.setTitle("The Best Spa in Westchester County"); // Set the stage title
  77. window.setScene(scene); // Place the scene in the stage
  78. window.show(); // Display the stage
  79. }
  80.  
  81. /**
  82. * The main method is only needed for the IDE with limited
  83. * JavaFX support. Not needed for running from the command line.
  84. */
  85.  
  86.  
  87. public void initializeMenuBar() {
  88.  
  89. //images for the menu's
  90. filePic = new Image(getClass().getResourceAsStream("file.jpg"));
  91. fileView = new ImageView(filePic); // create the home page for the spa
  92. fileView.setFitWidth(15);
  93. fileView.setFitHeight(15);
  94.  
  95. menuPic = new Image(getClass().getResourceAsStream("spa2.png"));
  96. menuView = new ImageView(menuPic); // create the home page for the spa
  97. menuView.setFitWidth(15);
  98. menuView.setFitHeight(15);
  99.  
  100. bookingPic = new Image(getClass().getResourceAsStream("pen2.png"));
  101. bookingView = new ImageView(bookingPic); // create the home page for the spa
  102. bookingView.setFitWidth(15);
  103. bookingView.setFitHeight(15);
  104.  
  105. menuBar = new MenuBar();
  106. // First menu and menu items
  107. fileMenu = new Menu("File");
  108.  
  109. homeMenuItem = new MenuItem("Home"); // need to add action listener to return to home
  110. exitMenuItem = new MenuItem("Exit"); // The add on for the menu item "File"
  111. fileMenu.getItems().addAll(homeMenuItem, exitMenuItem );
  112. // set first menu action events
  113. exitMenuItem.setOnAction(actionEvent -> Platform.exit());
  114. homeMenuItem.setOnAction(e -> menuClicked(e));
  115. // Second Menu
  116. spaMenu = new Menu("Spa Menu"); // Heading File Menus
  117. spaMenuItem = new MenuItem("Menu");
  118. spaDiscount = new MenuItem("Special Discount");
  119. spaMenu.getItems().addAll(spaMenuItem,spaDiscount);
  120. //set second menu action events
  121. spaMenuItem.setOnAction(e -> menuClicked(e));
  122. spaDiscount.setOnAction(e -> menuClicked(e));
  123.  
  124.  
  125. bookingMenu = new Menu("Bookings"); // Heading File Menus
  126. createBooking = new MenuItem("Create a Booking");
  127. cancelBooking = new MenuItem("Cancel a Booking");
  128. bookingMenu.getItems().addAll(createBooking,cancelBooking);
  129. // set third menu item action event
  130. createBooking.setOnAction(e -> menuClicked(e));
  131. cancelBooking.setOnAction(e -> menuClicked(e));
  132.  
  133.  
  134. menuBar.getMenus().addAll(fileMenu,spaMenu, bookingMenu);
  135. fileMenu.setGraphic(fileView);//setting the cameraIcon to cameraItem
  136. spaMenu.setGraphic(menuView);
  137. bookingMenu.setGraphic(bookingView);
  138.  
  139. }
  140. public void menuClicked(ActionEvent e) {
  141. if (e.getSource()==spaMenuItem)
  142. window.setScene(scene2);
  143. else if(e.getSource()==createBooking)
  144. window.setScene(scene3);
  145. else if(e.getSource()==spaDiscount)
  146. window.setScene(scene4);
  147. else if(e.getSource()==cancelBooking)
  148. window.setScene(scene5);
  149. else
  150. window.setScene(scene);
  151. }
  152. public void setPanes(){
  153. //pane for the home page
  154. pane = new BorderPane();
  155. pic = new Image("file:///C:/Users/Trevi/Desktop/Java/Spa/images/logo.jpg");
  156. spaLogo = new ImageView(); // create the home page for the spa
  157. spaLogo.setImage(pic);
  158. // place the spas home page and the menu bar on the pane
  159. menuBar.prefWidthProperty().bind(window.widthProperty());
  160. menuBar.setStyle("-fx-background-color: FFFFFF;");
  161. spaLogo.fitWidthProperty().bind(window.widthProperty());
  162. spaLogo.fitHeightProperty().bind(window.heightProperty());
  163. pane.setTop(menuBar);
  164. pane.setCenter(spaLogo);
  165.  
  166. //pane for the spa menu
  167. menuPane = new BorderPane();
  168. pic2 = new Image("file:///C:/Users/Trevi/Desktop/Java/Spa/images/menu.jpg");
  169. menuPhoto = new ImageView(); // create the home page for the spa
  170. menuPhoto.setImage(pic2);
  171. home = new Button("Home");
  172. home.setOnAction(new EventHandler<ActionEvent>() {
  173. @Override // Override the handle method
  174. public void handle(ActionEvent e) {
  175. window.setScene(scene); }
  176. });
  177. ScrollBar s1 = new ScrollBar();
  178. s1.setMax(500);
  179. s1.setMin(0);
  180. s1.setValue(100);
  181. s1.setUnitIncrement(30);
  182. s1.setBlockIncrement(35);
  183. s1.setOrientation(Orientation.VERTICAL);
  184.  
  185. //menuPane.rateProperty().bind(sbSpeed.valueProperty());
  186. // place the spas home page and the menu bar on the pane
  187.  
  188. menuPhoto.fitWidthProperty().bind(window.widthProperty());
  189. menuPhoto.fitHeightProperty().bind(window.heightProperty());
  190. menuPane.setCenter(menuPhoto);
  191. menuPane.setTop(home);
  192. menuPane.setRight(s1);
  193.  
  194. //pane for creating a booking
  195. bookingPane = new GridPane();
  196. bookingPane.setAlignment(Pos.CENTER);
  197. bookingPane.setPadding(new Insets(11, 12, 13, 14));
  198. bookingPane.setHgap(5);
  199. bookingPane.setVgap(5);
  200. bookingPane.setStyle("-fx-background-color: E39394;");
  201.  
  202. // need to create names for the textfields to extract the information for mysql
  203. firstNameInput= new TextField();
  204. lastNameInput= new TextField();
  205. emailInput= new TextField();
  206. phoneInput= new TextField();
  207. streetInput= new TextField();
  208. aptInput= new TextField();
  209. cityInput= new TextField();
  210. zipInput= new TextField();
  211. timeInput = new TextField();
  212. bookingDatePicker = new DatePicker();
  213. //bookingTimePicker = new DatePicker().
  214.  
  215. treatmentComboBox = new ComboBox<String>();
  216. treatmentComboBox.getItems().addAll(
  217. "30 Minute Massage",
  218. "60 Minute Massage",
  219. "90 Minute Massage",
  220. "Wax Brows",
  221. "Regular Facial",
  222. "Wax Back",
  223. "Wax Legs",
  224. "Wax Arms",
  225. "Wax Underarms",
  226. "Recharge Facial",
  227. "Diamond Peel",
  228. "Glycolic Treatment",
  229. "Cleansing Facial",
  230. "Exfoliation",
  231. "Regular Manicure",
  232. "Pedicure",
  233. "Gel Manicure"
  234. );
  235. // place nodes in the pane
  236. bookingPane.add(new Label("First Name:"), 0,0);
  237. bookingPane.add(firstNameInput, 1,0);
  238. bookingPane.add(new Label("Last Name:"), 0,1);
  239. bookingPane.add(lastNameInput, 1,1);
  240. bookingPane.add(new Label("Phone Number:"), 0,2);
  241. bookingPane.add(phoneInput, 1,2);
  242. bookingPane.add(new Label("Email Address:"), 0,3);
  243. bookingPane.add(emailInput, 1,3);
  244. bookingPane.add(new Label("Type of Treatment:"), 0,4);
  245. bookingPane.add(treatmentComboBox, 1,4);
  246. bookingPane.add(new Label("Street Address:"), 2,0);
  247. bookingPane.add(streetInput, 3,0);
  248. bookingPane.add(new Label("Apt,Suite,etc(optional):"), 2,1);
  249. bookingPane.add(aptInput, 3,1);
  250. bookingPane.add(new Label("City"), 2,2);
  251. bookingPane.add(cityInput, 3,2);
  252. bookingPane.add(new Label("Zipcode"), 2,3);
  253. bookingPane.add(zipInput, 3,3);
  254. bookingPane.add(new Label("Date"), 2,4);
  255. bookingPane.add(bookingDatePicker, 3,4);
  256. bookingPane.add(new Label("Time:"), 2,5);
  257. bookingPane.add(timeInput, 3,5);
  258. submitBtn = new Button("Submit");
  259. submitBtn.setOnAction(e-> {
  260. connectInsertSQL();
  261. });
  262. bookingPane.add(submitBtn,3, 6);
  263. homeScene2 = new Button("Home");
  264. homeScene2.setOnAction(e-> {
  265. window.setScene(scene);
  266. });
  267. bookingPane.add(homeScene2,4,6 );
  268. GridPane.setHalignment(submitBtn, HPos.RIGHT);
  269.  
  270. // set the pane for the pow animation
  271.  
  272. // Create a scene and place a button in the scene
  273.  
  274. drawPane = new StackPane();
  275. //BorderPane borderPane = new BorderPane();
  276.  
  277. Polygon p = new Polygon();
  278. Polygon p2 = new Polygon();
  279.  
  280. p.getPoints().addAll(new Double[] {100.0, 170.0, 170.0, 200.0, 160.0, 140.0, 220.0, 100.0, 160.0, 60.0, 170.0, 0.0, 100.0, 30.0,50.0, -20.0, 50.0, 220.0 });
  281. p.setFill(Color.PINK);
  282. p2.getPoints().addAll(new Double[] {120.0, 170.0, 50.0, 200.0, 60.0, 140.0, 0.0, 100.0, 60.0, 60.0, 50.0, 0.0, 120.0, 30.0, 170.0, -20.0, 170.0, 220.0 });
  283. p2.setFill(Color.PINK);
  284. p.getTransforms().add(new Rotate(180,90.0,100.0));
  285. p2.getTransforms().add(new Rotate(180,125.0,100.0));
  286.  
  287. Label label = new Label(" Weekly Special:\n"
  288. + "$35 for 60 Minute Massage\n" + " CODE: 30MM");
  289. label.setFont(Font.font("Times New Roman", FontWeight.BOLD, FontPosture.ITALIC, 20));
  290. drawPane.getChildren().add(p);
  291. drawPane.getChildren().add(p2);
  292. drawPane.getChildren().add(label);
  293. drawPane.setStyle("-fx-background-color: #FAFAD2;");
  294.  
  295. //Apply a fade transition to circle
  296. FadeTransition ft = new FadeTransition(Duration.millis(10000), p);
  297. ft.setFromValue(0.0);
  298. ft.setToValue(1.0);
  299. ft.play();
  300.  
  301. //Apply a fade transition to circle
  302. FadeTransition ft2 = new FadeTransition(Duration.millis(10000), p2);
  303. ft2.setFromValue(0.0);
  304. ft2.setToValue(1.0);
  305. ft2.play();
  306.  
  307. //Apply a fade to the label
  308. FadeTransition ft3 = new FadeTransition(Duration.millis(10000), label);
  309. ft3.setFromValue(0.0);
  310. ft3.setToValue(1.0);
  311. ft3.play();
  312. // have the home button to go back to the home page
  313. // homescene5 = new Button("Home");
  314. // homescene5.setOnAction(new EventHandler<ActionEvent>() {
  315. // @Override // Override the handle method
  316. // public void handle(ActionEvent e) {
  317. // window.setScene(scene); }
  318. // });
  319. // borderPane.setCenter(drawPane);
  320. // borderPane.setBottom(homescene5);
  321.  
  322. // the cancel pane
  323. firstNameCancel= new TextField();
  324. lastNameCancel = new TextField();
  325. idBookKey = new TextField();
  326.  
  327. cancelPane = new GridPane();
  328. cancelPane.setAlignment(Pos.CENTER);
  329. cancelPane.setPadding(new Insets(11, 12, 13, 14));
  330. cancelPane.setHgap(5);
  331. cancelPane.setVgap(5);
  332. cancelPane.setStyle("-fx-background-color: E39394;");
  333.  
  334. cancelPane.add(new Label(" Please enter your name for the reservation you would like to cancel "), 1,0);
  335. cancelPane.add(new Label("First Name:"), 0,2);
  336. cancelPane.add(firstNameCancel, 1,2);
  337. cancelPane.add(new Label("Last Name:"), 0,3);
  338. cancelPane.add(lastNameCancel, 1,3);
  339. cancelPane.add(new Label("Booking ID Number:"), 0,4);
  340. cancelPane.add(idBookKey, 1,4);
  341. deleteBtn = new Button("Cancel Reservation");
  342. deleteBtn.setOnAction(e-> {
  343. connectDeleteSQL();
  344. });
  345. cancelPane.add(deleteBtn,0, 5);
  346. homescene5 = new Button("Home");
  347. homescene5.setOnAction(e-> {
  348. window.setScene(scene);
  349. });
  350. cancelPane.add(homescene5,1, 5);
  351. GridPane.setHalignment(cancelPane, HPos.RIGHT);
  352. }
  353. private void connectInsertSQL() {
  354. String dbURL = "jdbc:mysql://localhost:3306/myspa";
  355. String username = "root";
  356. String password = "Trevibum29";
  357. try (Connection conn = DriverManager.getConnection(dbURL, username, password)) {
  358. //string for the first sql query
  359. String sql = "insert into customer (first_name, last_name, address_line1,address_line2,city,zipcode,phone_number,email)"
  360. + " values (?, ?, ?, ?, ?, ?, ?, ? )";
  361.  
  362. // String values for first table:customer
  363. String firstName = firstNameInput.getText();
  364. String lastName = lastNameInput.getText();
  365. String street = streetInput.getText();
  366. String apt = aptInput.getText();
  367. String city = cityInput.getText();
  368. String zip = zipInput.getText();
  369. String phone = phoneInput.getText();
  370. String email = emailInput.getText();
  371. //timeInput,treatmentComboBox;
  372. // need to connect the statement and also conect the generated key for the primary key of customer
  373. PreparedStatement statement= conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
  374. // the input statements for the database based on the textfields
  375. statement.setString(1, firstName);
  376. statement.setString(2, lastName);
  377. statement.setString(3, street);
  378. statement.setString(4, apt);
  379. statement.setString(5, city);
  380. statement.setString(6, zip);
  381. statement.setString(7, phone);
  382. statement.setString(8, email);
  383.  
  384. statement.executeUpdate(); // always need to execute update
  385. ResultSet keys = statement.getGeneratedKeys();
  386.  
  387. if (keys.next()) {
  388. key =keys.getInt(1); }
  389. // string query for second table: treatments
  390. String sql2 = "insert into bookings (Customer_idCustomer,Date_booking, time,Treatments_idTreatments)"
  391. + " values (?,?,?,?)";
  392. // string values for second table: treatments
  393. String treatment = treatmentComboBox.getValue();
  394.  
  395. if (treatment.equals("30 Minute Massage"))
  396. treatment = "M3";
  397. else if (treatment .equals("60 Minute Massage"))
  398. treatment = "M6";
  399. else if (treatment.equals("90 Minute Massage"))
  400. treatment = "M9";
  401. else if (treatment.equals("Wax Brows"))
  402. treatment = "BR";
  403. else if (treatment.equals("Regular Facial"))
  404. treatment = "FA";
  405. else if (treatment.equals("Wax Back"))
  406. treatment = "BA";
  407. else if (treatment.equals("Wax Legs"))
  408. treatment = "LE";
  409. else if (treatment.equals("Wax Arms"))
  410. treatment = "AR";
  411. else if (treatment.equals("Wax Underarms"))
  412. treatment = "UN";
  413. else if (treatment.equals("Diamond Peel"))
  414. treatment = "DP";
  415. else if (treatment.equals("Recharge Facial"))
  416. treatment = "RF";
  417. else if (treatment.equals("Glycolic Treatment"))
  418. treatment = "GT";
  419. else if (treatment.equals("Cleansing Facial"))
  420. treatment = "CF";
  421. else if (treatment.equals("Exfoliation"))
  422. treatment = "EX";
  423. else if (treatment.equals("Regular Manicure"))
  424. treatment = "MA";
  425. else if (treatment.equals("Pedicure"))
  426. treatment = "PE";
  427. else if (treatment.equals("Gel Manicure"))
  428. treatment = "GM";
  429. else
  430. treatment = "null";
  431.  
  432. String time = timeInput.getText();
  433. // connect the second datatbase table its query
  434. statement = conn.prepareStatement(sql2, Statement.RETURN_GENERATED_KEYS);
  435.  
  436.  
  437. // the input statements for the database based on the textfields
  438. statement.setInt(1,key); // the primmary key of the previous table entered into the forign key for booking table
  439. statement.setString(2,((TextField)bookingDatePicker.getEditor()).getText());
  440. statement.setString(3,time);
  441. statement.setString(4,treatment);
  442.  
  443.  
  444. int rowsInserted = statement.executeUpdate(); // always need to execute update
  445. ResultSet bookingKeys = statement.getGeneratedKeys();
  446. if (rowsInserted > 0) {
  447.  
  448. if (bookingKeys.next()) {
  449. bookingKey =bookingKeys.getInt(1); }
  450. //System.out.println("A new user was inserted successfully!");
  451. JOptionPane.showMessageDialog(null, "Thank-you, your reservation has been booked, your booking ID is " + bookingKey , "Verification", JOptionPane.INFORMATION_MESSAGE);
  452. }
  453. } catch (SQLException ex) {
  454. ex.printStackTrace(); }
  455. }
  456. private void connectDeleteSQL() {
  457. String dbURL = "jdbc:mysql://localhost:3306/myspa";
  458. String username = "root";
  459. String password = "Trevibum29";
  460. try (Connection conn = DriverManager.getConnection(dbURL, username, password)) {
  461. String deletesql = "delete from bookings where idBooking=?";
  462. //String firstNameC = firstNameCancel.getText();
  463. PreparedStatement statement = conn.prepareStatement(deletesql);
  464. int bookKey = Integer.parseInt(idBookKey.getText());
  465. statement.setInt(1,bookKey);
  466. //statement.setString(2,firstNameC);
  467. int delete = statement.executeUpdate();
  468. if (delete > 0) {
  469. //System.out.println("Your reservation has been cancelled, Thank-you!");
  470. JOptionPane.showMessageDialog(null, "Thank-you, your reservation has been cancelled", "Verification", JOptionPane.INFORMATION_MESSAGE);
  471. }
  472. } catch (SQLException ex) {
  473. ex.printStackTrace(); }
  474. }
  475.  
  476. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement