C语言 药品管理系统 源代码

合集下载

C语言 药品管理系统 源代码

C语言 药品管理系统 源代码

C语言药品管理系统源代码#include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <conio.h>typedef struct Drug {char Drug_id[30]; //编号char Drug_name[50]; //药品名称char Drug_type[10]; //类型float Drug_price; //价格int amount; //库存数量char Drug_time[30]; //入库时间char remark[30]; //备注struct Drug *next; }Drug,*DrugPtr;#define MENU "欢迎进入药品管理系统\n"\"1: 查看已有药品列表\n"\"2: 添加新的药品\n"\"3: 删除药品信息\n"\"4: 修改药品信息\n"\"5: 分类查询\n"\"0: 退出\n"\"请您选择:"#define MENU41 "请选择要修改的选项\n"\"1:修改药品名称\n"\"2:修改药品价格\n"\"3:修改药品数量\n"\"4:修改药品类型\n"\"5:修改药品备注\n"\"0:返回主菜单\n"\"请您选择:"#define MENU5 "欢迎进入分类查询页面\n"\ "1: 按编号查询\n"\"2: 按名称查询\n"\"3: 按类型查询\n"\"4: 按价格查询\n"\"5: 按库存数量查询\n"\"6: 按入库时间查询\n"\"0: 返回主菜单\n"\"请您选择:"#define MENU50 "按药品编号查询\n"\"请输入要查询的药品编号:"#define MENU51 "按药品名称查询\n"\"请输入要查询的药品名称:"#define MENU52 "按药品类型查询\n"\"请输入要查询的药品类型:\n"\"1: 中药\n"\"2: 中成药\n"\"3: 西药\n"\"0: 返回查询菜单\n"\"请您选择:"#define MENU53 "按药品价格查询\n"\"请输入要查询的药品价格:"#define MENU54 "按药品库存数量查询\n"\"请输入要查询的药品的库存数量:"#define MENU55 "按药品入库时间查询\n"\"请输入要查询的药品入库时间:"#define STRCMP(NAME, STR) strcmp((char *)GetStdin("请输入药品的编号(按0结束):","%s", STR), "0")DrugPtr insert(DrugPtr head, int id, char* name); //添加药品 void save_to_file( DrugPtr &yaolist); //将更新后的链表保存到文件中void read_to_list(DrugPtr &yaolist); //将文件读入链表 void*GetStdin(const char *numstr, char *control, void *ret);DrugPtr getvalue(); //取值void druginsert(DrugPtr &yaolist, DrugPtr yao); //插入操作 int isdrugin(DrugPtr yaolist, DrugPtr yao); //判断 void drugmodify(DrugPtr &yaolist, DrugPtr yao); //修改操作 void deletenode(DrugPtr &yaolist,char drug_id[]); //删除操作 void deletedrug(DrugPtr &yaolist);void updatedrug(DrugPtr &yaolist); void listshow(DrugPtr yaolist);//显示操作 void drug_find_name(DrugPtr head, char *name); //以名称查询void drug_find_id(DrugPtr head,char *id); //以编号查询 voiddrug_find_type_z(DrugPtr head); //查询中药 voiddrug_find_type_zc(DrugPtr head); //查询中成药 voiddrug_find_type_x(DrugPtr head); //查询西药 void drug_find_price(DrugPtr head,float price); //以价格查询 void drug_find_amout(DrugPtr head,int amout); //以库存数量查询 void drug_find_time(DrugPtr head,char *time); //以入库时间查询 void drug_type_choose(DrugPtr head); //查询主菜单 void choose_type(DrugPtr head); //类型查询int main(){int choice;DrugPtr head=NULL;DrugPtr yao;read_to_list(head);while (*(int *)GetStdin(MENU, "%d", &choice)){switch (choice){case 1:listshow(head);//显示药品列表break;case 2:{yao=getvalue();druginsert(head,yao);//添加药品printf("药品添加成功\n");break;}case 3:deletedrug(head);//删除药品break;case 4:updatedrug(head);//修改药品信息break;case 5: //分类查询drug_type_choose(head);break;case 0: //退出break;}}save_to_file(head);return 0;}void *GetStdin(const char *numstr, char *control, void *ret) {cputs(numstr);while (! scanf(control, ret)) {fflush(stdin);system("cls");cputs(numstr);}system("cls");return ret;}//显示列表void listshow(DrugPtr yaolist) {printf ("%5s%13s%10s%10s%13s%10s%10s\n", "药品编号", "名称", "价格", "类型", "入库时间","库存数量","备注");DrugPtr p=yaolist;if(!p)printf("kong");while(p){printf ("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",p->Drug_id, p->Drug_name, p->Drug_price,p->Drug_type,p->Drug_time,p->amount,p->remark);p=p->next;}}DrugPtr getvalue(){DrugPtr yao=(DrugPtr)malloc(sizeof(Drug));printf("请输入药品编号:"); scanf("%s",&yao->Drug_id); printf("\n");printf("请输入药品名称:"); scanf("%s",&yao->Drug_name); printf("\n");printf("请输入药品价格:"); scanf("%f",&yao->Drug_price); printf("\n");printf("请输入药品数量:"); scanf("%d",&yao->amount); printf("\n");printf("请输入药品入库时间:"); scanf("%s",&yao->Drug_time); printf("\n");printf("请输入药品类型:"); scanf("%s",&yao->Drug_type); printf("\n");printf("请输入药品备注:"); scanf("%s",&yao->remark); printf("\n");yao->next=NULL;return yao;}void druginsert(DrugPtr &yaolist, DrugPtr yao) {if(!yaolist)yaolist=yao;else{yao->next=yaolist->next;yaolist->next=yao;}}DrugPtr isdrugin(DrugPtr yaolist,char drug_id[]) {DrugPtr p=yaolist;while(p){if(!strcmp(p->Drug_id,drug_id))break;elsep=p->next;}return p;}//更新结点void drugmodify(DrugPtr &yaolist, DrugPtr yao) {int choice;DrugPtr p=yaolist;float t=0;//没有这句出现float point not loadedwhile(*(int *)GetStdin(MENU41, "%d", &choice)){switch(choice){case 1:GetStdin("请输入药品的新名称:", "%s",yao->Drug_name); printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 2:GetStdin("请输入药品的新价格:", "%f", &yao->Drug_price); printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 3:GetStdin("请输入药品的修改数量:", "%d",&yao->amount); printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 4:GetStdin("请输入药品的新类型:", "%s",yao->Drug_type);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 5:GetStdin("请输入药品的新备注:", "%s",yao->remark);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 0:break;}}}//找到结点返回 updatevoid updatedrug(DrugPtr &yaolist) {char string[30];DrugPtr yao;while (strcmp((char *)GetStdin("请输入药品编号(按0结束):\n", "%s", string),"0")){yao=isdrugin(yaolist,string);if(yao)//判断药是否存在drugmodify(yaolist,yao);elseprintf("没有这种药\n");}}void deletedrug(DrugPtr &yaolist) {char string[30];while (STRCMP(SECOND, string)){if (isdrugin(yaolist, string)){deletenode(yaolist, string);}elseprintf("药品不存在!");}}void deletenode(DrugPtr &yaolist,char drug_id[]) {DrugPtr q,p;q=yaolist;p=q->next;if(!strcmp(yaolist->Drug_id,drug_id)) {yaolist=yaolist->next;free(q);}else{while(p){if(!strcmp(p->Drug_id,drug_id)) break;q=q->next;p=p->next;}q->next=p->next;free(p);}printf("药品已删除~");}void read_to_list( DrugPtr &yaolist) { FILE *fp=fopen("E:/yao.txt","r");if(!fp)printf("error");while( !feof(fp)){DrugPtr yao=(DrugPtr)malloc(sizeof(Drug));yao->next=NULL;fscanf(fp, "%s%s%f%s%s%d%s\n", yao->Drug_id,yao->Drug_name,&yao->Drug_price,yao->Drug_type,yao->Drug_time,&yao->amount,yao->remark);druginsert(yaolist,yao);}fclose(fp);}void save_to_file( DrugPtr yaolist) {DrugPtr p=yaolist;FILE *fp=fopen("E:/yao.txt","w");if(!fp)printf("error");while(p){fprintf(fp,"%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",p->Drug_id, p->Drug_name,p->Drug_price,p->Drug_type,p->Drug_time,p->amount,p->remark);p=p->next;}fclose(fp);}void drug_find_name(DrugPtr head, char *name){DrugPtr cur,p;p=head;cur = head;int i=0;while(p){if(!strcmp(p->Drug_name,name))break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_name,name)){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有名称为%s的数量为%d\n",name,i); printf("\n");}else{printf("\n");printf("没有找到该药名!\n");printf("\n");}}void drug_find_type_z(DrugPtr head){DrugPtr cur,p;cur = head;p=head;int i=0;while(p){if(!strcmp(p->Drug_type,"中药"))break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_type, "中药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n", cur->Drug_id, cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur- >amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有中药的数量为%d\n",i);printf("\n");}else{printf("\n");printf("没有该类型的药~\n");printf("\n");}}void drug_find_type_zc(DrugPtr head) {DrugPtr cur,p;cur = head;p=head;int i=0;while(p){if(!strcmp(p->Drug_type,"中成药")) break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_type, "中成药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n", cur->Drug_id, cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur- >amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有中成药的数量为%d\n",i);printf("\n");}else{printf("\n");printf("没有该类型的药~\n");printf("\n");}}void drug_find_type_x(DrugPtr head){DrugPtr cur,p;cur = head;p=head;int i=0;while(p){if(!strcmp(p->Drug_type,"西药"))break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_type, "西药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n", cur->Drug_id, cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur- >amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有西药的数量为%d\n",i);printf("\n");}else{printf("\n");printf("没有该类型的药~\n");printf("\n");}}void drug_find_price(DrugPtr head,float price) {DrugPtr cur,p;cur = head;int i=0;p=head;while(p){if(p->Drug_price==price)break;elsep=p->next;}if(p){while(cur!=NULL){if(cur->Drug_price==price){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n", cur->Drug_id, cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur- >amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品价格为%f的数量为%d\n",price,i); printf("\n");}else{printf("\n");printf("没有该价格的药品!\n");printf("\n");}}void drug_find_amout(DrugPtr head,int amout){DrugPtr cur,p;cur = head;int i=0;p=head;while(p){if(p->amount==amout)break;elsep=p->next;}if(p){while(cur!=NULL){if(cur->amount==amout){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n", cur->Drug_id, cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur- >amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品库存量为%d的数量为%d\n",amout,i); printf("\n");}else{printf("\n");printf("没有库存量为%d的药品!\n",amout);printf("\n");}}void drug_find_time(DrugPtr head,char *time){DrugPtr cur,p;cur = head;int i=0;p=head;while(p){if(!(strcmp(p->Drug_time, time)))break;elsep=p->next;}if(p){while(cur!=NULL){if(!(strcmp(cur->Drug_time, time))){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品入库时间为%s的数量为%d\n",time,i);printf("\n");}else{printf("\n");printf("没有找到入库时间为%s的药品!\n",time); printf("\n");}}void drug_find_id(DrugPtr head,char *id) {DrugPtr cur;cur = head;while(cur!=NULL){if(!strcmp(cur->Drug_id,id)){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n", cur->Drug_id, cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur- >amount,cur->remark);printf("\n");break;}elsecur=cur->next;}if(!cur){printf("\n");printf("没有找到该编号的药品!\n");printf("\n");}}void drug_type_choose(DrugPtr head) {int choice2;while (*(int *)GetStdin(MENU5, "%d", &choice2)) {switch(choice2){case 1:char id[30];GetStdin(MENU50, "%s", id);drug_find_id(head,id);break;case 2: //名称char name[50];GetStdin(MENU51, "%s", name);drug_find_name(head,name);break;case 3: //类型choose_type(head);break;case 4: //价格float price;GetStdin(MENU53, "%f", &price);drug_find_price(head,price);break;case 5: //库存int amount;GetStdin(MENU54, "%d", &amount);drug_find_amout(head,amount);break;case 6: //入库时间char time[30];GetStdin(MENU55, "%s", time);drug_find_time(head,time);break;case 0:break;}}}void choose_type(DrugPtr head) {int choice3;while (*(int *)GetStdin(MENU52, "%d", &choice3)) {switch(choice3){case 1: //中药printf("药库中的中药有:\n"); drug_find_type_z(head); break;case 2: //中成药printf("药库中的中成药有:\n"); drug_find_type_zc(head); break;case 3: //西药printf("药库中的西药有:\n"); drug_find_type_x(head); break;case 0: //返回查询菜单break;}}}。

药房管理系统部分代码

药房管理系统部分代码
if ll_i<>0 then
MessageBox("错误信息","请改正.")
sle_id.setfocus()
RETURN
END IF
ls_id=trim(sle_id.text)
ls_name=trim(sle_name.text)
ls_tel=trim(sle_tel.text)
添加供应商
long ll_i
string ls_id,ls_name, ls_add,ls_tel,ls_youbian
if sle_id.text="" or isnull(sle_id.text) then
MessageBox("缺少数据","请输入供应商号!")
sle_id.setfocus()
string uid
string upsd
uid = "admin"
upsd =string(123456)
userid=trim(sle_1.text)
userpsw=trim(sle_2.text)
if userid=uid and userpsw=upsd then
messagebox("恭喜","密码正确,可以进去系统!")
return
end if
if sle_name.text="" or isnull(sle_name.text) then
MessageBox("缺少数据","请输入供应商名!")
sle_name.setfocus()

C语言_药品管理系统

C语言_药品管理系统

XX大学信息科学与工程学院课程设计报告书课题:药品信息管理系统姓名:专业:电子信息工程年级: 2 0 1 3 级指导老师:时间:目录引言------------------------------------------------------------1一、系统概述------------------------------------------------2 二、需求分析------------------------------------------------2 1、系统需求-------------------------------------------22、开发环境-------------------------------------------3三、详细设计-----------------------------------------------4 四、所遇到的问题和分析解决--------------------------10五、系统特色及关键技术--------------------------------11六、结论及心得体会--------------------------------------11七、附录(源代码)--------------------------------------12参考文献-----------------------------------------------------17引言通过本课程设计,使自己更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用C或C++语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。

掌握C语言或C++语言独立的编写、调试应用程序和进行其它相关设计的技能。

C语言程序设计(医院信息管理系统)附源代码

C语言程序设计(医院信息管理系统)附源代码

专业设计报告课程名称: C 语言程序设计课题名称:医院信息管理系统专业班别: 11本计算机科学与技术二班姓名:学号:指导教师:设计日期: 2012-5-25教师评语:成绩评定:指导教师签名:日期: 2012 年月日课程设计题目医院信息管理程序作者姓名:同组成员:摘要利用结构体存储每个病人的信息和每种药品的信息,并使用链表存储全部病人的信息;能完成对医院内所有病人信息的注册、查询、删除和修改等操作,同时又能对药房内库存的药品进行查询;可以将链表中的病人信息保存在文件中,并且可以对文件中的病人信息进行读取与显示1.专业设计目的1、掌握链表的操作,包括链表节点的创建、释放还有链表的遍历2、掌握对二进制文件的创建、增添等基本操作。

3、熟悉C语言函数的使用方法,学会模块化处理问题以及多个源文件的处理方式2.设计基本要求(1、使用结构体来存储病人的信息,结构体中包括病的id号码、姓名、病历以及消费信息,并用链表将所有病人信息整合。

2、用文件来存储链表的信息以便下次再使用该程序时载入病人信息3、能够实现病人信息的注册、病人信息的查询、病人消费统计、保存链表信息、载入链表信息、查询库存等几项功能。

4、要求用四个源文件main.c、link.c、find.c、save_load.c5、系统完成后应实现类似下面所示界面3、算法分析1、数据结构设计链表中的一个节点存储一个病人的信息,使用下面的结构体类型定义:struct patient{char id[10];char name[10];char casehist[200];int cost[3];int transfusion;int surgery;struct patient *next;};其中cost数组用来存储病人卖药的的个数(总共三种药),casehist存储病历内容,transfusion用来存储病人输液的花费,surgery存储手术的花费。

Struct patient *next用来指向下一个病人结构体的起始地址从而形成一个链表。

药品管理系统

药品管理系统
for(i=0;i<L->type;i++)
printf("\t %s\t %s\t %f\t %d\t %f\n",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale);
பைடு நூலகம்
}
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
if(L->r[j].price>L->r[i].price)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
void nam(SqList *L) //按药品名称排序
{
int i,j;
char num1[10],name1[30];
float price1,sale1;
int count1;
for(i=0;i<L->type;i++)
for(j=i+1;j<L->type;j++)
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;

C语言程序设计(医院信息管理系统)附源代码

C语言程序设计(医院信息管理系统)附源代码

专业设计报告课程名称: C 语言程序设计课题名称:医院信息管理系统专业班别:12本计算机科学与技术二班姓名:学号:指导教师:设计日期:2012-5-25教师评语:成绩评定:指导教师签名:日期:2012 年月日课程设计题目医院信息管理程序作者姓名:同组成员:摘要利用结构体存储每个病人的信息和每种药品的信息,并使用链表存储全部病人的信息;能完成对医院内所有病人信息的注册、查询、删除和修改等操作,同时又能对药房内库存的药品进行查询;可以将链表中的病人信息保存在文件中,并且可以对文件中的病人信息进行读取与显示1.专业设计目的1、掌握链表的操作,包括链表节点的创建、释放还有链表的遍历2、掌握对二进制文件的创建、增添等基本操作。

3、熟悉C语言函数的使用方法,学会模块化处理问题以及多个源文件的处理方式2.设计基本要求(1、使用结构体来存储病人的信息,结构体中包括病的id号码、姓名、病历以及消费信息,并用链表将所有病人信息整合。

2、用文件来存储链表的信息以便下次再使用该程序时载入病人信息3、能够实现病人信息的注册、病人信息的查询、病人消费统计、保存链表信息、载入链表信息、查询库存等几项功能。

4、要求用四个源文件main.c、link.c、find.c、save_load.c5、系统完成后应实现类似下面所示界面3、算法分析1、数据结构设计链表中的一个节点存储一个病人的信息,使用下面的结构体类型定义:struct patient{char id[10];char name[10];char casehist[200];int cost[3];int transfusion;int surgery;struct patient *next;};其中cost数组用来存储病人卖药的的个数(总共三种药),casehist存储病历内容,transfusion用来存储病人输液的花费,surgery存储手术的花费。

Struct patient *next用来指向下一个病人结构体的起始地址从而形成一个链表。

C语言程序设计医院信息管理系统附源代码

C语言程序设计医院信息管理系统附源代码

专业设计报告课程名称: C 语言程序设计课题名称: 医院信息管理系统专业班别:12本计算机科学与技术二班姓名:学号:指导教师:设计日期:2012-5-25教师评语:成绩评定:指导教师签名:日期: 2012 年月日课程设计题目医院信息管理程序作者姓名:同组成员:摘要利用结构体存储每个病人的信息与每种药品的信息,并使用链表存储全部病人的信息;能完成对医院内所有病人信息的注册、查询、删除与修改等操作,同时又能对药房内库存的药品进行查询;可以将链表中的病人信息保存在文件中,并且可以对文件中的病人信息进行读取与显示1.专业设计目的1、掌握链表的操作,包括链表节点的创建、释放还有链表的遍历2、掌握对二进制文件的创建、增添等基本操作。

3、熟悉C语言函数的使用方法,学会模块化处理问题以及多个源文件的处理方式2.设计基本要求(1、使用结构体来存储病人的信息,结构体中包括病的id号码、姓名、病历以及消费信息,并用链表将所有病人信息整合。

2、用文件来存储链表的信息以便下次再使用该程序时载入病人信息3、能够实现病人信息的注册、病人信息的查询、病人消费统计、保存链表信息、载入链表信息、查询库存等几项功能。

4、要求用四个源文件main、c、link、c、find、c、save_load、c5、系统完成后应实现类似下面所示界面3、算法分析1、数据结构设计链表中的一个节点存储一个病人的信息,使用下面的结构体类型定义:struct patient{char id[10];char name[10];char casehist[200];int cost[3];int transfusion;int surgery;struct patient *next;};其中cost数组用来存储病人卖药的的个数(总共三种药),casehist存储病历内容,transfusion用来存储病人输液的花费,surgery存储手术的花费。

Struct patient *next用来指向下一个病人结构体的起始地址从而形成一个链表。

源程序医院药房药品管理系统C

源程序医院药房药品管理系统C

源程序:# include <fstream.h> //包含文件读写# include <iostream.h># include <string.h> //包含strcmp()字符是否相等#include <stdlib.h> //包含system(cls)清屏#define MAX 60 //下列字符数组的大小struct Date{//日期char year[MAX];//年char month[MAX];//月char day[MAX];//日}void Creatlist()//创建新的列表 {char g='Y';int s=0;length=0;//初始长度为0;current=head;do {Goods * temp=new Goods ;//构建新结点信息1链表长度增每加一个结点 length++; //temp->next=NULL;cout<< 请输入药品名称: ;cin>>temp->name; cout<< 请输入单价 : ;cin>>temp->price;cout<< 请输入药品数量: ;cin>>temp->number;cout<< 请输入总费用 : ;cin>>temp->cost;cout<< 请输入日期 (**** ** **) : ;cin>>temp->indate.year>>temp->indate.month>>temp->indate.day;尾指infile>>length;cout<<\length is: <<length<<endl;//if(length==0)cout<< 数据为空\n;for(int i=0;i<length;i++)//创建新的结点保存文件的数据{Goods * t=new Goods ;t->next=NULL;infile>>t->name>>t->price>>t->number>>t->cost>>t->kind>> t->indate.year>>t->indate.month>>t->indate.day;跟上面的链表创建相似 if(head==NULL){head=t;current=t;}//else {current->next=t,current=t;}}infile.close();//关闭文件流}//openvoid Save ()//保存链表信息到文件{if(length==0){cout<< 列表为空不需存盘 \n; return ;}}cout.fill(' ');cout<<current->name;cout.width(8); cout.width(8);cout<<current->price;cout.width(8);cout<<current->number;cout.width(8);'空个字符输出,不够往前面加‘ current->cost10就是给//cout<<current->cost;格cout.width(10);cout<<current->kind;cout.width(10);cout<<current->indate.year<<.<<current->indate.month<<.<<current->indate.day;cout.width(10);cout<<current->xiaoqi.year<<.<<current->xiaoqi.month<<.<<current->xiaoqi.day; cout<<endl;潣瑵?有效期;cout<<endl; //输出属性列while(current!=NULL){ //循环输出所有结点printinfor( current );current=current->next;}}//showGoods *Searchindate(Date t){ //按购入日期搜索返回结点指针temp三个信息块t.year t.month t.day含有t结构体//Date d;bool f=false;Goods * temp;current=head->next;while(current!=NULL){d=current->indate;if(!strcmp(d.year,t.year)&&!strcmp(d.month,t.month)&&!strcmp(d.day,t.day)){temp=current; f=true;{if(strcmp(current->name,r)==0) {temp=current;f=true;break;}current=current->next;}if(f==false){cout<<\商品名为 : <<r<< 的商品不存在 \n ; return NULL;}return temp;}void Queryname() //按药品名查询{char r[MAX];cout<< input the name: ;cin>>r;bool f=false; //表示是否找到满足要求的结点Goods * temp; //指向找到的结点,并删除cout<< 请输入药品的数量: ;cin>>t;current=head;while(current->next!=NULL){if(strcmp(current->next->number,t)==0) //判断是否满足条件{temp=current->next;current->next=temp->next;length--; //没删除一个结点,链表长度减1f=true;delete temp;//释放结点潣瑵?已删除此药品\n;//break; 此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除}else{current=current->next;}//break;此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除}else{current=current->next;}}if(f==false){\n;无须删除 ,此药品不存在?挠畯?尼}}//Removebynamevoid Removebyindate () //按购进时间删除某个结点{Date t,d;bool f=false;Goods * temp;cout<< 请输入查找药品的日期: ;cin>>t.year>>t.month>>t.day;current=head;while(current->next!=NULL)do{cout<< ********************************************************** <<endl; cout<<*******<a> 按药品总数量删除 ***********<<endl;cout<<*******<b> 按药品名称删除 ***********<<endl; cout<<*******<c> 按入库时间删除 ***********<<endl;cout<<*******<d> 退出 ***********<<endl;cout<< ********************************************************** <<endl; cin>>g;switch (g){case 'a': Removebynumber ();break;case 'b': Removebyname();break;case 'c': Removebyindate();break;case 'd': return ;default: cout<<error!! ;}} while(g!='d');}void Add(){Goods * temp;current=head;}//addvoid Modify (){//通过药品名找到要修改的数据项char n[MAX];潣瑵?请输入您要修改的药品名:<<endl;cin>>n;Goods * temp=Searchname (n);//按商品名查找cout<< 请输入单价:;cin>>temp->price;cout<< 请输入药品的总费用:\n;cin>>temp->cost;cout<< 请输入日期 (**** ** **):\n;cin>>temp->indate.year>>temp->indate.month>>temp->indate.day; cout<< 请输入药品的数量:\n;cin>>temp->number;cout<< 请输入药品的种类:\n;cin>>temp->kind;}void operation (){char g='Y';do{cout<<\ ********************************************************\n; cout<<\ ;cout.fill('*');cout.width(18);cout<<'*';潣瑵?医院药房管理系统;cout.fill('*');cout.width(22);cout<<'*';cout<<endl;cin>>g;switch (g){case 'C': Creatlist();break;case 'A': Add();break;case 'M': Modify ();break;case 'D': Show ();break;case 'Q': Query ();break;case 'R': Remove();break;case 'O': Open ();break;case 'S': Save();break;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>#include <conio.h>typedef struct Drug {char Drug_id[30]; //编号char Drug_name[50]; //药品名称char Drug_type[10]; //类型float Drug_price; //价格int amount; //库存数量char Drug_time[30]; //入库时间char remark[30]; //备注struct Drug *next;}Drug,*DrugPtr;#define MENU "欢迎进入药品管理系统\n"\"1: 查看已有药品列表\n"\"2: 添加新的药品\n"\"3: 删除药品信息\n"\"4: 修改药品信息\n"\"5: 分类查询\n"\"0: 退出\n"\"请您选择:"#define MENU41 "请选择要修改的选项\n"\"1:修改药品名称\n"\"2:修改药品价格\n"\"3:修改药品数量\n"\"4:修改药品类型\n"\"5:修改药品备注\n"\"0:返回主菜单\n"\"请您选择:"#define MENU5 "欢迎进入分类查询页面\n"\"1: 按编号查询\n"\"2: 按名称查询\n"\"3: 按类型查询\n"\"4: 按价格查询\n"\"5: 按库存数量查询\n"\"6: 按入库时间查询\n"\"0: 返回主菜单\n"\"请您选择:"#define MENU50 "按药品编号查询\n"\"请输入要查询的药品编号:"#define MENU51 "按药品名称查询\n"\"请输入要查询的药品名称:"#define MENU52 "按药品类型查询\n"\"请输入要查询的药品类型:\n"\"1: 中药\n"\"2: 中成药\n"\"3: 西药\n"\"0: 返回查询菜单\n"\"请您选择:"#define MENU53 "按药品价格查询\n"\"请输入要查询的药品价格:"#define MENU54 "按药品库存数量查询\n"\"请输入要查询的药品的库存数量:"#define MENU55 "按药品入库时间查询\n"\"请输入要查询的药品入库时间:"#define STRCMP(NAME, STR) strcmp((char *)GetStdin("请输入药品的编号(按0结束):", "%s", STR), "0")DrugPtr insert(DrugPtr head, int id, char* name); //添加药品void save_to_file( DrugPtr &yaolist); //将更新后的链表保存到文件中void read_to_list(DrugPtr &yaolist); //将文件读入链表void *GetStdin(const char *numstr, char *control, void *ret);DrugPtr getvalue(); //取值void druginsert(DrugPtr &yaolist, DrugPtr yao); //插入操作int isdrugin(DrugPtr yaolist, DrugPtr yao); //判断void drugmodify(DrugPtr &yaolist, DrugPtr yao); //修改操作void deletenode(DrugPtr &yaolist,char drug_id[]); //删除操作void deletedrug(DrugPtr &yaolist);void updatedrug(DrugPtr &yaolist);void listshow(DrugPtr yaolist); //显示操作void drug_find_name(DrugPtr head, char *name); //以名称查询void drug_find_id(DrugPtr head,char *id); //以编号查询void drug_find_type_z(DrugPtr head); //查询中药void drug_find_type_zc(DrugPtr head); //查询中成药void drug_find_type_x(DrugPtr head); //查询西药void drug_find_price(DrugPtr head,float price); //以价格查询void drug_find_amout(DrugPtr head,int amout); //以库存数量查询void drug_find_time(DrugPtr head,char *time); //以入库时间查询void drug_type_choose(DrugPtr head); //查询主菜单void choose_type(DrugPtr head); //类型查询int main(){int choice;DrugPtr head=NULL;DrugPtr yao;read_to_list(head);while (*(int *)GetStdin(MENU, "%d", &choice)){switch (choice){case 1:listshow(head);//显示药品列表break;case 2:{yao=getvalue();druginsert(head,yao);//添加药品 printf("药品添加成功\n");break;}case 3:deletedrug(head);//删除药品break;case 4:updatedrug(head);//修改药品信息break;case 5: //分类查询drug_type_choose(head);break;case 0: //退出break;}}save_to_file(head);return 0;}void *GetStdin(const char *numstr, char *control, void *ret){cputs(numstr);while (! scanf(control, ret)) {fflush(stdin);system("cls");cputs(numstr);}system("cls");return ret;}//显示列表void listshow(DrugPtr yaolist){printf ("%5s%13s%10s%10s%13s%10s%10s\n", "药品编号", "名称", "价格", "类型", "入库时间","库存数量","备注");DrugPtr p=yaolist;if(!p)printf("kong");while(p){printf ("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",p->Drug_id, p->Drug_name, p->Drug_price,p->Drug_type,p->Drug_time,p->amount,p->remark);p=p->next;}}DrugPtr getvalue(){DrugPtr yao=(DrugPtr)malloc(sizeof(Drug));printf("请输入药品编号:");scanf("%s",&yao->Drug_id);printf("\n");printf("请输入药品名称:");scanf("%s",&yao->Drug_name);printf("\n");printf("请输入药品价格:");scanf("%f",&yao->Drug_price);printf("\n");printf("请输入药品数量:");scanf("%d",&yao->amount);printf("\n");printf("请输入药品入库时间:");scanf("%s",&yao->Drug_time);printf("\n");printf("请输入药品类型:");scanf("%s",&yao->Drug_type);printf("\n");printf("请输入药品备注:");scanf("%s",&yao->remark);printf("\n");yao->next=NULL;return yao;}void druginsert(DrugPtr &yaolist, DrugPtr yao) {if(!yaolist)yaolist=yao;else{yao->next=yaolist->next;yaolist->next=yao;}}DrugPtr isdrugin(DrugPtr yaolist,char drug_id[]) {DrugPtr p=yaolist;while(p){if(!strcmp(p->Drug_id,drug_id))break;elsep=p->next;}return p;}//更新结点void drugmodify(DrugPtr &yaolist, DrugPtr yao){int choice;DrugPtr p=yaolist;float t=0;//没有这句出现float point not loadedwhile(*(int *)GetStdin(MENU41, "%d", &choice)){switch(choice){case 1:GetStdin("请输入药品的新名称:", "%s",yao->Drug_name);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 2:GetStdin("请输入药品的新价格:", "%f", &yao->Drug_price);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 3:GetStdin("请输入药品的修改数量:", "%d",&yao->amount);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 4:GetStdin("请输入药品的新类型:", "%s",yao->Drug_type);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 5:GetStdin("请输入药品的新备注:", "%s",yao->remark);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 0:break;}}}//找到结点返回 updatevoid updatedrug(DrugPtr &yaolist){char string[30];DrugPtr yao;while (strcmp((char *)GetStdin("请输入药品编号(按0结束):\n", "%s", string), "0")){yao=isdrugin(yaolist,string);if(yao)//判断药是否存在drugmodify(yaolist,yao);elseprintf("没有这种药\n");}}void deletedrug(DrugPtr &yaolist){char string[30];while (STRCMP(SECOND, string)){if (isdrugin(yaolist, string)){deletenode(yaolist, string);}elseprintf("药品不存在!");}}void deletenode(DrugPtr &yaolist,char drug_id[]){DrugPtr q,p;q=yaolist;p=q->next;if(!strcmp(yaolist->Drug_id,drug_id)){yaolist=yaolist->next;free(q);}else{while(p){if(!strcmp(p->Drug_id,drug_id))break;q=q->next;p=p->next;}q->next=p->next;free(p);}printf("药品已删除!");}void read_to_list( DrugPtr &yaolist){FILE *fp=fopen("E:/yao.txt","r");if(!fp)printf("error");while( !feof(fp)){DrugPtr yao=(DrugPtr)malloc(sizeof(Drug));yao->next=NULL;fscanf(fp, "%s%s%f%s%s%d%s\n", yao->Drug_id,yao->Drug_name,&yao->Drug_price,yao->Drug_type,yao->Drug_time,&yao->amount,yao->remark);druginsert(yaolist,yao);}fclose(fp);}void save_to_file( DrugPtr yaolist){DrugPtr p=yaolist;FILE *fp=fopen("E:/yao.txt","w");if(!fp)printf("error");while(p){fprintf(fp,"%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",p->Drug_id, p->Drug_name, p->Drug_price,p->Drug_type,p->Drug_time,p->amount,p->remark);p=p->next;}fclose(fp);}void drug_find_name(DrugPtr head, char *name){DrugPtr cur,p;p=head;cur = head;int i=0;while(p){if(!strcmp(p->Drug_name,name))break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_name,name)){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有名称为%s的数量为%d\n",name,i);printf("\n");}else{printf("\n");printf("没有找到该药名!\n");printf("\n");}}void drug_find_type_z(DrugPtr head){DrugPtr cur,p;cur = head;p=head;int i=0;while(p){if(!strcmp(p->Drug_type,"中药"))break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_type, "中药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有中药的数量为%d\n",i);printf("\n");}else{printf("\n");printf("没有该类型的药!\n");printf("\n");}}void drug_find_type_zc(DrugPtr head){DrugPtr cur,p;cur = head;p=head;int i=0;while(p){if(!strcmp(p->Drug_type,"中成药"))break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_type, "中成药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有中成药的数量为%d\n",i);printf("\n");}else{printf("\n");printf("没有该类型的药!\n");printf("\n");}}void drug_find_type_x(DrugPtr head){DrugPtr cur,p;cur = head;p=head;int i=0;while(p){if(!strcmp(p->Drug_type,"西药"))break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_type, "西药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有西药的数量为%d\n",i);printf("\n");}else{printf("\n");printf("没有该类型的药!\n");printf("\n");}}void drug_find_price(DrugPtr head,float price){DrugPtr cur,p;cur = head;int i=0;p=head;while(p){if(p->Drug_price==price)break;elsep=p->next;}if(p){while(cur!=NULL){if(cur->Drug_price==price){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品价格为%f的数量为%d\n",price,i);printf("\n");}else{printf("\n");printf("没有该价格的药品!\n");printf("\n");}}void drug_find_amout(DrugPtr head,int amout){DrugPtr cur,p;cur = head;int i=0;p=head;while(p){if(p->amount==amout)break;elsep=p->next;}if(p){while(cur!=NULL){if(cur->amount==amout){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品库存量为%d的数量为%d\n",amout,i);printf("\n");}else{printf("\n");printf("没有库存量为%d的药品!\n",amout);printf("\n");}}void drug_find_time(DrugPtr head,char *time){DrugPtr cur,p;cur = head;int i=0;p=head;while(p){if(!(strcmp(p->Drug_time, time)))break;elsep=p->next;}if(p){while(cur!=NULL){if(!(strcmp(cur->Drug_time, time))){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品入库时间为%s的数量为%d\n",time,i);printf("\n");}else{printf("\n");printf("没有找到入库时间为%s的药品!\n",time);printf("\n");}}void drug_find_id(DrugPtr head,char *id){DrugPtr cur;cur = head;while(cur!=NULL){if(!strcmp(cur->Drug_id,id)){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name,cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);printf("\n");break;}elsecur=cur->next;}if(!cur){printf("\n");printf("没有找到该编号的药品!\n");printf("\n");}}void drug_type_choose(DrugPtr head){int choice2;while (*(int *)GetStdin(MENU5, "%d", &choice2)) {switch(choice2){case 1:char id[30];GetStdin(MENU50, "%s", id);drug_find_id(head,id);break;case 2: //名称char name[50];GetStdin(MENU51, "%s", name);drug_find_name(head,name);break;case 3: //类型choose_type(head);break;case 4: //价格float price;GetStdin(MENU53, "%f", &price);drug_find_price(head,price);break;case 5: //库存int amount;GetStdin(MENU54, "%d", &amount);drug_find_amout(head,amount);break;case 6: //入库时间char time[30];GetStdin(MENU55, "%s", time);drug_find_time(head,time);break;case 0:break;}}}void choose_type(DrugPtr head){int choice3;while (*(int *)GetStdin(MENU52, "%d", &choice3)) {switch(choice3){case 1: //中药printf("药库中的中药有:\n");drug_find_type_z(head);break;case 2: //中成药printf("药库中的中成药有:\n");drug_find_type_zc(head);break;case 3: //西药printf("药库中的西药有:\n");drug_find_type_x(head);break;case 0: //返回查询菜单break;}}}。

相关文档
最新文档