马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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);
}
}
}
|