ppt
F.cpp
#include#include #include "F.h" #define fshow "C:\\Users\\pcuser\\Desktop\\show.txt" //表演檔案的位置 #define fuser "C:\\Users\\pcuser\\Desktop\\user.txt" //使用者檔案的位置 #define fmanager "C:\\Users\\pcuser\\Desktop\\manager.txt" //管理者檔案的位置 char accountOfBoss[MAX_codeOfBoss] = "zaqxsw1h"; //老闆的帳號 char passwordOfBoss[MAX_codeOfBoss] = "zaqxsw1henry"; //老闆的密碼 S Show[MAX_show + 1]; //宣告Show的陣列 U User[MAX_user + 1]; //宣告User的陣列 M Manager[MAX_manager + 1]; //宣告Manage的陣列 int show_num; //活動數目 int user_num; //使用者數目 int manager_num; //管理者數目 int main() { FILE *fp_show; //宣告活動資料檔 FILE *fp_user; //宣告使用者資料檔 FILE *fp_manager; //宣告管理者資料檔 errno_t err_show; errno_t err_user; errno_t err_manager; int choice; //選項 //開啟活動資料檔 err_show = fopen_s(&fp_show, fshow, "r"); if (err_show != 0) printf("File can't be open!\n"); else { show_num = loadSHOW(fp_show); //載入活動資料 fclose(fp_show); //關閉檔案 } //開啟使用者資料檔 err_user = fopen_s(&fp_user, fuser, "r"); if (err_user != 0) printf("File can't be open!\n"); else { user_num = loadUSER(fp_user); //載入使用者資料 fclose(fp_user); //關閉檔案 } //開啟管理者資料檔 err_manager = fopen_s(&fp_manager, fmanager, "r"); if (err_user != 0) printf("File can't be open!\n"); else { manager_num = loadMANAGE(fp_manager); //載入管理者資料 fclose(fp_manager); //關閉檔案 } //主函式 while (1) { main_menu(); scanf_s("%d", &choice); if (choice == 0) { printf("離開系統\n"); break; } switch (choice) { case 1: choice_boss(); break; case 2: choice_manager(); break; case 3: choice_user(); break; default: printf("\n輸入錯誤\n"); break; } system("pause"); } //開啟活動資料檔並將更新後的資料寫入 err_show = fopen_s(&fp_show, fshow, "w"); if (err_show != 0) printf("File can't be open!\n"); else { saveshow(fp_show); //儲存活動資料 fclose(fp_show); //關閉檔案 } //開啟使用者資料檔並將更新後的資料寫入 err_user = fopen_s(&fp_user, fuser, "w"); if (err_user != 0) printf("File can't be open!\n"); else { saveuser(fp_user); //儲存使用者資料 fclose(fp_user); //關閉檔案 } //開啟管理者資料檔並將更新後的資料寫入 err_manager = fopen_s(&fp_manager, fmanager, "w"); if (err_manager != 0) printf("File can't be open!\n"); else { savemanager(fp_manager); //儲存使用者資料 fclose(fp_manager); //關閉檔案 } system("pause"); } //讀取活動資料檔,並回傳活動數目 int loadSHOW(FILE *fp) { int count = 0; char title[1000]; fgets(title, 1000, fp); while (!feof(fp)) { count++; fscanf_s(fp, "%d", &Show[count].num); fscanf_s(fp, "%s", &Show[count].day, 6); fscanf_s(fp, "%s", &Show[count].name, 11); fscanf_s(fp, "%s", &Show[count].man, 11); fscanf_s(fp, "%s", &Show[count].place, 11); fscanf_s(fp, "%d", &Show[count].seat_A); fscanf_s(fp, "%d", &Show[count].max_A); fscanf_s(fp, "%d", &Show[count].price_A); fscanf_s(fp, "%d", &Show[count].seat_B); fscanf_s(fp, "%d", &Show[count].max_B); fscanf_s(fp, "%d", &Show[count].price_B); fscanf_s(fp, "%d", &Show[count].seat_C); fscanf_s(fp, "%d", &Show[count].max_C); fscanf_s(fp, "%d", &Show[count].price_C); } return count - 1; } //讀取使用者資料檔,並回傳使用者數目 int loadUSER(FILE *fp) { int count = 0, i; char title[1000]; fgets(title, 1000, fp); while (!feof(fp)) { count++; fscanf_s(fp, "%d", &User[count].index); fscanf_s(fp, "%s", &User[count].name, 11); fscanf_s(fp, "%d", &User[count].code); for (i = 1; i <= show_num; i++) //使用者的訂票情形,第一個欄位(i)表示活動的編號, { //第二個欄位的第一個數代表A座位,第二個數代表B座位,第三個代表C座位。 fscanf_s(fp, "%d", &User[count].ticket[i][1]); //第i場show的A座位的訂票情形 fscanf_s(fp, "%d", &User[count].ticket[i][2]); //第i場show的B座位的訂票情形 fscanf_s(fp, "%d", &User[count].ticket[i][3]); //第i場show的C座位的訂票情形 } } return count - 1; } //讀取管理者資料檔,並回傳使用者數目 int loadMANAGE(FILE *fp) { int count = 0; char title[128]; fgets(title, 128, fp); while (!feof(fp)) { count++; fscanf_s(fp, "%d", &Manager[count].num); fscanf_s(fp, "%s", &Manager[count].name, 11); fscanf_s(fp, "%d", &Manager[count].code); } return count - 1; } //主選單 void main_menu() { system("cls"); printf("********************歡迎來到1546售票系統*********************\n"); printf("0.離開\n"); printf("1.老闆登入\n"); printf("2.管理者登入\n"); printf("3.一般使用者登入\n"); printf("*************************************************************\n"); printf("請輸入您的選擇:"); } //老闆選單 void boss_menu() { system("cls"); printf("老闆您好,歡迎使用本系統\n"); printf("***************老闆選單*******************\n"); printf("0.離開\n"); printf("1.查詢管理者\n"); printf("2.新增管理者\n"); printf("3.刪除管理者\n"); printf("******************************************\n"); printf("請輸入您的選擇:"); } //管理者選單 void manager_menu(int manage_id) { system("cls"); printf("%s你好,歡迎使用本系統\n", Manager[manage_id].name); printf("***************管理者選單*******************\n"); printf("0.離開\n"); printf("1.查詢活動\n"); printf("2.查詢使用者\n"); printf("3.新增使用者\n"); printf("4.刪除使用者\n"); printf("5.新增活動\n"); printf("6.刪除活動\n"); printf("********************************************\n"); printf("請輸入您的選擇:"); } //使用者選單 void user_menu(int user_id) { system("cls"); printf("%s你好,歡迎使用本系統\n", User[user_id].name); printf("***************使用者選單*******************\n"); printf("0.離開\n"); printf("1.查詢活動\n"); printf("2.訂票\n"); printf("3.退票\n"); printf("4.訂票情形\n"); printf("********************************************\n"); printf("請輸入您的選擇:"); } //老闆選項 void choice_boss() { char boss_account[MAX_codeOfBoss]; //老闆帳號 char boss_password[MAX_codeOfBoss]; //老闆密碼 int i,j; char temp; //小技巧:將\n吃掉,避免輸入時發生錯誤 system("cls"); printf("*****************老闆登入*******************\n"); printf("請輸入帳號:"); scanf_s("%c", &temp); i = 0; while ((boss_account[i] = getchar()) != '\n') i++; for (j = i; j < MAX_codeOfBoss; j++) { boss_account[j] = '\0'; } printf("請輸入密碼:"); i = 0; while ((boss_password[i] = getchar()) != '\n') i++; for (j = i; j < MAX_codeOfBoss; j++) { boss_password[j] = '\0'; } i = 0; while (1) { if (boss_account[i] != accountOfBoss[i]) { printf("\n帳號錯誤\n"); break; } if (boss_password[i] != passwordOfBoss[i]) { printf("\n密碼錯誤\n"); break; } if (i == MAX_codeOfBoss-1) { boss(); break; } i++; } system("pause"); } //管理者選項 void choice_manager() { int manage_id; //管理者編號 int manage_code; //管理者密碼 int i; system("cls"); printf("*****************管理者登入*******************\n"); printf("請輸入管理者編號:"); scanf_s("%d", &manage_id); for (i = 1; i <= manager_num; i++) { if (manage_id == Manager[i].num) { printf("%s你好,請輸入密碼:", Manager[i].name); scanf_s("%d", &manage_code); if (manage_code == Manager[i].code) { manager(i); break; } else printf("\n密碼錯誤!!!\n"); } else if (i == manager_num) printf("\n無此編號!!!\n"); } system("pause"); } //使用者選項 void choice_user() { int user_id; //會員編號 int user_code; //會員密碼 int i; system("cls"); printf("*****************使用者登入*******************\n"); printf("請輸入會員編號:"); scanf_s("%d", &user_id); for (i = 1; i <= user_num; i++) { if (user_id == User[i].index) { printf("%s你好,請輸入密碼:", User[i].name); scanf_s("%d", &user_code); if (user_code == User[i].code) { user(i); break; } else printf("\n密碼錯誤!!!\n"); } else if (i == user_num) printf("\n無此編號\n"); } system("pause"); } //老闆副程式 void boss() { int choice; int i; while (1) { boss_menu(); scanf_s("%d", &choice); if (choice == 0) { printf("離開系統\n"); break; } switch (choice) { case 1: searchmanager(); break; case 2: searchmanager(); addnewmanager(); searchmanager(); break; case 3: searchmanager(); deletemanager(); searchmanager(); break; default: printf("\n錯誤選項\n"); break; } system("pause"); } } //查詢管理者程式 void searchmanager() { int i; printf("***********************管理者相關資訊表*******************************\n"); printf("\n%4s %10s %10s\n", "Num", "Name", "Code"); for (i = 1; i <= manager_num; i++) { printf("%4d %10s %10d\n" , Manager[i].num, Manager[i].name, Manager[i].code); } printf("\n************************************************************************\n"); } //新增管理者程式 void addnewmanager() { char temp; //小技巧:將\n吃掉,避免輸入時發生錯誤 int i, j; if (manager_num + 1>MAX_manager) printf("\n\n已超出管理者數量上限,無法新增新管理者\n"); else { printf("\n\n****************輸入新管理者的相關資料******************\n"); printf("管理者編號(<=4個數字):"); scanf_s("%d", &(Manager[manager_num + 1].num)); scanf_s("%c", &temp); printf("管理者名稱(<=10個字元):"); i = 0; while ((Manager[manager_num + 1].name[i] = getchar()) != '\n') i++; Manager[manager_num + 1].name[i] = '\0'; printf("管理者密碼(<=10個數字):"); scanf_s("%d", &(Manager[manager_num + 1].code)); } manager_num++; printf("\n新增成功!!\n"); } //刪除管理者程式 void deletemanager() { int choice; int i; int index; printf("\n\n請輸入欲刪除的管理者編號\n"); scanf_s("%d", &choice); for (i = 1; i <= manager_num; i++) { if (Manager[i].num == choice) { index = i; break; } else index = 0; } if (index != 0) { for (i = index; i <= manager_num; i++) { Manager[i] = Manager[i + 1]; } manager_num--; } else printf("無此編號\n"); } //管理者副程式 void manager(int manager_id) { int choice; int i; while (1) { manager_menu(manager_id); scanf_s("%d", &choice); if (choice == 0) { printf("離開系統\n"); break; } switch (choice) { case 1: searchshow(); break; case 2: searchuser(); break; case 3: searchuser(); addnewuser(); searchuser(); break; case 4: searchuser(); deleteuser(); searchuser(); break; case 5: searchshow(); appendshow(); searchshow(); break; case 6: searchshow(); deleteshow(); searchshow(); break; default: printf("\n錯誤選項\n"); break; } system("pause"); } } //查詢活動程式 void searchshow() { int i; printf("***********************活動相關資訊表*******************************\n"); for (i = 1; i <= show_num; i++) { printf("\n%4s %5s %10s %10s %10s\n", "Num", "Day", "NameOfShow", "Performer", "Place"); printf("%4d %5s %10s %10s %10s\n\n" , Show[i].num, Show[i].day, Show[i].name, Show[i].man, Show[i].place); printf("活動%d的訂位資訊:\n", Show[i].num); printf("%15s %15s %15s\n", "NumOfSeatA", "MaxOfSeatA", "PriceOfSeatA"); printf("%15d %15d %15d\n" , Show[i].seat_A, Show[i].max_A, Show[i].price_A); printf("%15s %15s %15s\n", "NumOfSeatB", "MaxOfSeatB", "PriceOfSeatB"); printf("%15d %15d %15d\n" , Show[i].seat_B, Show[i].max_B, Show[i].price_B); printf("%15s %15s %15s\n", "NumOfSeatC", "MaxOfSeatC", "PriceOfSeatC"); printf("%15d %15d %15d\n" , Show[i].seat_C, Show[i].max_C, Show[i].price_C); printf("\n"); printf("******************************************************************************\n"); } } //查詢使用者程式 void searchuser() { int i, j; printf("***********************使用者相關資訊表*******************************\n"); for (i = 1; i <= user_num; i++) { printf("\n%4s %10s %10s\n", "Num", "NameOfUser", "CodeOfUser"); printf("%4d %10s %10d\n\n" , User[i].index, User[i].name, User[i].code); for (j = 1; j <= show_num; j++) { printf("活動%d的訂位情形:\n", Show[j].num); printf(" SeatAOfShow%2d SeatBOfShow%2d SeatCOfShow%2d\n", Show[j].num, Show[j].num, Show[j].num); printf(" %13d %13d %13d\n", User[i].ticket[j][1], User[i].ticket[j][2], User[i].ticket[j][3]); } printf("\n************************************************************************\n"); } } //新增使用者程式 void addnewuser() { char temp; //小技巧:將\n吃掉,避免輸入時發生錯誤 int i, j; if (user_num + 1>MAX_user) printf("\n\n已超出使用者數量上限,無法新增新使用者\n"); else { printf("\n\n****************輸入新使用者的相關資料******************\n"); printf("使用者編號(<=4個數字):"); scanf_s("%d", &(User[user_num + 1].index)); scanf_s("%c", &temp); printf("使用者名稱(<=10個字元):"); i = 0; while ((User[user_num + 1].name[i] = getchar()) != '\n') i++; User[user_num + 1].name[i] = '\0'; printf("使用者密碼(<=10個數字):"); scanf_s("%d", &(User[user_num + 1].code)); for (i = 1; i <= show_num; i++) { for (j = 1; j <= 3; j++) User[user_num + 1].ticket[i][j] = 0; } } user_num++; printf("\n新增成功!!\n"); } //刪除使用者程式 void deleteuser() { int choice; int i; int index; printf("\n\n請輸入欲刪除的使用者編號\n"); scanf_s("%d", &choice); for (i = 1; i <= user_num; i++) { if (User[i].index == choice) { index = i; break; } else index = 0; } if (index != 0) { for (i = index; i <= user_num; i++) { User[i] = User[i + 1]; } user_num--; } else printf("無此編號\n"); } //新增活動的程式 void appendshow() { char temp;//小技巧:將\n吃掉,避免輸入時發生錯誤 int i; if (show_num + 1>MAX_show) printf("\n\n已超出活動數量上限,無法新增新活動\n"); else { printf("\n\n****************輸入新活動的相關資料******************\n"); printf("活動編號(<=4個數字):"); scanf_s("%d", &(Show[show_num + 1].num)); scanf_s("%c", &temp); printf("活動日期:"); i = 0; while ((Show[show_num + 1].day[i] = getchar()) != '\n') i++; Show[show_num + 1].day[i] = '\0'; printf("活動名稱(<=10個字元):"); i = 0; while ((Show[show_num + 1].name[i] = getchar()) != '\n') i++; Show[show_num + 1].name[i] = '\0'; printf("活動表演者(<=10個字元):"); i = 0; while ((Show[show_num + 1].man[i] = getchar()) != '\n') i++; Show[show_num + 1].man[i] = '\0'; printf("活動地點(<=10個字元):"); i = 0; while ((Show[show_num + 1].place[i] = getchar()) != '\n') i++; Show[show_num + 1].place[i] = '\0'; Show[show_num + 1].seat_A = 0; printf("第一區座位上限:"); scanf_s("%d", &(Show[show_num + 1].max_A)); printf("第一區座位票價:"); scanf_s("%d", &(Show[show_num + 1].price_A)); Show[show_num + 1].seat_B = 0; printf("第二區座位上限:"); scanf_s("%d", &(Show[show_num + 1].max_B)); printf("第二區座位票價:"); scanf_s("%d", &(Show[show_num + 1].price_B)); Show[show_num + 1].seat_C = 0; printf("第三區座位上限:"); scanf_s("%d", &(Show[show_num + 1].max_C)); printf("第三區座位票價:"); scanf_s("%d", &(Show[show_num + 1].price_C)); } show_num++; printf("\n新增成功!!\n"); printf("\n\n展示活動相關資訊表\n"); system("pause"); } //刪除活動的程式 void deleteshow() { int choice; int i; int index; printf("\n\n請輸入欲刪除的活動編號\n"); scanf_s("%d", &choice); for (i = 1; i <= show_num; i++) { if (Show[i].num == choice) { index = i; break; } else index = 0; } if (index != 0) { for (i = index; i <= show_num; i++) { Show[i] = Show[i + 1]; } show_num--; } else printf("無此編號\n"); } //使用者副程式 void user(int user_id) { int choice; while (1) { user_menu(user_id); scanf_s("%d", &choice); if (choice == 0) { printf("離開系統\n"); break; } switch (choice) { case 1: searchshow(); break; case 2: searchshow(); addticket(user_id); break; case 3: searchshow(); cancelticket(user_id); break; case 4: situationOfTicket(user_id); break; default: printf("\n輸入錯誤\n"); break; } system("pause"); } } //訂票副程式 void addticket(int user_id) { int choice; while (1) { printf("\n\n***************訂票程式*********************\n"); printf("0.回使用者選單\n"); printf("1.訂票\n"); printf("********************************************\n"); printf("請輸入您的選擇:"); scanf_s("%d", &choice); if (choice == 0) break; else if (choice == 1) { addticket2(user_id); } else printf("\n輸入錯誤\n"); } } //訂票2副程式 void addticket2(int user_id) { int show_id, ticket, locate; int i, index; printf("欲訂票之活動編號:"); scanf_s("%d", &show_id); for (i = 1; i <= show_num; i++) { if (Show[i].num == show_id) { index = i; break; } else index = 0; } if (index != 0) { printf("\n\n***************分區訂票*********************\n"); printf("1.第一區,%d元\n", Show[index].price_A); printf("2.第二區,%d元\n", Show[index].price_B); printf("3.第三區,%d元\n", Show[index].price_C); printf("********************************************\n"); printf("請輸入您的選擇:"); scanf_s("%d", &locate); switch (locate) { case 1: printf("預定的張數:"); scanf_s("%d", &ticket); if (ticket + Show[index].seat_A <= Show[index].max_A) { Show[index].seat_A += ticket; User[user_id].ticket[index][1] += ticket; printf("\n訂票成功\n"); } else printf("\n訂票失敗\n"); break; case 2: printf("預定的張數:"); scanf_s("%d", &ticket); if (ticket + Show[index].seat_B <= Show[index].max_B) { Show[index].seat_B += ticket; User[user_id].ticket[index][2] += ticket; printf("\n訂票成功\n"); } else printf("\n訂票失敗\n"); break; case 3: printf("預定的張數:"); scanf_s("%d", &ticket); if (ticket + Show[index].seat_C <= Show[index].max_C) { Show[index].seat_C += ticket; User[user_id].ticket[index][3] += ticket; printf("\n訂票成功\n"); } else printf("\n訂票失敗\n"); break; } } else printf("無此編號\n"); } //取消訂票副程式 void cancelticket(int user_id) { int choice; while (1) { printf("\n\n***************取消訂票*********************\n"); printf("0.回使用者選單\n"); printf("1.取消訂票\n"); printf("********************************************\n"); printf("請輸入您的選擇:"); scanf_s("%d", &choice); if (choice == 0) break; else if (choice == 1) { cancelticket2(user_id); } else printf("\n輸入錯誤\n"); } } //取消訂票2副程式 void cancelticket2(int user_id) { int show_id, locate, ticket; int i, index; printf("欲取消訂票之活動編號:"); scanf_s("%d", &show_id); for (i = 1; i <= show_num; i++) { if (Show[i].num == show_id) { index = i; break; } else index = 0; } if (index != 0) { printf("\n\n*************分區取消訂票*******************\n"); printf("1.第一區已定%d張\n", User[user_id].ticket[index][1]); printf("2.第二區已定%d張\n", User[user_id].ticket[index][2]); printf("3.第三區已定%d張\n", User[user_id].ticket[index][3]); printf("********************************************\n"); printf("請輸入您的選擇:"); scanf_s("%d", &locate); switch (locate) { case 1: printf("預取消的張數:"); scanf_s("%d", &ticket); if (User[user_id].ticket[index][1] - ticket >= 0) { Show[index].seat_A -= ticket; User[user_id].ticket[index][1] -= ticket; printf("\n取消訂票成功\n"); } else printf("\n取消訂票失敗\n"); break; case 2: printf("預取消的張數:"); scanf_s("%d", &ticket); if (User[user_id].ticket[index][2] - ticket >= 0) { Show[index].seat_B -= ticket; User[user_id].ticket[index][2] -= ticket; printf("\n取消訂票成功\n"); } else printf("\n取消訂票失敗\n"); break; case 3: printf("預取消的張數:"); scanf_s("%d", &ticket); if (User[user_id].ticket[index][3] - ticket >= 0) { Show[index].seat_C -= ticket; User[user_id].ticket[index][3] -= ticket; printf("\n取消訂票成功\n"); } else printf("\n取消訂票失敗\n"); break; } } } //使用者的訂票情形 void situationOfTicket(int user_id) { int i; printf("\n\n***************訂票情形*********************\n"); for (i = 1; i <= show_num; i++) { printf("活動%d:第一區%2d張,第二區%2d張,第三區%2d張\n", Show[i].num, User[user_id].ticket[i][1], User[user_id].ticket[i][2], User[user_id].ticket[i][3]); } } //儲存活動資料 void saveshow(FILE *fp) { int i; fprintf(fp, "%4s %5s %10s %10s %10s %15s %15s %15s %15s %15s %15s %15s %15s %15s\n", "Num", "Day", "NameOfShow", "Performer", "Place" , "NumOfSeatA", "MaxOfSeatA", "PriceOfSeatA" , "NumOfSeatB", "MaxOfSeatB", "PriceOfSeatB" , "NumOfSeatC", "MaxOfSeatC", "PriceOfSeatC"); for (i = 1; i <= show_num; i++) { fprintf(fp, "%4d %5s %10s %10s %10s %15d %15d %15d %15d %15d %15d %15d %15d %15d\n" , Show[i].num, Show[i].day, Show[i].name, Show[i].man, Show[i].place , Show[i].seat_A, Show[i].max_A, Show[i].price_A , Show[i].seat_B, Show[i].max_B, Show[i].price_B , Show[i].seat_C, Show[i].max_C, Show[i].price_C); } } //儲存使用者資料 void saveuser(FILE *fp) { int i, j; fprintf(fp, "%4s %10s %10s", "Num", "NameOfUser", "CodeOfUser"); for (i = 1; i <= show_num; i++) { fprintf(fp, " SeatAOfShow%d SeatBOfShow%d SeatCOfShow%d", Show[i].num, Show[i].num, Show[i].num); } fprintf(fp, "\n"); for (i = 1; i <= user_num; i++) { fprintf(fp, "%4d %10s %10d", User[i].index, User[i].name, User[i].code); for (j = 1; j <= show_num; j++) { fprintf(fp, " %13d %13d %13d", User[i].ticket[j][1], User[i].ticket[j][2], User[i].ticket[j][3]); } fprintf(fp, "\n"); } } //儲存管理者資料 void savemanager(FILE *fp) { int i; fprintf(fp, "%4s %10s %10s\n", "Num", "Name", "Code"); for (i = 1; i <= manager_num; i++) { fprintf(fp, "%4d %10s %10d\n" , Manager[i].num, Manager[i].name, Manager[i].code); } }
F.h
#include#define MAX_show 10 //活動的最大數 #define MAX_user 10 //使用者的最大數 #define MAX_manager 10 //管理者的最大數 #define MAX_codeOfBoss 20 //老闆的帳號和密碼的最大長度 struct SHOW //活動或表演的結構宣告 { int num; //編號 char day[6]; //日期 char name[11]; //活動名稱 char man[11]; //表演者 char place[11]; //活動地點 int seat_A; //種類A的座位 int max_A; //種類A座位的上限 int price_A; //種類A的票價 int seat_B; //種類B的座位 int max_B; //種類B座位的上限 int price_B; //種類B的票價 int seat_C; //種類C的座位 int max_C; //種類C座位的上限 int price_C; //種類C的票價 }; typedef struct SHOW S; struct USER //使用者的結構宣告 { int index; //編號 char name[11]; //使用者名稱 int code; //密碼 int ticket[MAX_show + 1][4]; //訂票情形,第一個欄位表示活動的編號 }; //,第二個欄位的第一個數代表A座位 typedef struct USER U; //,第二個數代表B座位,第三個代表C座位。 struct MANAGER //管理者的結構宣告 { int num; //編號 char name[11]; //管理者名稱 int code; //密碼 }; typedef struct MANAGER M; int loadSHOW(FILE *fp); //讀取活動資料檔,並回傳活動數目 int loadUSER(FILE *fp); //讀取使用者資料檔,並回傳使用者數目 int loadMANAGE(FILE *fp); //讀取管理者資料檔,並回傳管理者數目 void main_menu(); //主選單 void boss_menu(); //老闆選單 void manager_menu(int manager_id); //管理者選單 void user_menu(int user_id); //使用者選單 void choice_boss(); //老闆選項 void choice_manager(); //管理者選項 void choice_user(); //使用者選項 void boss(); //老闆副程式 void searchmanager(); //查詢管理者程式 void addnewmanager(); //新增管理者程式 void deletemanager(); //刪除管理者程式 void manager(int manage_id); //管理者副程式 void searchshow(); //查詢活動程式 void searchuser(); //查詢使用者程式 void addnewuser(); //新增使用者程式 void deleteuser(); //刪除使用者程式 void appendshow(); //新增活動的程式 void deleteshow(); //刪除活動的程式 void user(int user_id); //使用者副程式 void addticket(int user_id); //訂票副程式 void addticket2(int user_id); //訂票2副程式 void cancelticket(int user_id); //取消訂票副程式 void cancelticket2(int user_id); //取消訂票2副程式 void situationOfTicket(int user_id); //使用者的訂票情形 void saveshow(FILE *fp); //儲存活動資料 void saveuser(FILE *fp); //儲存使用者資料 void savemanager(FILE *fp); //儲存管理者資料
執行檔
管理者資料
使用者資料
活動資料
4. 介紹/解說的影片
沒有留言:
張貼留言