1、1.程序代码完成,编译运行成功。2.数据输入首选采用文件的方式,其次键盘输入。3.分析采用哪种合适的存储结构来储存数据4.设计一定的用户界面,简洁。二、 功能分析1. 功能模块图2. 程序流程图查看 添加 返回 删除 修改 返回 返回 N Y Y N 返回N Y N N 返回 N 返回图2.2 程序流程图三、设计相关代码:#include string.hstdlib.htime.hconio.htypedef struct Drug char Drug_id30; /编号 char Drug_name50; /药品名称 char Drug_type10; /类型 float Drug_pri
2、ce; /价格 int amount; /库存数量 char Drug_time30; /入库时间 char remark30; /备注 struct Drug *next;Drug,*DrugPtr;#define MENU 欢迎进入药品管理系统n 1: 查看已有药品列表n2: 添加新的药品n3: 删除药品信息n4: 修改药品信息n5: 分类查询n0: 退出n 请您选择:#define MENU41 请选择要修改的选项n修改药品名称n修改药品价格n修改药品数量n修改药品类型n修改药品备注n返回主菜单n#define MENU5 欢迎进入分类查询页面n 按编号查询n 按名称查询n 按类型查询n
3、 按价格查询n 按库存数量查询n6: 按入库时间查询n 返回主菜单n#define MENU50 按药品编号查询n请输入要查询的药品编号:#define MENU51 按药品名称查询n请输入要查询的药品名称:#define MENU52 按药品类型查询n 请输入要查询的药品类型:n 中药n 中成药n 西药n 返回查询菜单n#define MENU53 按药品价格查询n请输入要查询的药品价格:#define MENU54 按药品库存数量查询n请输入要查询的药品的库存数量:#define MENU55 按药品入库时间查询n请输入要查询的药品入库时间:#define STRCMP(NAME, STR
4、) 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 & /将文件读入链表void *GetStdin(const char *numstr, char *control, void *ret);DrugPtr getvalue(); /取值void druginsert(Dr
5、ugPtr &yaolist, DrugPtr yao); /插入操作int isdrugin(DrugPtr yaolist, DrugPtr yao); /判断void drugmodify(DrugPtr & /修改操作void deletenode(DrugPtr &yaolist,char drug_id); /删除操作void deletedrug(DrugPtr &void updatedrug(DrugPtr &void listshow(DrugPtr yaolist); /显示操作void drug_find_name(DrugPtr head, char *name);
6、/以名称查询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_
7、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
8、 2: yao=getvalue(); druginsert(head,yao);/添加药品 printf(药品添加成功n); break; case 3: deletedrug(head);/删除药品 case 4: updatedrug(head);/修改药品信息 case 5: /分类查询 drug_type_choose(head); case 0: /退出 save_to_file(head);return 0;void *GetStdin(const char *numstr, char *control, void *ret)cputs(numstr); while (! sca
9、nf(control, ret) fflush(stdin); system(cls cputs(numstr); return ret; /显示列表void listshow(DrugPtr yaolist) printf (%5s%8s%16s%10s%14s%13s%7sn药品编号名称价格类型入库时间,库存数量备注 DrugPtr p=yaolist; if(!p) printf(kong while(p) printf(%-10s%-18s%-10.2f%-10s%-13s%-10d%-10sn,p-Drug_id,p-Drug_name,p-Drug_price,p-Drug_typ
10、e,p-Drug_time,p-amount,p-remark); p=p-next;DrugPtr getvalue() DrugPtr yao=(DrugPtr)malloc(sizeof(Drug);请输入药品编号: scanf(,&yao-Drug_id);请输入药品名称:Drug_name);请输入药品价格:%fDrug_price);请输入药品数量:amount);请输入药品入库时间:Drug_time);请输入药品类型:Drug_type);请输入药品备注: yao-next=NULL; return yao;yaolist, DrugPtr yao) if(!yaolist)
11、yaolist=yao; else yao-next=yaolist- yaolist-next=yao;DrugPtr isdrugin(DrugPtr yaolist,char drug_id) DrugPtr p=yaolist; while(p) if(!strcmp(p-Drug_id,drug_id) break; else p=p- return p; /更新结点 float t=0;/没有这句出现float point not loaded while(*(int *)GetStdin(MENU41, switch(choice) case 1: GetStdin(请输入药品的
12、新名称:,yao- cputs(更新成功!请继续选择n break; case 2:请输入药品的新价格: case 3:请输入药品的修改数量: case 4:请输入药品的新类型: case 5:请输入药品的新备注: case 0: /找到结点返回 update char string30; while (strcmp(char *)GetStdin(请输入药品编号(按0结束):, string), ) yao=isdrugin(yaolist,string); if(yao)/判断药是否存在 drugmodify(yaolist,yao); printf(没有这种药n while (STRCM
13、P(SECOND, string) if (isdrugin(yaolist, string) deletenode(yaolist, string); else printf(药品不存在!yaolist,char drug_id) DrugPtr q,p; q=yaolist; p=q-strcmp(yaolist- yaolist=yaolist- free(q); while(p) if(! q=q- q-next=p- free(p);药品已删除!FILE *fp=fopen(E:/yao.txtrfp)error while( !feof(fp) DrugPtr yao=(DrugP
14、tr)malloc(sizeof(Drug); yao- fscanf(fp,%s%s%f%s%s%d%snDrug_id,yao-Drug_name,&Drug_price,yao-Drug_type,yao-Drug_time,&amount,yao- druginsert(yaolist,yao); fclose(fp);void save_to_file(DrugPtr & FILE *fp=fopen(w fprintf(fp,%-5s%-18s%-10.2f%-10s%-13s%-6d%-10snvoid drug_find_name(DrugPtr head, char *nam
15、e) DrugPtr cur,p; p=head; cur = head; int i=0;Drug_name,name) if(p) while(cur!=NULL)strcmp(cur- printf(,cur-Drug_id, cur-Drug_name, cur-Drug_price,cur-Drug_type,cur-Drug_time,cur-amount,cur- i+; cur=cur-所有名称为%s的数量为%dn,name,i); printf(没有找到该药名!void drug_find_type_z(DrugPtr head)DrugPtr cur,p;Drug_type,中药Drug_type, Drug_id,cur-Drug_name,cur- cur=cur-所有中药的数量为%dn,i);没有该类型的药!void drug_find_type_zc(DrugPtr head)中成药 while(cur! if(!所有中成药的数量为%dnvoid drug_find_type_x(DrugPtr head)西药 while(cur!所有西药的数量为%dn
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2