电话订餐系统c语言程序设计实训报告
int main(){LinkQueue Q;initAddressBook(Q);int flag=0;while(flag!=8){printf("※※※※※主※※※※※菜※※※※※单※※※※※\n");printf("※1、增加联系人 2、删除联系人 ※\n");printf("※3、修改联系人 4、清空通讯录 ※\n");printf("※5、查找联系人 6、按组显示 ※\n");printf("※7、显示全部联系人 8、退出 ※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※\n");printf("请输入编号(1-8):\n");scanf("%d",&flag);if(flag8){printf("输入错误请重新输入!\n");continue;}else{switch(flag){case 1:if(enAddressBook(Q))printf("增加联系人成功!\n");elseprintf("增加联系人失败!\n");break;case 2:if(delPerson(Q))printf("删除联系人成功!\n");elseprintf("联系人删除失败!\n");break;case 3:if(update(Q))printf("修改联系人成功!\n");elseprintf("修改联系人失败!\n");break;case 4:if(clearAddressBook(Q))printf("通讯录已清空!\n");elseprintf("通讯录清空失败!\n");break;case 5:findByName(Q);break;case 6:findByGroup(Q);break;case 7:disAll(Q);break;case 8:system("cls");break;}}}printf("※※※※※感谢您使用本系统!※※※※※※\n");return 0;}//初始化通讯录void initAddressBook(LinkQueue &Q){Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));if(!Q.front)exit(1);elseQ.front->next=NULL;}//清空通讯录bool clearAddressBook(LinkQueue &Q){system("cls");while(addressBookLength(Q)!=0){QNode *p;p=Q.front->next;Q.front->next=p->next;if(p==Q.rear)Q.rear=Q.front;free(p);}return true;}//通讯录当前人数int addressBookLength(LinkQueue &Q){int i=0;QNode *p;p=Q.front;if(Q.front==Q.rear)i=0;else{while(p!=Q.rear){p=p->next;i++;}}return i;}//删除联系人bool delPerson(LinkQueue &Q){char _name[20];system("cls");printf("请输入要删除的联系人的姓名:\n");scanf("%s",_name);QNode *p,*q;if(Q.front==Q.rear){printf("通讯录为空!\n");return false;}else{p=Q.front;q=Q.front->next;while(q!=Q.rear){if(strcmp(q->name,_name)==0){p->next=q->next;free(q);//删除节点return true;}else{p=p->next;q=q->next;}}if((strcmp(q->name,_name)==0)){free(q);Q.front=Q.rear;return true;}else{printf("无此联系人!\n");return false;}}}//查找联系人bool findByName(LinkQueue &Q){system("cls");if(Q.front==Q.rear) {printf("手机中无联系人!\n");return false;}else{char _name[20];printf("请输入要查询的联系人姓名:\n");scanf("%s",_name);QNode *p;p=Q.front->next;while(p->next!=NULL){if(strcmp(p->name,_name)==0){printf("姓名:%s 号码:%s 分组:%s\n",p->name,p->tel,p->group);return true;}p=p->next;}if(strcmp(p->name,_name)==0){printf("姓名:%s 号码:%s 分组:%s\n",p->name,p->tel,p->group);return true;}else{printf("查无此人!\n");return false;}}}//按组显示联系人bool findByGroup(LinkQueue &Q){system("cls");if(Q.front==Q.rear) {printf("手机中无联系人!\n");return false;}else{char _group[20];printf("请输入要查询的分组:\n");scanf("%s",_group);QNode *p;p=Q.front->next;while(p->next!=NULL){if(strcmp(p->group,_group)==0){printf("姓名:%s 号码:%s \n",p->name,p->tel);}p=p->next;}if(strcmp(p->group,_group)==0){printf("姓名:%s 号码:%s \n",p->name,p->tel);return true;}else{printf("无此分组!\n");return false;}}}//增加联系人bool enAddressBook(LinkQueue &Q){system("cls");QNode *p;p=(QNode *)malloc(sizeof(QNode));if(!p) return false;else{printf("请输入联系人姓名:\n");scanf("%s",p->name);printf("请输入联系人号码:\n");scanf("%s",&p->tel);printf("请输入联系人分组:\n");scanf("%s",p->group);if(Q.front->next==NULL){ Q.front->next=p; Q.rear=p; Q.rear->next=NULL;}else{p->next=NULL;Q.rear->next=p;Q.rear=p;}return true;}}//修改联系人bool update(LinkQueue &Q){system("cls");if(Q.front==Q.rear) {printf("手机中无联系人!\n");return false;}else{char _name[20];printf("请输入要修改的联系人姓名:\n");scanf("%s",_name);QNode *p;p=Q.front->next;while(p->next!=NULL){if(strcmp(p->name,_name)==0){printf("请输入新联系人姓名:\n");scanf("%s",p->name);printf("请输入新联系人号码:\n");scanf("%s",&p->tel);printf("请输入新联系人分组:\n");scanf("%s",p->group);return true;}p=p->next;}if(strcmp(p->name,_name)==0){printf("请输入新联系人姓名:\n");scanf("%s",p->name);printf("请输入新联系人号码:\n");scanf("%s",&p->tel);printf("请输入新联系人分组:\n");scanf("%s",p->group);return true;}else{printf("查无此人!\n");return false;}}}//显示所有联系人void disAll(LinkQueue &Q){system("cls");int i=0;QNode *p;p=Q.front->next;if(Q.front==Q.rear)printf("无联系人!\n");else{printf(" 姓名 号码 分组\n");while(p!=NULL){printf("%15s %15s %15s\n",p->name,p->tel,p->group);p=p->next;}}}