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;}}}。
药房管理系统部分代码
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语言_药品管理系统
XX大学信息科学与工程学院课程设计报告书课题:药品信息管理系统姓名:专业:电子信息工程年级: 2 0 1 3 级指导老师:时间:目录引言------------------------------------------------------------1一、系统概述------------------------------------------------2 二、需求分析------------------------------------------------2 1、系统需求-------------------------------------------22、开发环境-------------------------------------------3三、详细设计-----------------------------------------------4 四、所遇到的问题和分析解决--------------------------10五、系统特色及关键技术--------------------------------11六、结论及心得体会--------------------------------------11七、附录(源代码)--------------------------------------12参考文献-----------------------------------------------------17引言通过本课程设计,使自己更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用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用来指向下一个病人结构体的起始地址从而形成一个链表。
药品管理系统
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 语言程序设计课题名称:医院信息管理系统专业班别: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 语言程序设计课题名称: 医院信息管理系统专业班别: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
源程序:# 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;。
C语言程序设计(医院信息管理系统)附源代码
数将节点加入链表,如此循环下去直到fread函数返回0值,即文件已经读到了末尾时,再将链表的头指
针返回给主函数即可。Flag值置为1,用来代表已有可用链表。
if((fp=fope n("data","r"))==0){
接起来,四个文件中所包含的函数说明如表所示。
源文件
函数原型
功能说明
void test()
检测有无存储病人的一进制文件
void in it(struct storage *temp)
初始化库存中的药品,参数为指向storage类型的指针
struct
void prin tme nu()
打印提示菜单
Main .c
char id[10];
char n ame[10];
char casehist[200];
int cost[3];
int tran sfusi on;
int surgery; struct patie nt *n ext;
};
其中cost数组用来存储病人卖药的的个数(总共三种药),casehist存储病历内容,transfusion用来存
strcat(temp->casehist,c); strcat(temp->casehist,":"); printf(”请输入新病历的内容\n");
gets(d);
strcat(temp->casehist,d);
2)载入链表信息是首先定义一个文件指针,然后以只读方式打开文件。若失败则输出提示信息返
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语言 药品仓库管理系统设计
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#include <windows.h>#pragma comment(lib, "winmm.lib")#define BACKSPACE 8#define PASS_MAXLEN 128#define NAME_MAXLEN 50struct cangku{char name[20]; //存放药品名称char shoop_name[20]; //存放药品厂商名称int num; //存放药品的编号float input_vale; //存放药品的进货价格float inout_vale; //存放药品的出售价格int number; //存放药品的数量};struct pass{char name[30]; //存放用户名char password[30]; //存放密码}word[11]={0,0};struct pass_1 //存放修改密码时的临时结构体{char name[30];char password[30];}xiu_pass[11]={0,0};struct cangku ck[50]; //定义结构体数组typedef struct cangku Cangku;int answer() //进入提示函数{char ch;printf("是否进入?\t");printf("确定按Y,否定按N 或任意键?(Y/N)\n");ch=getchar();getchar();if(ch=='Y'||ch=='y'){return 1;}else return 0;}int init_display () //登入界面初始化函数{system("color 1F");printf("\t***************************************************\n");printf("\t***************************************************\n");printf("\t***************************************************\n");printf("\t*******************欢迎使用本系统*****************\n");printf("\t***************************************************\n");printf("\t***************************************************\n");printf("\t***************************************************\n");printf("\t********************请登入本系统******************\n");printf("\t***************************************************\n");printf("\t***************************************************\n");printf("\t***************************************************\n");printf("\t 作者:jj \n");printf("\t***************************************************\n");printf("\t 电子信息工程12年级\n");printf("\t***************************************************\n");printf("\t 2010年4月10日\n");printf("\t***************************************************\n");printf("\n");return 0;}int Menu_select() //药品菜单函数{printf("按回车键进入仓库管理菜单\n");getchar();system("cls");system("color F0");printf(" *************************药库药品管理系统****************************\n");printf("*********************************************************************\n");printf(" * 1. 药品添加初始化录入*\n");printf("*********************************************************************\n");printf(" * 2. 药品的删除*\n");printf("*********************************************************************\n");printf(" * 3. 药品的修改*\n");printf("*********************************************************************\n");printf(" * 4. 药品的智能查找*\n");printf("*********************************************************************\n");printf(" * 5. 显示库存的所有药品信息*\n");printf("*********************************************************************\n");printf(" * 6. 再次添加药品*\n");printf("*********************************************************************\n");printf(" * 7. 用户密码管理*\n");printf("*********************************************************************\n");printf(" * 8. 药品出库入库*\n");printf("*********************************************************************\n");printf(" * 9. 退出*\n");printf("*********************************************************************\n");return 0;}int input(struct cangku t[]) //药品输入函数{int i,n;system("cls");system("color 6E");printf("\n请输入要添加的数目:\n");scanf("%d",&n);printf("开始输入药品信息:\n");for(i=0;i<n;i++){system("cls");printf("\n第%d个药品的编号:",i+1);scanf ("%d",&t[i].num);getchar();printf("第%d个药品的数量:",i+1);scanf ("%d",&t[i].number);getchar();printf("第%d个药品的名称:",i+1);scanf ("%s",t[i].name);getchar();printf("第%d个药品的厂商名称:",i+1);scanf ("%s",t[i].shoop_name);getchar();printf("第%d个药品的进价:",i+1);scanf ("%f",&t[i].input_vale);getchar();printf("第%d个药品的售价:",i+1);scanf ("%f",&t[i].inout_vale);getchar();}printf("写入成功\n");return (n);}void SaveRecord(Cangku t[],int n)//添加药品后保存文件函数{int i;FILE *fp;if((fp=fopen("yaoping.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp);}fclose(fp);}void SaveRecord_1(Cangku t[],int n)//修改药品后时保存文件函数{int i;FILE *fp;if((fp=fopen("yaoping.txt","w"))==NULL){printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp);}fclose(fp);}int LoadRecord(Cangku t[])//读取文件函数{int n=0;FILE *fp;if((fp=fopen("yaoping.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}rewind(fp);while(fread(&t[n],sizeof(struct cangku),1,fp)) n++;fclose(fp);return n;}void List(Cangku t[],int n)//显示药品函数{int i;system("color 7c");printf("****************************************************************************\n") ;printf(" 编号药品名称厂商名称数量进货价格售价\n");printf(" ----------------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%6d%15s%15s%10d%15.2f%15.2f\n",t[i].num,t[i].name, t[i].shoop_name, t[i].number,t[i].input_vale, t[i].inout_vale );}printf("****************************************************************************\n") ;printf ("\n");printf("\n");}int DeleteRecord(Cangku t[],int n)//删除药品函数{char s[20];char ch;int i,j;int flag=0;system("color 02");printf("请输入要删除药品的名称\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){flag=1;system("cls");printf("\n\n要删除的仓库信息如下:\n");printf("\n");printf("****************************************************************************\n") ;printf(" 编号药品名称厂商名称数量进货价格售价\n");printf(" ----------------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%6d%15s%15s%10d%15.2f%15.2f\n",t[i].num,t[i].name,t[i].shoop_name, t[i].number,t[i].input_vale, t[i].inout_vale );}printf("****************************************************************************\n") ;printf ("\n");printf("确定删除仓库信息吗?(Y/N)\n");ch=getchar();ch=getchar();if(ch=='Y'||ch=='y'){for(j=i;j<n-1;j++)t[j]=t[j+1];n--;i--;printf ("删除成功.\n");}}}if(flag==0){printf("要删除的药品不存在!!\n");}getchar();return n;}int xiugai_shoop(Cangku t[],int n)//修改药品函数{int i,flag=0;int s;char temp[20];char ch,ch1,ch2,ch3,ch4;system("color 1F");printf("请输入要修改的药品的编号\n");scanf("%d",&s);for(i=0;i<n;i++){if(s==t[i].num){strcpy(temp,t[i].name);flag=1;system("cls");printf("\n\n要修改的仓库信息如下:\n");printf("\n");printf("****************************************************************************\n") ;printf(" 编号药品名称厂商名称数量进货价格售价\n");printf(" ----------------------------------------------------------------------------\n");printf("%6d%15s%15s%10d%15.2f%15.2f\n",t[i].num,t[i].name, t[i].shoop_name, t[i].number,t[i].input_vale, t[i].inout_vale );printf("****************************************************************************\n") ;printf ("\n");printf("是否修改药品编号\t");printf("确定修改?(Y/N)\n");ch=getchar();ch=getchar();if(ch=='Y'||ch=='y'){printf("请输入药品%s的新的编号:",temp);scanf("%d",&t[i].num);printf("修改成功\n");}printf("是否修改药品名称\t");printf("确定修改?(Y/N)\n");ch1=getchar();ch1=getchar();if(ch1=='Y'||ch1=='y'){printf("请输入药品%s的新的名称:",temp); scanf("%s",t[i].name);printf("修改成功\n");}printf("是否修改药品的厂商名称\t");printf("确定修改?(Y/N)\n");ch2=getchar();ch2=getchar();if(ch2=='Y'||ch2=='y'){printf("请输入%s药品新的厂商名称:",temp); scanf("%s",t[i].shoop_name);printf("修改成功\n");}printf("是否修改药品的进货价格\t");printf("确定修改?(Y/N)\n");ch3=getchar();ch3=getchar();if(ch3=='Y'||ch3=='y'){printf("请输入%s药品新的进货价格:",temp); scanf("%f",&t[i].input_vale);printf("修改成功\n");}printf("是否修改药品的出售价格\t");printf("确定修改?(Y/N)\n");ch4=getchar();ch4=getchar();if(ch4=='Y'||ch4=='y'){printf("请输入%s药品新的出售价格:",temp); scanf("%f",&t[i].inout_vale);printf("修改成功\n");}getchar();return n;}}if(flag==0)printf("要修改的仓库不存在!!\n");printf("\n");printf("修改所有信息完毕\n");getchar();return n;}void SaveRecord_2(Cangku t[],int n)//保存文件函数{int i;FILE *fp;if((fp=fopen("yaoping.txt","w"))==NULL){printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp);}fclose(fp);}int find_Name(Cangku t[],int n)//药品按名称查找函数char s[20],ch;int i,flag=0;system("cls");system("color 5F");printf("请输入要查找药品的名称或者药品名的关键字:\n");scanf("%s",s);ch=getchar();for(i=0;i<n;i++){if(strstr(t[i].name,s)){flag=1;printf("\n\n要查找的仓库信息如下:\n");printf("\n");printf("****************************************************************************\n") ;printf(" 编号药品名称厂商名称数量进货价格售价\n");printf(" ----------------------------------------------------------------------------\n");printf("%6d%15s%15s%10d%15.2f%15.2f\n",t[i].num,t[i].name, t[i].shoop_name, t[i].number,t[i].input_vale, t[i].inout_vale );printf("****************************************************************************\n") ;printf ("\n");}}if(flag==0)printf("要查找的仓库不存在!!\n");printf("\n");return 0;}int find_num(Cangku t[],int n) //药品按编号查找函数{int num;int i,flag=0;system("cls");system("color 7c");printf("请输入要查找药品的编号:\n");scanf("%d",&num);getchar();for(i=0;i<n;i++){if(t[i].num == num){flag=1;printf("\n\n要查找的仓库信息如下:\n");printf("\n");printf("****************************************************************************\n") ;printf(" 编号药品名称厂商名称数量进货价格售价\n");printf(" ----------------------------------------------------------------------------\n");printf("%6d%15s%15s%10d%15.2f%15.2f\n",t[i].num,t[i].name, t[i].shoop_name, t[i].number,t[i].input_vale, t[i].inout_vale );printf("****************************************************************************\n") ;printf ("\n");}}if(flag==0)printf("要查找的仓库不存在!!\n");printf("\n");return 0;int Add_shoop(Cangku t[],int n) //添加药品函数{int i,m;system("cls");system("color 7D");printf("\n请输入再增加的药品数量:\n");scanf("%d",&m);getchar();printf("开始追加药品\n");for(i=n;i<n+m;i++){system("cls");printf("\n第%d个药品的编号:",i+1);scanf ("%d",&t[i].num);getchar();printf("第%d个药品的名称:",i+1);scanf ("%s",t[i].name);getchar();printf("第%d个药品的厂商名称:",i+1);scanf ("%s",t[i].shoop_name);getchar();printf("第%d个药品的进价:",i+1);scanf ("%f",&t[i].input_vale);getchar();printf("第%d个药品的售价:",i+1);scanf ("%f",&t[i].inout_vale);getchar();}return (n+m);}int write_mima(struct pass *pass_word)//注册用户名函数{FILE *fp;char pass_1[30]={0};int i=0;printf("请注册的新的用户名:");gets(pass_word[10].name);while(i<3){i++;printf("请输入密码:");gets(pass_word[10].password);printf("请再次输入密码:");gets(pass_1);if(strcmp(pass_1,pass_word[10].password) == 0)break;strcmp(pass_word[10].password,"0");strcmp(pass_1,"0");printf("密码前后不一致\n");printf("\n");}if((fp=fopen("usr_name.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}//rewind(fp);fwrite(&pass_word[10],sizeof(struct pass),1,fp) ;fclose(fp);strcpy(pass_word[10].name,"0");strcpy(pass_word[10].password,"0");return 0;}int read_mima(struct pass *pass_word) //读取密码函数{FILE *fp_3;int temp=0;if((fp_3=fopen("usr_name.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}rewind(fp_3);while(fread(&pass_word[temp],sizeof(struct pass),1,fp_3)){//printf("%s\n",pass_word[temp].name);//printf("%s\n",pass_word[temp].password);temp++;}fclose(fp_3);return temp;}int read_xiugai_mima(struct pass_1 *pass_word) //修改时读取密码{FILE *fp_3;int temp=0;if((fp_3=fopen("usr_name.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}rewind(fp_3);while(fread(&pass_word[temp],sizeof(struct pass),1,fp_3)){printf("当前的用户名有:\t");printf("%s\n",pass_word[temp].name);//printf("%s\n",pass_word[temp].password);temp++;}fclose(fp_3);return temp;}/***********************Purpose:* 从标准输入接受一个密码字符串,并且回显**Entry:* password - 密码字符串指针* pass_maxlen - 字符串最大长度*Exit:* 返回接受的密码字符串长度**********************/int get_password(char *password, unsigned short pass_maxlen){unsigned short i = 0;char letter = '\0';while((i<PASS_MAXLEN-1)&&(letter!='\r')) //如果没有按回车并且达到最大长度{letter = getch();if(letter == BACKSPACE) //如果是退格符,表示要删除前面输入的一个字符{if(i>0)//如果以前输入自符{password[--i] = '\0'; //从缓冲区中删除最有一个字符putchar(BACKSPACE); //光标位置前移一个字符位置putchar(' '); //将要删除的字符(回显的*)从屏幕中置为空白putchar(BACKSPACE); //光标位置前移一个字符位置}else{putchar(7); //响铃}}else if(letter != '\r') //如果按下回车{password[i++] = letter;putchar('*');}}password[i] = '\0'; //设置字符串结束标志return i;}int xiu_gai_mima(struct pass_1 *pass_word,int num) //修改密码函数{int temp=0;char pass[30]={0};char pass_1[30]={0};char usr[30]={0};char usr_password[30]={0};printf("请输入要修改的用户名:");gets(usr);printf("请输入用户名的原始密码:");gets(usr_password);printf("\n");while(temp<=num){if(strcmp(pass_word[temp].name,usr) == 0){if(strcmp(pass_word[temp].password,usr_password) == 0){while(1){printf("请输入新的密码:");get_password(pass, PASS_MAXLEN);//gets(pass);printf("\n");printf("请再次输入新的密码:");get_password(pass_1, PASS_MAXLEN);//gets(pass_1);printf("\n");if(strcmp(pass_1,pass) == 0){strcpy(pass_word[temp].password,pass);printf("修改成功\n");printf("\n");break ;}else printf("新的密码不一致,修改失败\n");}break;}printf("原始密码不匹配,修改失败\n");}temp++;if(temp>num) printf("用户名不存在\n");}return temp;}int deleat_mima(struct pass_1 *pass_word,int num) //删除用户名函数{int temp=0,j=0;char pass[30]={0};char usr[30]={0};char usr_password[30]={0};printf("请输入要删除的用户名:");gets(usr);printf("请输入用户名的原始密码:");gets(usr_password);printf("\n");while(temp<=num){if(strcmp(pass_word[temp].name,usr) == 0){if(strcmp(pass_word[temp].password,usr_password) == 0){for(j=temp;j<num-1;j++){pass_word[j] = pass_word[j+1];}printf("删除成功\n");num--;printf("\n");return num ;}}temp++;if(temp>num) printf("用户名不存在,或原始密码匹配错误\n");}return num;}void Save_mima(struct pass_1 t[],int n)//保存修改密码{int i;FILE *fp;if((fp=fopen("usr_name.txt","w"))==NULL){printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct pass_1),1,fp);}fclose(fp);}int chuku_shoop(Cangku t[],int n)//出库药品函数{int i,flag=0,j=0;int num=0,num_1=0;char name_3[30];char ch;system("color 1F");printf("请输入要出库的药品的名称\n");scanf("%s",&name_3);getchar();for(i=0;i<n;i++){if(strcmp(t[i].name,name_3) == 0){flag=1;system("cls");printf("\n\n要出库的仓库信息如下:\n");printf("\n");printf("****************************************************************************\n") ;printf(" 编号药品名称厂商名称数量进货价格售价\n");printf(" ----------------------------------------------------------------------------\n");printf("%6d%15s%15s%10d%15.2f%15.2f\n",t[i].num,t[i].name, t[i].shoop_name, t[i].number,t[i].input_vale, t[i].inout_vale );printf("****************************************************************************\n") ;printf ("\n");printf("是否确定出库\t");while(j<3){j++;printf("确定按Y ?(Y/N)\n");ch=getchar();getchar();if(ch == 'n'|| ch =='N') return n;if(ch=='Y'||ch=='y'){printf("请输入出库的数量\n");scanf("%d",&num);getchar();num_1=t[i].number;if((num_1-num)>0){t[i].number=(t[i].number-num);printf("出库成功\n");return n;}else{printf("出库失败\n");getchar();return n;}}}return n;}}if(flag==0)printf("要出库的药品不存在!!\n");printf("\n");getchar();return n;}int ruku_shoop(Cangku t[],int n)//入库药品函数{int i,flag=0,j=0;int num=0,num_1=0;char name_3[30];char ch;system("color 1F");printf("请输入要入库的药品的名称\n");scanf("%s",&name_3);getchar();for(i=0;i<n;i++){if(strcmp(t[i].name,name_3) == 0){flag=1;system("cls");printf("\n\n要入库的仓库信息如下:\n");printf("\n");printf("****************************************************************************\n") ;printf(" 编号药品名称厂商名称数量进货价格售价\n");printf(" ----------------------------------------------------------------------------\n");printf("%6d%15s%15s%10d%15.2f%15.2f\n",t[i].num,t[i].name, t[i].shoop_name, t[i].number,t[i].input_vale, t[i].inout_vale );printf("****************************************************************************\n") ;printf ("\n");printf("是否确定入库\t");while(j<3){j++;printf("确定按Y ?(Y/N)\n");ch=getchar();getchar();if(ch == 'n'|| ch =='N') return n;if(ch=='Y'||ch=='y'){printf("请输入入库的数量\n");scanf("%d",&num);getchar();num_1=t[i].number;if((num_1+num)<65535){t[i].number=(t[i].number+num);printf("入库成功\n");return n;}else{printf("入库失败\n");getchar();return n;}}}return n;}if(flag==0)printf("要入库的药品不存在!!\n");printf("\n");getchar();return n;}int menu()//操作菜单函数{int i=0,j=0,cha;int temp_3=3,temp_4=1;int xx=0,yy=0;int length=0;int len=0;int password=0;int sw=0;char choice[256];while (1){Menu_select();printf("\n");printf("请选择操作\n");fgets(choice, 256, stdin);switch(choice[0]){case '1':temp_3=answer();if(temp_3 == 1){length=input(ck);SaveRecord(ck,length);}break;case '5':temp_3=answer();if(temp_3 == 1){length=LoadRecord(ck);system("cls");List(ck,length);}break;case '2':temp_3=answer();if(temp_3 == 1){system("cls");length=LoadRecord(ck);List(ck,length);xx=length;length=DeleteRecord(ck,length);if(xx!=length)SaveRecord_1(ck,length);}break;case '3':temp_3=answer();if(temp_3 == 1){system("cls");length=LoadRecord(ck);List(ck,length);length=xiugai_shoop(ck,length);SaveRecord_2(ck,length);}break;case '4':temp_3=answer();if(temp_3 == 1){length=LoadRecord(ck);printf("1. 编号查询 2.名称查询\n ");scanf("%d",&cha);getchar();if(cha == 1) find_num(ck,length);else if(cha == 2) find_Name(ck,length);}break;case '6':temp_3=answer();if(temp_3 == 1){length=LoadRecord(ck);yy=length;length=Add_shoop(ck,length);if(yy!=length)SaveRecord_1(ck,length);printf("添加成功\n");}break;case '7':temp_3=answer();if(temp_3 == 1){system("cls");printf("1 修改密码 2 删除用户账号\n");scanf("%d",&password);getchar();if(password == 1){len=read_xiugai_mima(xiu_pass);xiu_gai_mima(xiu_pass,len);Save_mima(xiu_pass,len);}if(password ==2){len=read_xiugai_mima(xiu_pass);len=deleat_mima(xiu_pass,len);Save_mima(xiu_pass,len);}}break;case '8':temp_3=answer();if(temp_3 == 1){system("cls");printf("1 入库\t 2 出库\n");scanf("%d",&sw);length=LoadRecord(ck);List(ck,length);if(sw == 2)chuku_shoop(ck,length);else if(sw == 1)ruku_shoop(ck,length);SaveRecord_1(ck,length);}break;case '9':temp_3=answer();if(temp_3 == 1){return 0;}break;default:system("cls");printf ("不要调皮重新选择\n");printf ("\n");break;}}}int main()//主函数{int i=0,j=0;int temp_3=3,temp_4=1,num=0,num_1=0;int xx=0,yy=0;int length=0;int num_3=0;char mi;char n[30]={0};char p[PASS_MAXLEN];init_display();while(num_3<5){num_3++;printf("1 登陆系统:\t\t 2 注册新的管理账号\n ");mi=getchar();getchar();if(mi == '2')temp_4=write_mima(word);if(temp_4 == 0){temp_4=1;printf("注册成功帐号成功\n");system("cls");printf("\n");printf("\n");mi=1;}if(mi =='1'){num=read_mima(word);if(num == 0){printf("不存在账号,请注册\n");return 0;}printf("目前本系统有%d个用户\n",num);printf("\n");printf("请登录系统\n");printf("\n");printf("请输入用户名:\t ");gets(n);printf("请输入密码: ");get_password(p, PASS_MAXLEN);printf("\n");system("cls");while(num_1 < num){if( (strcmp(word[num_1].name,n) == 0) && (strcmp(word[num_1].password,p) == 0) ){printf("欢迎使用药物管理系统\n");menu();return 0;}num_1++;}printf("用户名错误or 密码错误or 账号不存在!!!,请重新输入\n");printf("你还有两次机会\n");printf("\n");for(i=0,num_1=0; i<2 ;i++){printf("1 登陆系统:\t\t \n ");printf("请输入用户名:\t ");gets(n);printf("请输入密码: ");get_password(p, PASS_MAXLEN);printf("\n");system("cls");while(num_1 < num){if( (strcmp(word[num_1].name,n) == 0) && (strcmp(word[num_1].password,p) == 0) ){printf("欢迎使用药物管理系统\n");mciSendString("open \"C:\\Users\\Administrator\\Desktop\\char\\jun\\可惜没如果.mp3\" alias file", NULL, 0, NULL);mciSendString("play file", NULL, 0, NULL);menu();getchar();return 0;}num_1++;}num_1=0;j++;if(j == 3){printf("系统已锁定\n");return 0;}printf("用户名错误or 密码错误or 账号不存在!!!,请重新输入\n");printf("你还有%d次机会\n",(2-j));printf("\n");printf("\n");}}}return 0;}。
完整版《C语言程序设计》药房管理系统
课程设计报告( 201—201学年第学期)课程:题目:姓名:专业:学号:高级语言程序设计药房管理系统指导教师:达成时间:一、课程设计的内容(课程设计题目,正式报告需将括号内文字删除)药房管理系统功能:设计药房管理系统,输入药品基本信息(药品编号、名称、单价、库存数量、品牌),并实现以下功能:1、更正、删除指定药品的信息2、按单价或库存数量排序并显示药品信息3、统计指定品牌药品数量分步推行:1、初步达成整体设计,搭好框架,确定人机对话的界面,确定函数个数;2、达成最低要求:实现药品的增加、更正、删除等功能;3、进一步要求:实现排序及统计功能。
要求: 1、用 C 语言实现程序设计;2、系统的各个功能模块要求用函数实现;3、界面友好(优异的人机交互),程序加必要的说明。
二、功能描述(对系统要实现的功能进行描述,正式报告需将括号内文字删除)1、能正确地录入药品信息并保存下来。
2、能够有效、快速地查察全部药品的信息。
3、可以查察某一药品的信息( 按药品的默认序号查察)4 、能够查察某一药品的信息( 按药品的编号进行查察 )5 、能够依照管理人员的意愿更正任意药品的信息 6、能更正药品信息 7、此系统还能够对药品的单价进行排序三、大纲设计(依照功能描述建立系统的系统结构,立刻整个系统分解成若干子功能模块,并用框图表示各功能模块之间的连结关系,并简要说明各模块的功能,正式报告需将括号内文字删除)主界面输入更正删除药品统计保存药品药品药品排序药品退出信息信息信息数量药品名称单价库存品牌更正单价库存全部删除库存单价编号数量名称数量删除单个数量排序排序输入药品信息主界面输入名称输入编号输入单价输入数量输入品牌可否连续是否删除药品主界面全部删除单个删除确认取消按名称删除确认可否删除是否删除成功四、详细设计(详细说明各功能模块的实现过程,包括用流程图对算法进行描述、所用到的数据结构、算法实现的主要源代码等,正式报告需将括号内文字删除)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>struct medicine{char name[20];// 药品名称char number[50];// 药品编号char price[50];//单价char inventory[50];//库存数量char brand[20];//品牌}medicine[100];//假设最大数为100.//定义全局变量 numint num;int menu_select(){char s[80];int a;/* 定义整形变量*/system("cls");printf("\t\t-------------您好!您已进入药房管理系统-----------\n\n");printf("\t\t\t1. 输入药品信息\n");printf("\t\t\t2. 查察药品信息\n");printf("\t\t\t3. 更正药品信息\n");printf("\t\t\t4. 按编号查找药品\n");printf("\t\t\t5. 按价格排序\n");printf("\t\t\t6. 删除药品信息\n");printf("\t\t\t7. 退出 \n");printf("\t\t------------------------------------------\n\n");do{printf("Enter you choice(1~7):");scanf("%s",s);a=atoi(s);}while (a<1 || a>7);return a;}int addmedicine(){printf("\t\t\t--------------请输入您要保存的信息------------\n");printf("\t\t\t 输入药品名称:\n");scanf("%s",medicine[num].name);printf("\t\t\t 输入药品编号:\n");scanf("%s",medicine[num].number);printf("\t\t\t 单价 :\n");scanf("%s",medicine[num].price);printf("\t\t\t 品牌 :\n");scanf("%s",medicine[num].brand);printf("\t\t\t 库存数量:\n");scanf("%s",medicine[num].inventory);num++;printf("\t\t\t 可否连续增加 ?(Y/N):\n");if(getch()=='y' || getch()=='Y')addmedicine();return(0);}void modifybyname()//按药品名称更正{char c;int i,mark=0;char name[20];printf("\n\t\t 请输入要更正的药品名称:");scanf("%s",name);if(num==0){printf("\n\t\t 文件中无相关药品");printf("\n\t\t 按任意键返回主菜单");getch(); mark++;return;}for(i=0;i<num;i++){if(strcmp(medicine[i].name,name)==0){printf("\n\t\t 以下是您要更正的药品信息");printf("\n\t\t 药品名称 : %s",medicine[i].name);printf("\n\t\t 药品编号 : %s",medicine[i].number);printf("\n\t\t 单价 : %s",medicine[i].price);printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\n\t\t 库存数量 : %s",medicine[i].inventory);printf("\n\t\t 可否更正 (y/n)");if(getch()=='y'){printf("\n\t----------------------请选择更正信息-------------------------");printf("\n\t1-更正药品名称");printf("\n\t2-更正药品编号");printf("\n\t3-更正单价");printf("\n\t4-更正品牌");printf("\n\t5-更正库存数量");printf("\n\t--------------------------------------------------------------------------");printf("\n\t 请选择您所要的服务:");scanf("%s",&c);switch(c){case '1': printf("\n\t 请输入新药品名称:");scanf("%s",medicine[i].name);break;case'2':printf("\n\t 请输入新药品编号:%s");scanf("%s",medicine[i].number);break;case'3':printf("\n\t 请输入新单价: ");scanf("%s",medicine[i].price);break;case'4':printf("\n\t 请输入新品牌: ");scanf("%s",medicine[i].brand);break;case'5':printf("\n\t 请输入新库存数量: ");scanf("%s",medicine[i].inventory);break;}}}}if(mark==0){printf("\n\t\t 药品信息更正达成");printf("\n\t 可否连续更正?(Y/N):");if(getch()=='y')modifybyname();return;}}void list(){int i;system("cls");if(num!=0){printf("\t\t\t----------已为您显示全部药品信息----------\n");for (i=0;i<num;i++){printf("\t\t\t 药品名称: %s\n",medicine[i].name);printf("\t\t\t 药品编号: %s\n",medicine[i].number);printf("\t\t\t 单价: %s\n",medicine[i].price);printf("\n\t\t 品牌 :%s\n",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory);if(i+1<num){system("pause");}}printf("\t\t\t------------------------------\n");}elseprintf("\t\t\t系统中无任何记录\n");printf("\t\t\t按任意键返回主菜单:\n");getch();return;}int searchbyname(){int mark=0;int i;printf("\t\t\t----------按药品名称查找----------\n");char name[20];printf("\t\t\t 请输入药品名称:\n");scanf("%s",name);for(i=0;i<num;i++){if (strcmp(medicine[i].name,name)==0){printf("\t\t\t-------以下是您查找的药品信息-------\n");printf("\t\t\t 药品名称:%s",medicine[i].name);printf("\t\t\t 药品编号:%s",medicine[i].number);printf("\t\t\t 单价:%s",medicine[i].price);printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory);printf("\t\t\t------------------------------------------------------\n");mark++;if((i+1)<num){printf("\t\t\t 可否连续查找相同名称的药品信息:(y/n)\n");if(getch()=='y' || getch()=='Y'){continue;}elsereturn(0);}else{printf("\t\t\t 请按任意键返回主菜单");getch();return(0);}}}if(mark == 0){printf("\t\t\t 没有您要查找的药品记录\n");printf("\t\t\t 请按任意键返回主菜单\n");getch();return(0);}return 0;}int searchbynumber(){int mark=0;int i;printf("\t\t\t---------------按药品编号查找--------------\n");char number[10];printf("\t\t\t 请输入药品编号:\n");scanf("%s",number);for(i=0;i<num;i++){if (strcmp(medicine[i].number,number)==0){printf("\t\t\t---------------以下是您查找的药品信息---------------\n");printf("\t\t\t 药品名称:%s",medicine[i].name);printf("\t\t\t 药品编号:%s",medicine[i].number);printf("\t\t\t 单价:%s",medicine[i].price);printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory);printf("\t\t\t-------------------------------------------------\n");printf("\t\t\t请按任意键返回主菜单\n");mark++;getch();return(0);}}if (mark==0){printf("\t\t\t 没有改药品的信息\n");printf("\t\t\t 请按任意键返回主菜单\n");getch();return(0);}return(0);}void deletebynumber(){int i,j;int deletemark=0;char number[20];printf("\t\t\t 请输入要删除药品编号:\n");scanf("%s",number);if(num==0){printf("\t\t\t 对不起,系统中无任何记录\n");printf("\t\t\t 请按任意键返回主菜单\n");getch();return;}for (i=0;i<num;i++){if (strcmp(medicine[i].number,number)==0){printf("\t\t\t 以下是您要删除的用户记录:\n");printf("\t\t\t 药品名称:%s",medicine[i].name);printf("\t\t\t 药品编号:%s",medicine[i].number);printf("\t\t\t 单价:%s",medicine[i].price);printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory);printf("\t\t\t 可否删除 ?(y/n)");if (getch()=='y' || getch()=='Y'){for (j=i;j<num-1;j++)medicine[j]=medicine[j+1];num--;deletemark++;printf("\t\t\t 删除成功 ");printf("\t\t\t 可否连续删除?(y/n)");if (getch()=='y' || getch()=='Y')deletebynumber();return;}elsereturn;}continue;}if (deletemark==0){printf("\t\t\t 没有该药品的记录");printf("\t\t\t 可否连续删除?(y/n)");if(getch()=='y' || getch()=='Y')deletebynumber();return;}return;}void deletebyname(){int a=0;int findmark=0;int j;int deletemark=0;int i;char name[20];printf("\t\t\t 请输入要删除药品名称:\n");scanf("%s",name);for (i=a;i<num;i++){if(strcmp(medicine[i].name,name)==0){printf("\t\t\t 以下是您要删除的药品信息:");printf("\t\t\t________________________________"); printf("\t\t\t 药品名称:%s",medicine[i].name);printf("\t\t\t 药品编号:%s",medicine[i].number);printf("\t\t\t 单价:%s",medicine[i].price);printf("\n\t\t 品牌 : %s",medicine[i].brand);printf("\t\t\t 库存数量: %s\n",medicine[i].inventory);printf("\t\t\t________________________________"); printf("\t\t\t 可否删除 ?(y/n)");if (getch()=='y' || getch() == 'Y'){for(j=i;j<num-1;j++)medicine[j]=medicine[j+1];num--;deletemark++;printf("\t\t\t 删除成功 ");if((i+1)<num){printf("\t\t\t 可否连续删除相同名称的药品信息?(y/n)"); if (getch()=='y'){a=i;continue;}}printf("\t\t\t 可否连续删除 ?(y/n)");if (getch()=='y')deletebyname();return;}{printf("\t\t\t 可否连续删除相同名称的药品信息?(y/n)");if (getch()=='y' || getch() == 'Y'){a=i;continue;}}}elsecontinue;}if ((deletemark==0)&&(findmark==0)){printf("\t\t\t 没有该药品的记录");printf("\t\t\t 可否连续删除 ?(y/n)");if(getch()=='y' || getch() == 'Y')deletebynumber();return;}else if (findmark!=0){printf("\t\t\t 没有重名信息");printf("\t\t\t 没有该药品的记录");printf("\t\t\t 可否连续删除 ?(y/n)");if(getch()=='y' || getch() == 'Y')deletebynumber();return;}int dele()//删除记录{char choic;printf("\t\t\t1- 按药品编号删除2-按药品名称删除");printf("\t\t\t 请选择: ");choic=getch();switch (choic){case '1':deletebynumber();break;case '2':deletebyname();break;}return(0);}int sortbyprice()// 按药品单价进行排序{int i,j;struct medicine tmp;for (i=1;i<num;i++){if(strcmp(medicine[i].price,medicine[i-1].price)<0){tmp=medicine[i];j=i-1;do{medicine[j+1]=medicine[j];j--;}while ((strcmp(tmp.price,medicine[j].price)<0&&j>=0));medicine[j+1]=tmp;}printf("\t\t\t 排序成功 ,可否显示 ?(y/n)");if (getch()=='y')list();return(0);}int main(){printf("\t\t---------------------------------------------------------\n");printf("\t\t---------Welcome to management system ----------\n");printf("\t\t----------Made By FACE CARD-------------\n");printf("\t\t---------------------------------------------------------\n");printf(" 请按任意键进入主菜单 :)\n");getch();int selectnum;while(1){selectnum = menu_select();switch(selectnum){case 1:{addmedicine();// 增加药品信息break;}case 2:{list();break;}case 3:{modifybyname();//更正药品信息break;}case 4:{searchbynumber();// 按药品编号查找break;}case 5:{sortbyprice(); // 按药品单价排序break;}case 6:{dele();break;}case 7:{printf("BYE BYE!\n");system("pause");getchar();exit(0);}}}getchar();return 0;}五、测试结果(说明系统的各模块运行结果(附运行界面图片),正式报告需将括号内文字删除)1、进入系统运行界面2、增加药品信息3、显示药品信息4、更正药品信息5、按编号查找药品信息6、按价格排序7、删除药品信息8、退出系统六、总结(谈谈自己的课程设计中的心得领悟,正式报告需将括号内文字删除)整个实验比较复杂,我使用switch 语句调用菜单中的各个功能软件调用不相同的函数来实现不相同的功能,经过屡次调用函数来实现屡次输入。
C语言程序的设计医院信息管理系统附源代码
C语言程序的设计医院信息管理系统附源代码一、引言医院信息管理系统是一个用于管理医院内部各项业务的软件系统。
它能够帮助医院实现患者信息管理、医生排班管理、药品库存管理等功能。
本文将介绍如何使用C语言设计一个简单的医院信息管理系统,并提供相应的源代码。
二、系统功能需求1. 患者信息管理:包括患者基本信息的录入、查询和修改功能,如姓名、性别、年龄、联系方式等。
2. 医生排班管理:包括医生信息的录入、查询和修改功能,如姓名、专业、职称等,并能够根据日期查询医生的排班情况。
3. 挂号管理:包括患者挂号、退号和查询挂号信息的功能,如挂号日期、挂号费用等。
4. 病历管理:包括患者病历的录入、查询和修改功能,如病历编号、病历内容等。
5. 药品库存管理:包括药品信息的录入、查询和修改功能,如药品名称、库存数量、进货价格等,并能够根据药品名称查询库存情况。
6. 药品销售管理:包括药品销售、退货和查询销售信息的功能,如销售日期、销售数量、销售金额等。
三、系统设计1. 数据结构设计在设计医院信息管理系统时,我们可以使用结构体来表示患者、医生、挂号、病历和药品等相关信息。
例如,可以定义如下结构体:```ctypedef struct {char name[20];char gender[10];int age;char contact[20];} Patient;typedef struct {char name[20];char specialty[20];char title[20];} Doctor;typedef struct {char date[20];int fee;} Registration;typedef struct {int id;char content[100];} MedicalRecord;typedef struct {char name[20];int quantity;float price;} Drug;```2. 功能模块设计根据系统功能需求,我们可以将系统划分为以下几个功能模块:- 患者信息管理模块:实现患者信息的录入、查询和修改功能。
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语言药房管理系统
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>struct medicine{char name[20]; //药品名称char number[50]; //药品编号char price[50]; //单价char inventory[50]; //库存数量char brand[20]; //品牌} medicine[100]; //假设最大数为100.//定义全局变量numint num;int menu_select(){char s[80];int a;/*定义整形变量*/system("cls");printf("\t\t-------------您好!您已进入药房管理系统-----------\n\n");printf("\t\t\t1. 输入药品信息\n");printf("\t\t\t2. 查看药品信息\n");printf("\t\t\t3. 修改药品信息\n");printf("\t\t\t4. 按编号查找药品\n");printf("\t\t\t5. 按价格排序 \n");printf("\t\t\t6. 删除药品信息\n");printf("\t\t\t7. 退出\n");printf("\t\t------------------------------------------\n\n");do{printf("Enter you choice(1~7):");scanf("%s",s);a=atoi(s);}while (a<1 || a>7);return a;}int addmedicine(){printf("\t\t\t--------------请输入您要保存的信息 ------------\n");printf("\t\t\t输入药品名称:\n");scanf("%s",medicine[num].name);printf("\t\t\t输入药品编号:\n");scanf("%s",medicine[num].number);printf("\t\t\t单价:\n");scanf("%s",medicine[num].price);printf("\t\t\t品牌:\n");scanf("%s",medicine[num].brand);printf("\t\t\t库存数量 :\n");scanf("%s",medicine[num].inventory);num++;printf("\t\t\t是否继续添加?(Y/N):\n");if(getch()=='y' || getch()=='Y')addmedicine();return(0);}void modifybyname() //按药品名称修改{char c;int i,mark=0;char name[20];printf("\n\t\t请输入要修改的药品名称:");scanf("%s",name);if(num==0){printf("\n\t\t文件中无相关药品");printf("\n\t\t按任意键返回主菜单");getch(); mark++;return;}for(i=0;i<num;i++){if(strcmp(medicine[i].name,name)==0){printf("\n\t\t以下是您要修改的药品信息");printf("\n\t\t药品名称: %s",medicine[i].name);printf("\n\t\t药品编号: %s",medicine[i].number);printf("\n\t\t单价: %s",medicine[i].price);printf("\n\t\t品牌: %s",medicine[i].brand);printf("\n\t\t库存数量: %s",medicine[i].inventory);printf("\n\t\t是否修改(y/n)");if(getch()=='y'){printf("\n\t----------------------请选择修改信息-------------------------");printf("\n\t 1-修改药品名称 ");printf("\n\t 2-修改药品编号 ");printf("\n\t 3-修改单价 ");printf("\n\t 4-修改品牌 ");printf("\n\t 5-修改库存数量 ");printf("\n\t--------------------------------------------------------------------------");printf("\n\t请选择您所要的服务:");scanf("%s",&c);switch(c){case '1': printf("\n\t请输入新药品名称: ");scanf("%s",medicine[i].name);break;case'2':printf("\n\t请输入新药品编号: %s");scanf("%s",medicine[i].number);break;case'3':printf("\n\t请输入新单价: ");scanf("%s",medicine[i].price);break;case'4':printf("\n\t请输入新品牌: ");scanf("%s",medicine[i].brand);break;case'5':printf("\n\t请输入新库存数量: ");scanf("%s",medicine[i].inventory);break;}}}}if(mark==0){printf("\n\t\t药品信息修改完毕");printf("\n\t是否继续修改?(Y/N):");if(getch()=='y')modifybyname();return;}}void list(){int i;system("cls");if(num!=0){printf("\t\t\t----------已为您显示所有药品信息----------\n");for (i=0;i<num;i++){printf("\t\t\t药品名称:%s\n",medicine[i].name);printf("\t\t\t药品编号:%s\n",medicine[i].number);printf("\t\t\t单价:%s\n",medicine[i].price);printf("\n\t\t品牌: %s\n",medicine[i].brand);printf("\t\t\t库存数量:%s\n",medicine[i].inventory);if(i+1<num){system("pause");}}printf("\t\t\t------------------------------\n");}elseprintf("\t\t\t系统中无任何记录\n");printf("\t\t\t按任意键返回主菜单:\n");getch();return;}int searchbyname(){int mark=0;int i;printf("\t\t\t---------- 按药品名称查找 ----------\n");char name[20];printf("\t\t\t请输入药品名称:\n");scanf("%s",name);for(i=0;i<num;i++){if (strcmp(medicine[i].name,name)==0){printf("\t\t\t------- 以下是您查找的药品信息 -------\n");printf("\t\t\t药品名称: %s",medicine[i].name);printf("\t\t\t药品编号: %s",medicine[i].number);printf("\t\t\t单价: %s",medicine[i].price);printf("\n\t\t品牌: %s",medicine[i].brand);printf("\t\t\t库存数量:%s\n",medicine[i].inventory);printf("\t\t\t------------------------------------------------------\n");mark++;if((i+1)<num){printf("\t\t\t是否继续查找相同名称的药品信息:(y/n)\n");if(getch()=='y' || getch()=='Y'){continue;}elsereturn(0);}else{printf("\t\t\t请按任意键返回主菜单");getch();return(0);}}}if(mark == 0){printf("\t\t\t没有您要查找的药品记录\n");printf("\t\t\t请按任意键返回主菜单\n");getch();return(0);}return 0;}int searchbynumber(){int mark=0;int i;printf("\t\t\t---------------按药品编号查找 --------------\n");char number[10];printf("\t\t\t请输入药品编号:\n");scanf("%s",number);for(i=0;i<num;i++){if (strcmp(medicine[i].number,number)==0){printf("\t\t\t---------------以下是您查找的药品信息 ---------------\n"); printf("\t\t\t药品名称: %s",medicine[i].name);printf("\t\t\t药品编号: %s",medicine[i].number);printf("\t\t\t单价: %s",medicine[i].price);printf("\n\t\t品牌: %s",medicine[i].brand);printf("\t\t\t库存数量:%s\n",medicine[i].inventory);printf("\t\t\t-------------------------------------------------\n");printf("\t\t\t请按任意键返回主菜单\n");mark++;getch();return(0);}}if (mark==0){printf("\t\t\t没有改药品的信息\n");printf("\t\t\t请按任意键返回主菜单\n");getch();return(0);}return(0);}void deletebynumber(){int i,j;int deletemark=0;char number[20];printf("\t\t\t请输入要删除药品编号:\n");scanf("%s",number);if(num==0){printf("\t\t\t对不起,系统中无任何记录\n");printf("\t\t\t请按任意键返回主菜单\n");getch();return;}for (i=0;i<num;i++){if (strcmp(medicine[i].number,number)==0){printf("\t\t\t以下是您要删除的用户记录:\n");printf("\t\t\t药品名称: %s",medicine[i].name);printf("\t\t\t药品编号: %s",medicine[i].number);printf("\t\t\t单价: %s",medicine[i].price);printf("\n\t\t品牌: %s",medicine[i].brand);printf("\t\t\t库存数量:%s\n",medicine[i].inventory);printf("\t\t\t是否删除?(y/n)");if (getch()=='y' || getch()=='Y'){for (j=i;j<num-1;j++)medicine[j]=medicine[j+1];num--;deletemark++;printf("\t\t\t删除成功");printf("\t\t\t是否继续删除?(y/n)");if (getch()=='y' || getch()=='Y')deletebynumber();return;}elsereturn;}continue;}if (deletemark==0){printf("\t\t\t没有该药品的记录");printf("\t\t\t是否继续删除?(y/n)");if(getch()=='y' || getch()=='Y')deletebynumber();return;}return;}void deletebyname(){int a=0;int findmark=0;int j;int deletemark=0;int i;char name[20];printf("\t\t\t请输入要删除药品名称:\n");scanf("%s",name);for (i=a;i<num;i++){if(strcmp(medicine[i].name,name)==0){printf("\t\t\t以下是您要删除的药品信息:");findmark++;printf("\t\t\t________________________________");printf("\t\t\t药品名称: %s",medicine[i].name);printf("\t\t\t药品编号: %s",medicine[i].number);printf("\t\t\t单价: %s",medicine[i].price);printf("\n\t\t品牌: %s",medicine[i].brand);printf("\t\t\t库存数量:%s\n",medicine[i].inventory);printf("\t\t\t________________________________");printf("\t\t\t是否删除?(y/n)");if (getch()=='y' || getch() == 'Y'){for(j=i;j<num-1;j++)medicine[j]=medicine[j+1];num--;deletemark++;printf("\t\t\t删除成功");if((i+1)<num){printf("\t\t\t是否继续删除相同名称的药品信息?(y/n)");if (getch()=='y'){a=i;continue;}}printf("\t\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyname();return;}if((i+1)<num){printf("\t\t\t是否继续删除相同名称的药品信息?(y/n)"); if (getch()=='y' || getch() == 'Y'){a=i;continue;}}}elsecontinue;}if ((deletemark==0)&&(findmark==0)){printf("\t\t\t没有该药品的记录");printf("\t\t\t是否继续删除?(y/n)");if(getch()=='y' || getch() == 'Y')deletebynumber();return;}else if (findmark!=0){printf("\t\t\t没有重名信息");printf("\t\t\t没有该药品的记录");printf("\t\t\t是否继续删除?(y/n)");if(getch()=='y' || getch() == 'Y')deletebynumber();return;}int dele() //删除记录{char choic;printf("\t\t\t1-按药品编号删除 2-按药品名称删除");printf("\t\t\t请选择:");choic=getch();switch (choic){case '1':deletebynumber();break;case '2':deletebyname();break;}return(0);}int sortbyprice() //按药品单价进行排序{int i,j;struct medicine tmp;for (i=1;i<num;i++){if(strcmp(medicine[i].price,medicine[i-1].price)<0){tmp=medicine[i];j=i-1;do{medicine[j+1]=medicine[j];j--;}while ((strcmp(tmp.price,medicine[j].price)<0&&j>=0));medicine[j+1]=tmp;}printf("\t\t\t排序成功,是否显示?(y/n)");if (getch()=='y')list();return(0);}int main(){printf("\t\t---------------------------------------------------------\n"); printf("\t\t---------Welcome to management system ----------\n");printf("\t\t----------Made By 蒋俊杰李梁伟郑奈春-------------\n");printf("\t\t---------------------------------------------------------\n"); printf("请按任意键进入主菜单:)\n");getch();int selectnum;while(1){selectnum = menu_select();switch(selectnum){case 1:{addmedicine(); //添加药品信息break;}case 2:{list();break;}case 3:{modifybyname(); //修改药品信息break;}case 4:{searchbynumber(); //按药品编号查找 break;}case 5:{sortbyprice(); //按药品单价排序break;}case 6:{dele();break;}case 7:{printf("BYE BYE!\n");system("pause");getchar();exit(0);}}}getchar(); return 0; }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;}}}。