电话订餐信息处理系统–C语言版2
通过单链表存储插入的信息
运行界面
源代码
#include<stdio.h>
#include<string.h>
#define MaxSize 20
typedef struct guest_info{ /*声明结构体类型 */
char name[8]; /*姓名*/
int sum; /*人数 */
char time[10]; /*用餐时间*/
int number; /*编号 */
struct guest_info *next;
}GuestLink, *Pointer;
void Insert(Pointer *Head); /*插入 */
void Search(Pointer Head); /*查询 */
void Update(Pointer Head); /*修改 */
void Delete(Pointer *Head); /*删除 */
void Show(Pointer Head); /*显示 */
int main()
{
Pointer Head = NULL;
int i;
do { /*显示一个简易菜单 */
printf("\n");
printf("1---插入(Insert)\n");
printf("2---查询(Search)\n");
printf("3---修改(Update)\n");
printf("4---删除(Delete)\n");
printf("5---显示(Show)\n");
printf("6---退出(Exit)\n");
scanf("%d",&i); /*接收用户的选择*/
switch(i)
{
case 1:Insert(&Head); /*调用插入运算 */
break;
case 2:Search(Head); /*调用查询运算 */
break;
case 3:Update(Head); /*调用修改运算 */
break;
case 4:Delete(&Head); /*调用删除运算 */
break;
case 5:Show(Head); /*调用显示运算 */
break;
case 6:break; /*退出系统 */
default:printf("错误选择!请重选");
break;
}
}while(i!=6);
return 0;
}
void Insert(Pointer *Head)
{
int in_number;
Pointer p,q,r;
printf("请输入编号:");
scanf("%d",&in_number);
p=q=*Head;
while(p != NULL) /*查找符合条件的记录 */
{
if(p->number == in_number)
{
printf("已经有相同的编号:");
return;
}else{
q=p;
p=p->next;
}
}
r = (Pointer)malloc(sizeof(GuestLink));
r->next = NULL;
if(r == NULL)
{
printf("分配空间失败!");
return;
}
if(q == NULL)
{
*Head = r;
}else{
q->next = r;
}
r->number = in_number; /*接收插入数据 */
printf("请输入姓名:");
scanf("%s",r->name);
printf("请输入人数:");
scanf("%d",&r->sum);
printf("请输入用餐时间:");
scanf("%s",r->time);
}
void Search(Pointer Head)
{
int number,flag=1;
Pointer p;
printf("请输入要查询的编号:");
scanf("%d",&number);
p = Head;
while(p!=NULL&&flag)
{
if(p->number == number)
{
printf("姓名:%s\n",p->name);
printf("人数:%d\n",p->sum);
printf("用餐时间:%s\n",p->time);
flag = 0;
}else{
p = p->next;
}
}
if(flag)
printf("没有查到!");
}
void Update(Pointer Head)
{
int number,flag=1;
Pointer p;
printf("请输入要修改数据的编号:");
scanf("%d",&number);
p = Head;
while(p!=NULL&&flag)
{
if(p->number == number)
{
printf("请输入人数:");
scanf("%d",p->sum);
printf("请输入用餐时间:");
scanf("%s",p->time);
flag = 0;
}else{
p = p->next;
}
}
if(flag)
printf("没有查询到可以修改的数据!!!");
}
void Delete(Pointer *Head)
{
int number,flag=1;
Pointer p,q;
printf("请输入要删除数据的编号:");
scanf("%d",&number);
p=q=*Head;
while(p!=NULL&&flag)
{
if(p->number == number)
{
if(p == *Head){
*Head = p->next;
free(p);
}else{
q->next = p->next;
free(p);
}
flag = 0;
printf("删除成功!");
}else{
q=p;
p=p->next;
}
}
if(flag)
printf("没有查询到可以删除的数据!!!");
}
void Show(Pointer Head)
{
Pointer p;
p = Head;
printf("\n");
printf(" 编号 姓名 人数 用餐时间\n");
while(p!=NULL)
{
printf("编号%-10d",p->number);
printf("姓名:%-10s",p->name);
printf("人数%-10d",p->sum);
printf("用餐时间%-10s\n",p->time);
p = p->next;
}
}