源程序(医院药房药品管理系统C++)
c课程设计药店管理系统
c 课程设计药店管理系统一、课程目标知识目标:1. 学生能理解药店管理系统的基本概念和功能需求,掌握药品信息管理、库存管理、销售管理等核心模块的基本原理。
2. 学生能够运用数据库知识,设计并实现药店管理系统的数据模型,包括数据表的设计和关系维护。
3. 学生能够结合软件工程方法,编写药店管理系统相关的功能性代码,实现对药品信息、库存和销售的有效管理。
技能目标:1. 学生掌握使用至少一种数据库管理系统(如MySQL、SQLite等)进行药店管理系统数据设计和操作的能力。
2. 学生能够运用面向对象编程思想,使用适当的编程语言(如Java、C#等)实现药店管理系统的功能模块。
3. 学生通过团队协作,学会项目管理的基本方法,提高沟通与协作能力。
情感态度价值观目标:1. 学生通过参与药店管理系统的设计与实现,培养解决问题的兴趣和自信心,增强对信息技术的学习热情。
2. 学生能够认识到信息技术在医药卫生行业中的重要性,提升社会责任感和职业道德意识。
3. 学生在项目实施过程中,学会尊重他人意见,培养团队合作精神,提高集体荣誉感。
课程性质分析:本课程为高年级信息技术或计算机科学与技术相关专业的实践性课程,强调理论知识与实际应用的结合,注重培养学生的动手能力和实际项目经验。
学生特点分析:高年级学生已具备一定的编程基础和数据库知识,具有较强的自学能力和创新意识,同时,他们即将面临毕业和就业,对实际项目的参与有较高的积极性。
教学要求:1. 结合实际案例,引导学生主动探索和解决问题,提高学习的主动性和创造性。
2. 通过团队协作,培养学生的沟通能力和团队精神,提升项目实施的成功率。
3. 注重过程评价,及时反馈学生的学习成果,帮助学生明确自己的不足和努力方向。
二、教学内容本课程教学内容主要包括以下几部分:1. 药店管理系统概述:介绍药店管理系统的概念、发展历程、功能模块和实际应用场景,使学生对该系统有一个全面的认识。
2. 数据库设计:讲解数据库的基本概念、关系型数据库的设计方法,以及如何运用数据库管理系统(如MySQL、SQLite等)进行药店管理系统数据模型设计。
c语言课程设计报告 药房管理系统
xx大学yy学院课程设计实验报告班级:姓名(学号)实验项目名称:药房管理系统实验室(中心):信息科学与工程学院软件中心指导教师:实验完成时间: 2011 年 12 月 29 日序号项目标准评分1 系统演示(功能)(40%)按要求完成系统功能且界面友好容错能力强(36-40)按要求完成系统功能界面一般有较好的容错能力(32-35)基本完成系统功能有一定的容错能力(28-31)基本完成系统功能(24-27分)未完成系统功能或他人代做或抄袭(15)2 课程设计说明书(50%)课程设计书各项目认真填写,具有清晰的设计思路及软件测试结果分析(45-50)课程设计书各项目认真填写,具有较为清晰的设计思路并对软件测试结果进行了较为清晰的分析(40-44)课程设计书各项目认真填写,设计思路正确(35-39)课程设计书进行为较为认真的填写(30-34)课程设计书有未完成项或各项填写不属实或他人代做或抄袭(15)4 纪律遵守、群体协作等(10%)10教师签字总分一、题目药房管理系统(主要是输入药品信息部分、药品药品销量排序和药品库存排序)二、功能描述该系统可以实现的功能主要有:1、能正确地录入药品信息并保存下来。
2、能够有效、快速地查看全部药品的信息。
3、可以查看某一药品的信息(按药品的默认序号查看)4、可以查看某一药品的信息(按药品的编号进行查看)5、能够按照管理人员的意愿修改任意药品的信息(按药品的默认序号修改)。
6、能修改药品信息(按药品的编号进行修改)。
7、当管理员查看药品时,系统能够准确地判断药品的性质。
8、此系统还能对药品的销售量进行排序,以指导后期的药品进出货。
9、能对药品库存进行排序等。
该系统主要是由三个同学一起完成的,而我所做的主要是输入药品信息、药品销量排序和药品库存排序等;在输入药品信息的过程中,系统能够“自己记住“所录入的药品信息,且能够按照已规定的步骤继续执行下去;在药品销量排序部分和药品库存排序部分,运用结构体的方法,采用指针、文件、for循环语句等,使得管理系统能够快速、准确无误地进行排序。
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];c har name[10];c har casehist[200];i nt cost[3];i nt transfusion;i nt surgery;s truct patient *next;};其中cost数组用来存储病人卖药的的个数(总共三种药),casehist存储病历内容,transfusion用来存储病人输液的花费,surgery存储手术的花费。
Struct patient *next用来指向下一个病人结构体的起始地址从而形成一个链表。
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;}}}。
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语言程序设计》药房管理系统
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");
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文件中无相关药品");
三、概要设计(根据功能描述建立系统的体系结构,即将整个系统分解成若干子功能模块,并用框图表示各功能模块之间的衔接关系,并简要说明各模块的功能,正式报告需将括号内文字删除)
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语言课程设计
药店管理系统c语言课程设计一、课程目标知识目标:1. 理解药店管理系统的基本功能需求,掌握C语言实现基础数据结构(如线性表、树等)和算法(如排序、查找等)的能力。
2. 学会使用C语言进行模块化编程,实现药店管理系统的各项功能模块,如药品信息管理、库存管理、销售管理等。
3. 掌握C语言文件操作,实现对药店管理系统数据的持久化存储。
技能目标:1. 培养学生运用C语言解决实际问题的能力,提高编程实践技能。
2. 培养学生分析需求、设计系统、编写程序、调试程序的能力。
3. 提高学生团队协作和沟通能力,能够就药店管理系统项目进行有效讨论和分工。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养勇于挑战、积极进取的学习态度。
2. 培养学生认真负责、严谨细致的工作作风,树立良好的职业道德观念。
3. 增强学生的集体荣誉感,培养合作精神和团队意识。
课程性质:本课程为实践性较强的课程,旨在让学生在实际项目中运用所学知识,提高编程能力和解决实际问题的能力。
学生特点:学生已具备一定的C语言基础,具有较强的逻辑思维能力,但缺乏实际项目经验。
教学要求:结合学生特点和课程性质,注重实践操作,引导学生主动探究,培养学生解决实际问题的能力。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 系统需求分析:介绍药店管理系统的功能需求,让学生理解项目背景和实际应用场景。
- 药品信息管理- 库存管理- 销售管理- 用户权限管理2. 数据结构设计:结合C语言,讲解药店管理系统中所需的数据结构及其应用。
- 线性表- 树结构- 哈希表3. 算法设计与实现:根据药店管理系统需求,学习相关算法并进行编程实践。
- 排序算法- 查找算法- 药品信息增删改查操作4. 模块化编程:引导学生运用模块化思想,实现药店管理系统的各个功能模块。
- 模块划分- 函数封装- 模块间通信5. 文件操作与数据持久化:学习C语言文件操作,实现对药店管理系统数据的存储和读取。
基于C的自动化药店管理系统设计
基于C的自动化药店管理系统设计一、引言随着医疗技术的不断发展和人们健康意识的提高,药店在社会中扮演着越来越重要的角色。
为了提高药店的管理效率和服务质量,自动化药店管理系统应运而生。
本文将基于C语言,设计一个自动化药店管理系统,以实现药品库存管理、销售记录跟踪、客户信息管理等功能。
二、系统设计1. 功能模块设计药品管理模块:包括药品信息录入、库存管理、药品查询等功能。
销售管理模块:记录销售信息、生成销售报表、统计销售数据等。
客户管理模块:客户信息录入、客户购买记录查询、客户分类等功能。
用户权限管理模块:管理员权限设置、用户登录验证等功能。
2. 数据结构设计药品信息结构体:包括药品名称、价格、库存量等字段。
销售记录结构体:包括销售日期、销售数量、销售金额等字段。
客户信息结构体:包括客户姓名、联系方式、购买记录等字段。
3. 界面设计使用C语言的控制台界面,通过菜单选择实现各项功能。
设计清晰简洁的界面,方便用户操作和查看信息。
三、系统实现1. 药品管理模块实现实现药品信息的录入和修改功能,保证库存数据的准确性。
提供药品查询功能,方便用户快速查找所需药品信息。
2. 销售管理模块实现记录每笔销售信息,包括销售日期、销售数量和金额。
自动生成销售报表,统计每日/每月销售情况,为经营决策提供数据支持。
3. 客户管理模块实现实现客户信息的录入和修改功能,建立客户档案。
查询客户购买记录,分析客户消费习惯,提高客户满意度。
4. 用户权限管理模块实现设定管理员权限,保护系统数据安全性。
用户登录验证,确保只有授权人员可以操作系统。
四、系统优化与扩展1. 性能优化对系统进行性能优化,提高系统响应速度和稳定性。
针对大规模数据处理场景进行优化,确保系统运行效率。
2. 功能扩展根据用户需求不断扩展系统功能,满足不同药店的管理需求。
引入智能算法,优化库存管理和销售预测功能。
五、总结与展望自动化药店管理系统基于C语言的设计实现,能够有效提升药店的管理效率和服务质量。
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语言课程设计药房管理
c语言课程设计药房管理一、教学目标本节课的教学目标是使学生掌握C语言编程的基本方法,能够运用C语言设计简单的药房管理系统。
具体目标如下:1.知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等,为药房管理系统的编程奠定基础。
2.技能目标:培养学生运用C语言进行程序设计的能力,学会使用函数、数组、指针等高级特性,提高编程水平。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,增强其团队协作意识,使其认识到计算机编程在实际生活中的重要性。
二、教学内容本节课的教学内容主要包括以下几个部分:1.C语言基本语法和数据类型。
2.运算符与控制结构。
3.函数、数组和指针。
4.文件操作。
5.药房管理系统的需求分析与设计。
三、教学方法为了提高教学效果,本节课将采用多种教学方法相结合的方式:1.讲授法:讲解C语言的基本语法、数据类型、运算符和控制结构等基础知识。
2.案例分析法:通过分析药房管理系统的实际案例,使学生了解并学会使用函数、数组和指针等高级特性。
3.实验法:安排实验室实践环节,让学生动手编写药房管理系统的程序,巩固所学知识。
4.讨论法:学生进行小组讨论,分享编程心得,培养团队协作精神。
四、教学资源为了保证教学效果,本节课将充分利用以下教学资源:1.教材:《C程序设计语言》。
2.参考书:《C Primer Plus》、《C和指针》。
3.多媒体资料:教学PPT、视频教程。
4.实验设备:计算机、网络环境。
5.药房管理系统案例资料:用于案例分析和实践环节。
五、教学评估为了全面、客观地评估学生的学习成果,本节课将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和掌握程度。
2.作业:布置与课程内容相关的编程作业,要求学生在规定时间内完成,以此评估学生的编程能力和实践能力。
3.考试:安排期末考试,包括理论知识和编程实践两部分,以检验学生对C语言编程的掌握程度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
源程序:# 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];//日};struct Goods{//药品信息char name[MAX];//药品名称char price[MAX];//药品价格char number[MAX];//药品数量char cost[MAX];//药品总价char kind[MAX];//药品的种类Date indate;//入库日期Date xiaoqi;//到期时间Goods * next;//下一个结点};class Cangkuguanli { //类定义与实现private:int length;//客户数量Goods * head;//列表的头结点Goods * current;//当前结点public:Cangkuguanli()//构造函数{head=new Goods;//创建头结点current=head;current->next=NULL;length=0;//长度为0}void Creatlist()//创建新的列表{char g='Y';int s=0;length=0;//初始长度为0;current=head;do {Goods * temp=new Goods ;//构建新结点信息length++; //每加一个结点链表长度增1temp->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;cout<<" 请输入药品有效期 (**** ** **):";cin>>temp->xiaoqi.year>>temp->xiaoqi.month>>temp->xiaoqi.day;cout<<" 请输入药品种类: ";cin>>temp->kind;if(head==NULL){head=temp;current=temp;} //head头指针,current尾指针else {current->next=temp,current=temp;}do{cout<<" next ? (Y N) "; //是否继续存入新产品cin>>g;if(g!='Y'&&g!='N'){cout<<"\n error \n ";}}while(g!='Y'&&g!='N');}while(g=='Y');//判断是否继续插入新结点}void Open ()//打开一个数据文件,并建立链表关联和文件中的记录对应{char fname[20];//文件名称cout<<" input the name of the file \n";cin>>fname; //输入要打开的文件名ifstream infile (fname);//创建输入文件流infile>>length;cout<<"\n 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 ;}char fname[20];//文件名称cout<<" input the name of the file you want to put data in \n";cin>>fname;ofstream outfile(fname);//创建输出文件流Goods * temp=head->next;outfile<<length<<endl;//先写入文件的长度while (temp!=NULL)//把所有结点写入到文件fname{outfile<<temp->name<<" "<<temp->price<<" "<<temp->number<<" "<<temp->cost<<" "<<temp->kind<< " "<<temp->indate.year<<" "<<temp->indate.month<<" "<<temp->indate.day<<" "<<temp->xiaoqi.year<<" "<<temp->xiaoqi.month<<" "<<temp->xiaoqi.day<<endl; //写入每个结点信息temp=temp->next;}outfile.close();//关闭文件流}void printinfor( Goods * current)//输出一个结点的信息到字符界面{if(current==NULL){cout<<"\n元素为空 \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);cout<<current->cost; //就是给current->cost10个字符输出,不够往前面加‘ ’空格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.da y;cout<<endl;}// printinforvoid Show()//输出所有结点信息到字符界面{current=head->next;if(current==NULL){cout<<"列表为空 \n";return ;}cout.fill(' ');cout.width(2);cout<<"名称";cout.width(8);cout<<"价格";cout.width(8);cout<<"数量";cout.width(8);cout<<"总费用";cout.width(10);cout<<"药品的种类";cout.width(15);cout<<"购进时间";cout.width(15);cout<<"有效期";cout<<endl; //输出属性列while(current!=NULL){ //循环输出所有结点printinfor( current );current=current->next;}}//showGoods *Searchindate(Date t){ //按购入日期搜索返回结点指针temp //结构体t含有t.year t.month t.day三个信息块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;break;}current=current->next;}if(f==false){cout<<"\n 没有满足要求的信息 \n";return NULL;}return temp;}void Queryindate()//按入库日期查询{Date t;cout<<" input the date (**** ** **): ";cin>>t.year>>t.month>>t.day;printinfor(Searchindate (t));}//Queryindate()Goods * Searchname (char r[])//搜索药品名返回结点指针temp{ Goods * temp;current=head->next;bool f=false;while(current!=NULL){if(strcmp(current->name,r)==0){temp=current;f=true;break;}current=current->next;}if(f==false){cout<<"\n 商品名为 : "<<r<<" 的商品不存在 \n ";return NULL;}return temp;}void Queryname() //按药品名查询{char r[MAX];cout<<" input the name: ";cin>>r;printinfor(Searchname (r));}void Query ()//查询函数一个次级菜单{char m;do{cout<<" ********************************************************** "<<endl; cout<<"*******<a> 按入库的时间查询 ***********"<<endl; cout<<"*******<b> 按药品的名称查询 ***********"<<endl; cout<<"*******<c> 退出 ***********"<<endl; cout<<" ********************************************************** "<<endl; cin>>m;switch (m){ //分别调用按不同查询方式下的函数case 'a': Queryindate();break;case 'b': Queryname();break;case 'c': return ;default: cout<<"error!! ";}}while(m!='h');}//Queryvoid Removebynumber () //按总量删除某个结点{char t[MAX]; //需要删除的总量值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;//释放结点cout<<"已删除此药品\n";//break; 此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除}else{current=current->next;}}if(f==false)//false没有改动,表示没有满足条件的结点{cout<<"此药品不存在 ,无须删除 \n";}}//Removebynumbervoid Removebyname () //按名称删除某个结点{char t[20];bool f=false;;Goods * temp;cout<<" 请输入药品的名称:";cin>>t;current=head;while(current->next!=NULL){if(strcmp(current->next->name,t)==0){temp=current->next;current->next=temp->next;length--;f=true;delete temp;cout<<"已删除此药品\n";//break;此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除}else{current=current->next;}}if(f==false){cout<<"此药品不存在 ,无须删除 \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){d=current->next->indate;if(d.year==t.year&&d.month==t.month&&d.day==t.day){temp=current->next;current->next=temp->next;length--;f=true;delete temp;cout<<"已删除此药品\n";}else{current=current->next;}}if(f==false){cout<<"此元素不存在 ,无须删除 \n";}}//Removebyindatevoid Remove ()//删除函数{char g='Y';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;while(current->next!=NULL)//找到尾指针{current=current->next;}temp=new Goods;temp->next=NULL;length++;//链表长加1cout<<" 请输入药品名称: ";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;cout<<"请输入有效期 (**** ** **)";cin>>temp->xiaoqi.year>>temp->xiaoqi.month>>temp->xiaoqi.day;cout<<" 请输入药品的种类:"<<endl;cin>>temp->kind;current->next=temp;//这时current指向尾指针,将要插入的结点接到current后面 current=temp;}//addvoid Modify (){//通过药品名找到要修改的数据项char n[MAX];cout<<"请输入您要修改的药品名:"<<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<<"\t";cout.fill('*');cout.width(21);cout<<'*';cout<<"医院药房管理系统";cout.fill('*');cout.width(19);cout<<'*';cout<<"\n";cout<<"\t********************************************************\n"; cout<<"\t MWDICINE STORE MANAGEMENT SYSTERM\n";cout<<"\t********************************************************\n"; cout<<"\t && && <C> 药品入库 &&&&&&&&&&&&&&& \n"; cout<<"\t && && <R> 药品出库 &&&&&&&&&&&&&&& \n"; cout<<"\t && && <M> 药品调价 &&& \n";cout<<"\t && && <A>新药品入库 &&& \n"; cout<<"\t && && <O> 打开文件 &&&&&&&&&&&&&&& \n"; cout<<"\t && && <S> 保存文件 &&&&&&&&&&&&&&& \n"; cout<<"\t &&& <D> 显示库存 &&& \n"; cout<<"\t &&& <Q> 药品查询 &&& \n"; cout<<"\t &&& <L> 上下限制 &&& \n"; cout<<"\t &&& <E> 退出 &&& \n"; cout<<"\t********************************************************\n"; cout<<"\t********************************************************\n"; cout<<"\t";cout.fill('*');cout.width(18);cout<<'*';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;case 'N': system ("cls");break;case 'E': return ;default: cout<<" error!! input the right character \n";}//switch}while(g!='E');}//operation};//Cangkuguanliint main (){Cangkuguanli A;A.operation(); return 0;}。