|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
[qq]2211020259[/qq]药品管理系统,在输入药品各项之后查找只能查找到第一个,第二三个没办法找到,同时删除的时候第二三个也没有办法删除,显示信息不存在。但是查询全部信息的时候可以查询的到。代码如下,同时运行的图片也在下面。- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #include<math.h>
- typedef struct
- { char name[10]; //药名
- char ID[20];//编号
- char number[60];//库存数量
- char price[80];//价格
- }datatype;
- typedef struct node
- {
- datatype data;
- struct node * next;
- }listnode;
- typedef listnode * linklist;
- linklist head;
- listnode * p;
- //1药品信息的建立 //
- linklist Create(int a )
- {
- linklist head=(listnode *)malloc(sizeof(listnode));
- listnode *p,*q;
- q=head;
- while(a--)
- {
- p=(listnode *)malloc(sizeof(listnode));
- printf("药名 编号 数量 价格\n");
- scanf("%s %s %s %s",p->data.name,p->data.ID,
- p->data.number,p->data.price);
- q->next=p;
- q=p;
- }
- q->next=NULL;
- return head;
-
- }
- //2药品信息的添加
- void Add(linklist head,int b)
- {
- listnode * m,* n,* p;
- m=head;
- n=m->next;
- while(n->next!=NULL)
- {
- m=n;
- n=n->next;
- }
- while(b--)
- {
- p=(listnode *)malloc(sizeof(listnode));
- printf("药名 编号 数量 价格 \n");
- scanf("%s %s %s %s",p->data.name,p->data.ID,
- p->data.number,p->data.price);
- n->next=p;
- n=p;
- }
- n->next=NULL;
-
- }
- //3按药名查找药品信息
- listnode *Find(linklist head)
- {
- listnode *p;
- char name[10];
- p=head->next;
- printf("请输入要查询的药名:");
- scanf("%s",&name);
- while(p&&strcmp(p->data.name,name/*比较两个条件不相等输出1*/)>0)
- p=p->next;
- if(p==NULL||strcmp(p->data.name,name)<0)
- p=NULL;
- // }
- return p;
-
- }
-
-
-
- //4药名信息的删除
- void Delete(linklist head)
- {
- int i;
- listnode *p,*q;
- p=Find(head);
- if(p==NULL)
- {
- printf("信息不存在!\n");
- return;
- }
- else
- {
- printf("要删除的话就按1:");
- scanf("%d",&i);
- if(i==1)
- {
- q=head;
- while(q!=NULL&&q->next!=p)
- q=q->next;
- q->next=p->next;
- free(p);
- printf("已删除信息!\n");
- }
- }
-
- }
- //5药名信息的输出
- void List(linklist head)
- {
- listnode *p;
- p=head;
- printf("药名 编号 数量 价格 \n");
- while(p->next!=NULL)
- {
- printf("%s %s %s %s\n",p->next->data.name,p->next->data.ID,
- p->next->data.number,p->next->data.price);
- p=p->next;
- }
- }
- int Menu()
- {
- int i;
- system("pause");
- system ("cls");//清屏数据
- printf("—————————————欢迎使用药品信息管理系统————————————\n");
- printf("| |\n");
- printf("| |\n");
- printf("| 1.建立信息表 |\n");
- printf("| 2.插入新信息 |\n");
- printf("| 3.查询信息记录 |\n");
- printf("| 4.删除信息记录 |\n");
- printf("| 5.显示信息 |\n");
- printf("| 0.退出管理系统 |\n");
- printf("| |\n");
- printf("|———————————————————————————————————— |\n");
- printf("请选择 0-5:");
- for(;;)
- {
- scanf("%d",&i);
- printf("\n");
- if(i<0||i>5)
- printf("输出错误,重选0-5:");
- else
- break ;
- }
- return i;
- }
- //药品信息系统主函数部分
- void main()
- {
- system ("color 4f");
- for(;;)
- {
- switch(Menu())
- {
- case 1:
- printf("————————————————药品信息的建立————————————————\n");
- int i;
- printf("输入你想输入的数目:");
- scanf("%d",&i);
- head=Create(i);
- List(head);
- break;
- case 2:
- printf("————————————————药品信息的添加————————————————\n");
- int a;
- printf("输入你想添加的数目:");
- scanf("%d",&a);
- Add(head,a);
- break;
- case 3:
- printf("————————————————药品名的查询————————————————\n");
- p=Find(head);
- if(p!=NULL)
- {
- printf("药名 数量 类型 价格 \n");
- printf("—————————————————————————————\n");
- printf("%s %s %s %s\n",p->data.name,p->data.ID,
- p->data.number,p->data.price);
- printf("\n");
-
- }
- else {
- printf("该客户信息不存在!");
- }
-
- List(head);
- break;
- case 4:
- printf("————————————————药品信息的删除————————————————\n");
- Delete(head);
- break;
- case 5:
- printf("————————————————药品信息的输出————————————————\n");
- List(head);
- break;
- case 0:
- printf("————————————————退出本系统————————————————\n");
- exit(0);
- }
- }
- }
复制代码 |
-
查询第一个可以查到
-
查询其他的无法查到
-
删除其他的也无法删除
|