ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
การเขียนโปรแกรมประยุกต์ใช้งาน
Engr201 Computer Programming for Engineers Faculty of Engineering Chiang Mai University
2
การเขียนโปรแกรมประยุกต์ใช้งาน
โปรแกรมจองที่นั่งบนเครื่องบิน โปรแกรมนี้จะแสดง (1) แผนผังที่นั่งทั้งหมดบนเครื่องให้ผู้ใช้ โดยจะระบุ [ ] คือที่นั่งว่าง และ [x] คือที่นั่งไม่ว่าง (2) จำนวนที่นั่งว่างทั้งหมด (3) หมายเลขที่นั่งว่างทั้งหมด โปรแกรมจะถามผู้ใช้ให้ระบุเลขที่นั่งที่ต้องการ โปรแกรมจะวนทำงานไปเรื่อยๆ จนกว่าจะใส่เลขที่นั่ง 0 หมายถึงออกจากโปรแกรม
3
ตัวอย่างการทำงาน แสดงแผนผังที่นั่งทั้งหมด
แสดงจำนวนที่นั่งที่เหลือทั้งหมด แสดงหมายเลขที่นั่งที่เหลือทั้งหมด ให้ผู้ใช้เลือกที่นั่งที่ต้องการ กด y เพื่อ confirm การเลือก ข้อมูลรอบใหม่ที่ 3F ถูกจองไปแล้ว 0 เพื่อออกจากโปรแกรม
4
โครงสร้างข้อมูลหลัก ในโปรแกรมนี้จะมีการใช้ Array แบบ 2 มิติของข้อมูลแบบ Integer สำหรับการเก็บข้อมูลเกี่ยวกับที่นั่งว่า ว่างหรือไม่ว่าง กำหนดให้ 0 = ว่าง และ 1 = ไม่ว่าง โดยกำหนดให้เป็นตัวแปรชนิด Global กำหนดนอก main() เพื่อให้ทุกฟังก์ชันเห็นตัวแปรนี้เหมือนกัน กำหนดให้มี 9 rows, 6 columns #define NUM_ROW 9 #define NUM_COL 6 int seat[NUM_ROW][NUM_COL];
5
ฟังก์ชันหลัก ฟังก์ชัน show_seat() สำหรับการแสดงแผนผังที่นั่ง
ฟังก์ชัน reserve_ticket() สำหรับการจองที่นั่ง ฟังก์ชัน list_avail_seat() สำหรับแสดงเลขที่นั่งที่ว่างทั้งหมด ฟังก์ชัน find_num_avail_seat() สำหรับแสดงจำนวนที่นั่งที่ว่างทั้งหมด ฟังก์ชัน init_data() สำหรับสุ่มที่นั่งไม่ว่าง (*กำหนดให้ Prob=0.8) เพื่อทดสอบการทำงานของโปรแกรม
6
Source Code Source Code ของโปรแกรมนี้สามารถ Download ได้ที่
หมายเหตุ : โปรแกรมนี้ยังทำงานได้ไม่สมบูรณ์ ให้ นศ. ทำความเข้าใจการทำงานของโปรแกรมในส่วนต่างๆ ก่อน แล้วจะเห็นว่าโปรแกรมยังไม่สมบูรณ์อย่างไร
7
ฟังก์ชัน show_seat() สำหรับการแสดงแผนผังที่นั่ง
void show_seat() { int i,j; char tmp; printf(" %4c%4c%4c %4c%4c%4c\n",'A','B','C','D','E','F'); for(i=0;i<NUM_ROW;i++) { printf("%3d ", i+1); for(j=0;j<NUM_COL;j++) { if (seat[i][j]==1) tmp = 'X'; else tmp = ' '; printf("[%c] ", tmp); if (j==2) { printf(" "); } printf("\n");
8
ฟังก์ชัน reserve_ticket() สำหรับการจองที่นั่ง (1/2)
void reserve_ticket() { char seat_string[10]; char ans; int row; int col; do { show_seat(); printf("Number of available seats=%d\n", num_avail_seat); list_avail_seat(); printf("Enter seat number (0 to exit): "); scanf("%s", seat_string); if ((strlen(seat_string)!=1)||(seat_string[0]!='0')) { row = seat_string[0] - '1'; col = seat_string[1] - 'A';
9
ฟังก์ชัน reserve_ticket() สำหรับการจองที่นั่ง (2/2)
if ((row<0)||(row>=NUM_ROW)||(col<0)||(col>=NUM_COL)) { printf("Invalid seat number, please enter again!\n"); } else { printf("Reservation for seat %s, confirm (y/n)?", seat_string); scanf("\n%c", &ans); } while (((row<0)||(row>NUM_ROW)||(col<0)||(col>NUM_COL)||(ans!='y'))&&((strlen(seat_string)!=1)||(seat_string[0]!='0'))); if ((strlen(seat_string)!=1)||(seat_string[0]!='0')) { seat[row][col] = 1; num_avail_seat = find_num_avail_seat(); } while ((strlen(seat_string)!=1)||(seat_string[0]!='0'));
10
ฟังก์ชัน list_avail_seat() สำหรับแสดงเลขที่นั่งที่ว่างทั้งหมด
void list_avail_seat() { int i,j; printf("Available seats: "); for(i=0;i<NUM_ROW;i++) { for(j=0;j<NUM_COL;j++) { if (seat[i][j] == 0) printf("%c%c ",('1'+i),('A'+j)); } printf("\n");
11
ฟังก์ชัน find_num_avail_seat() สำหรับแสดงจำนวนที่นั่งที่ว่างทั้งหมด
int find_num_avail_seat() { int i,j,k=0; for(i=0;i<NUM_ROW;i++) { for(j=0;j<NUM_COL;j++) { if (seat[i][j] == 0) k++; } return k;
12
ฟังก์ชัน init_data() สำหรับสุ่มที่นั่งไม่ว่าง (. กำหนดให้ Prob=0
void init_data() { int i,j; int a; srand(time(NULL)); for(i=0;i<NUM_ROW;i++) { for(j=0;j<NUM_COL;j++) { a = rand()%100; if (a>=20) { // 80% occupied seat[i][j] = 1; } num_avail_seat = find_num_avail_seat();
13
ส่วนต้นของโปรแกรม และ main()
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <string.h> #define NUM_ROW 9 #define NUM_COL 6 void init_data(); // function prototype void show_seat(); void reserve_ticket(); void list_avail_seat(); int find_num_avail_seat(); int seat[NUM_ROW][NUM_COL]; int num_avail_seat = NUM_ROW * NUM_COL; void main() { init_data(); reserve_ticket(); }
14
ทดลองรันโปรแกรมนี้ ทดลอง Download โปรแกรมนี้ และรันโปรแกรมเพื่อพิจารณาหาความไม่สมบูรณ์
15
ความไม่สมบูรณ์ของโปรแกรมที่ต้องแก้ไข
โปรแกรมนี้ยอมให้เลือกที่นั่งที่ไม่ว่างได้ (ซึ่งไม่ควรให้เลือกได้) ให้แก้ไขให้โปรแกรมไม่ยอมให้เลือกที่นั่งที่ว่าง โดยให้แสดงข้อความว่า The selected seat is not available. Please enter again! แล้ววนถามเลขที่นั่งใหม่
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.