永发信息网

编写管理程序

答案:2  悬赏:0  手机版
解决时间 2021-04-30 17:58

你会编酒店管理的程序吗

教教我

最佳答案
是多大的酒店啊?程序代码可能在多个行?
全部回答

这是本人第一学期的项目,用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; }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
同房后腰部痛是怎么回事
第一次当妈妈!但家人不知道会怎样!
得了急性尿道炎怎么办?
亲密度上升什么奖励
怎么算立方,怎样算容积是多少立方米
MP4白屏了怎么办?
求都市重生类小说 就是带着外星科技重生类的
振鹏副食店地址有知道的么?有点事想过去
湖南公务员的考试科目有哪些?
3道easy的填空题!快来抢啊!
饿了会想吐,饭吃没两口就觉的饱了,每天几乎
从崇阳到十堰市的乘车路线
09年诺基亚哪款手机精干!
陈大嘴木火铁锅炖这个地址在什么地方,我要处
打架要用什么?
推荐资讯
电脑键盘锁定了怎么办,怎么锁定电脑,锁定后
守候甜心第四季到底什么时候出来呀...我的急
现在又什么好吃的零食或风味小吃
上大学真的没有用吗?
恶字用五笔怎么打
现在移动还有漫游费吗,中国移动漫游费还有吗
电信的号打长途要加拨什么啊
梦幻西游的mw角色,多少级开始全魔加点比较好
汝好餐饮连锁地址有知道的么?有点事想过去
崂山旅游门票价格
摩托车帽黑烟但是行驶有力是不是要换套缸啊
圣经中“主”是指耶稣吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?