永发信息网

编写管理程序

答案:2  悬赏:0  手机版
解决时间 2021-04-30 17:58
  • 提问者网友:夢醒日落
  • 2021-04-30 03:57

你会编酒店管理的程序吗

教教我

最佳答案
  • 五星知识达人网友:患得患失的劫
  • 2021-04-30 05:24
是多大的酒店啊?程序代码可能在多个行?
全部回答
  • 1楼网友:英雄的欲望
  • 2021-04-30 06:29

这是本人第一学期的项目,用VC++6.0编的,不知道对你有没有帮助。呵呵

#include <stdio.h> #include <stdlib.h> #include <string.h>

#define LEN sizeof(GUEST) #define FILENAME_LEN 10 #define NULL 0 #define FORMAT "\n%20d%20s%20d\n" #define TRUE 1 #define FALSE 0

struct guest { int number; char name[10]; int money; struct guest *pNext; };

typedef struct guest GUEST;

GUEST *Creat(void); GUEST *Delect(GUEST *pHeadGet, int numSelect); GUEST *ReadList(void );

char WelcomeAndTip(void);

void Insert(GUEST *pHeadGet, int numInsert); void Show(GUEST *pHeadGet); void Max_Print(GUEST *pHeadGet); void ListSave(GUEST *pHeadGet); void FoundAndPrint(GUEST *pHeadGet, int number); void Update(GUEST *pHeadGet, int number, int newMoney);

void main() { GUEST *pHead = NULL; char select; int client, number;

SELECT: select = WelcomeAndTip(); switch(select) { case 'I' :case 'i' : if (pHead == NULL) { pHead = Creat(); system("cls"); Show(pHead); } else { system("cls"); printf("\n链表已经从文件读入存在\n"); } break;

case 'D' :case 'd' : system("cls"); Show(pHead); printf("\n请输入您要删除的客号:"); scanf("%d", &client); pHead = Delect(pHead, client); system("cls"); Show(pHead); break; case 'S' :case 's' : printf("请输入您要插入记录的id(不要超过当前链表的长度):"); scanf("%d", &client); Insert(pHead, client); system("cls"); Show(pHead); break;

case 'Q' :case 'q': system("cls"); Show(pHead); break;

case 'M' :case 'm': Max_Print(pHead); break;

case 'B' :case 'b': ListSave(pHead); break;

case 'R' :case 'r': pHead = ReadList(); system("cls"); Show(pHead); break;

case 'F' :case 'f': system("cls"); Show(pHead); printf("\n请输入您要查询的客号:"); scanf("%d", &client); system("cls"); FoundAndPrint(pHead, client); break;

case 'C':case 'c': system("cls"); Show(pHead); printf("\n请输入要宾客的客号和结算金额(用空格隔开):"); scanf("%d%d", &number, &client); system("cls");

Update(pHead, number, client); break; default : system("pause"); system("cls"); printf("\n请重新选择\n"); break; } goto SELECT;

} char WelcomeAndTip(void) { int client; char select;

printf("\t\t\t 酒店管理(文件操作)\n"); for( client =0; client < 80; client++) { printf("="); } printf("\n"); printf("I:创建\tD:删除\tQ:显示\tS:插入\tM:最大\tB:保存\tR:读入\tF:查找\tC:结算\n"); for( client =0; client < 80; client++) { printf("="); } printf("\n请输入您要进行的操作:"); scanf("%c", &select); return select; } void Show(GUEST *pHeadGet) { GUEST *pClient; pClient = pHeadGet;

if(pClient == NULL) { printf("\n数据为空没有数据可以打印\n"); } else { printf("\t\t客号\t\t姓名\t\t\t金额"); do { printf(FORMAT, pClient->number, pClient->name, pClient->money); pClient = pClient->pNext; }while(pClient != NULL); } } GUEST *Creat(void) { GUEST *pHead = NULL, *pOne = NULL, *pTwo = NULL; int numberTemp = 1; pOne = (GUEST *) malloc(LEN); if(pOne == NULL) { printf("\n开辟不成功请重试\n"); } else { pTwo = pOne; pHead = pOne; pTwo->pNext = NULL; printf("\n请输入第%d个的客号,金额,用空格相隔,以0 0结束输入:", numberTemp); scanf("%d%d", &pOne->number, &pOne->money); _flushall(); printf("\n请输入第%d个宾客的名字: ", numberTemp); gets(pOne->name); }

while (pOne->number != 0) { pTwo = pOne;//在开辟之前,前应该给后面的指针赋予前面的指针 pOne = (GUEST *) malloc(LEN); numberTemp++; printf("\n请输入第%d个的客号,金额,用空格相隔:", numberTemp); scanf("%d%d", &pOne->number, &pOne->money); _flushall(); printf("\n请输入第%d个宾客的名字: ", numberTemp); gets(pOne->name); pTwo->pNext = pOne; } pTwo->pNext = NULL; free(pOne); pOne = NULL; // free(pTwo); 空间没有开辟,何来释放 // pTwo = NULL; return(pHead); } GUEST *Delect(GUEST *pHeadGet, int numSelect) { GUEST *pOne = NULL, *pTwo = NULL;

pOne = pHeadGet; if (pHeadGet == NULL) { printf("\n数据为空没有数据可以删除\n"); } else { while( (pOne->number != numSelect) && (pOne->pNext != NULL) ) { pTwo = pOne; pOne = pOne->pNext; } if( numSelect == pOne->number ) { if(pOne == pHeadGet) { pHeadGet = pOne->pNext; free(pOne); } else { pTwo->pNext = pOne->pNext; free(pOne); } } else { printf("\n没有找到要删除的宾客:\n"); } } return pHeadGet; }

void FoundAndPrint(GUEST *pHeadGet, int number) { GUEST *pClient = NULL; int temp = FALSE; pClient = pHeadGet; if(pClient == NULL) { printf("\n数据为空没有数据可以查找\n"); } else { while(pClient != NULL) { if (number == pClient->number) { printf("\t\t客号\t\t姓名\t\t\t金额"); printf(FORMAT, pClient->number, pClient->name, pClient->money); temp = TRUE; break; } pClient = pClient->pNext; } if (!temp) { printf("\n没有找到您要的数据,请核实!\n"); } } }

void Insert(GUEST *pHeadGet, int numInsert) { GUEST *pOne = NULL, *pTwo = NULL, *pInsert = NULL; int temp;

pTwo = pOne = pHeadGet; for( temp = 1; temp < numInsert; temp++ ) { pTwo = pTwo->pNext; } pOne = pTwo->pNext; pInsert = (GUEST *) malloc(LEN); printf("\n请输入该客号,金额,用空格相隔:"); scanf("%d%d", &pInsert->number, &pInsert->money); _flushall(); printf("\n请输入插入宾客名字: "); gets(pInsert->name); pTwo->pNext = pInsert; pInsert->pNext = pOne; } void Max_Print(GUEST *pHeadGet) { int max; GUEST *pScan = NULL, *pPut = NULL;

if (pHeadGet == NULL) { printf("\n数据为空没有数据可以比较\n"); } else { max = pHeadGet->money; pScan = pHeadGet->pNext; pPut = pHeadGet; if(pScan != NULL) { do { if(pScan->money > max) { max = pScan->money; pPut = pScan; } else { pPut = pHeadGet; } pScan = pScan->pNext; } while(pScan != NULL); } system("cls"); printf("金额最好的宾客:\n"); printf("\t\t客号\t\t姓名\t\t\t金额"); printf(FORMAT, pPut->number, pPut->name, pPut->money); } }

void Update(GUEST *pHeadGet, int number, int newMoney) { GUEST *pClient = NULL; int temp = FALSE; pClient = pHeadGet; if(pClient == NULL) { printf("\n数据为空没有数据可以更新的\n"); } else { while(pClient != NULL) { if (number == pClient->number) { if(pClient->money > 10000) printf("\n这位宾客需要付款:%d\n", (int)(newMoney * 0.6)); else if ((pClient->money < 10000) && (pClient->money > 5000)) printf("\n这位宾客需要付款:%d\n", (int)(newMoney * 0.8)); else printf("\n这位宾客需要付款:%d\n", newMoney); pClient->money += newMoney; temp = TRUE; break; } pClient = pClient->pNext; } if (!temp) { printf("\n没有找到您要更新的数据项,请核实!\n"); } } }

void ListSave(GUEST *pHeadGet) { FILE *fposition = NULL; char fileName[FILENAME_LEN]; GUEST *pOne = pHeadGet; int listLen = 0; if (pHeadGet == NULL) { printf("\n数据为空没有数据可以保存\n"); } else { while (pOne) { pOne = pOne ->pNext; listLen++; }

printf("\n请输入文件名,以txt方式(*.txt):"); _flushall(); gets(fileName); if ((fposition = fopen ("fileName.txt", "w")) == NULL) { printf("\n打开文件失败\n"); exit(0); } pOne = pHeadGet; // fprintf(fposition, "\t\t客号\t\t姓名\t\t\t金额"); while (pOne != NULL) { if (! fprintf(fposition, FORMAT, pOne->number,pOne->name, pOne->money)) { printf("\n读入文件出错\n"); } pOne = pOne->pNext; } fclose(fposition); } }

GUEST *ReadList(void) { FILE *fposition = NULL; char fileName[FILENAME_LEN]; GUEST *pOne = NULL, *pTwo = NULL, *pHead = NULL;

printf("\n请输入您要打开的文件名,以txt方式(*.txt):"); _flushall(); gets(fileName); if ((fposition = fopen ("fileName.txt", "r")) == NULL) { printf("\n打开文件失败\n"); exit(0); }

pOne = (GUEST *) malloc(LEN); pTwo = pOne; pHead = pOne; pHead->pNext = NULL; // fseek(fposition, (long)60L, 0); while (!feof(fposition)) { if (!fscanf(fposition, FORMAT, &pOne->number, &pOne->name, &pOne->money)) printf("\n读入文件出错,可能文件为空,或文件不存在!\n"); pTwo = pOne; pOne = (GUEST *) malloc(LEN); pTwo->pNext = pOne; } pTwo->pNext = NULL; free(pOne); pOne = NULL; return pHead; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯