งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

การเขียนโปรแกรมประยุกต์ใช้งาน

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "การเขียนโปรแกรมประยุกต์ใช้งาน"— ใบสำเนางานนำเสนอ:

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! แล้ววนถามเลขที่นั่งใหม่


ดาวน์โหลด ppt การเขียนโปรแกรมประยุกต์ใช้งาน

งานนำเสนอที่คล้ายกัน


Ads by Google