药品管理系统

重新做了一些更改,已经解决之前不能把内容从文件中提取到链表的操作。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<Windows.h>
#include<time.h>struct user
{char useword[100];char password[100];
};typedef struct medicine
{char num[5];//药品编号char name[20];//药品名char otc;//是否为OTC,是为T否为Nint lye;//保质期:2020年int lmo;//1月int lda;//1日int number;//剩余量
}doc;char nu[5];
char nam[20];
char ot;
int ly;
int lm;
int ld;
int num;typedef struct lnode
{doc data;struct lnode *next;
}linklist;void surface()
{printf("                      *********************************************************\n");printf("                      *                                                       *\n");printf("                      *       Welcome to the medicine management system       *\n");printf("                      *               Press any key to continue               *\n");printf("                      *                                                       *\n");printf("                      *********************************************************\n");
}void menu()
{printf("                      *********************************************************\n");printf("                      *                                                       *\n");printf("                      *                     药店管理系统                      *\n");printf("                      *                  1:增加药品信息                      *\n");printf("                      *                  2:删除药品信息                      *\n");printf("                      *                  3:修改药品信息                      *\n");printf("                      *                  4:查找药品信息                      *\n");printf("                      *                  5:按照药品剩余量排序                *\n");printf("                      *                  6:查找是否有过期药品                *\n");printf("                      *                  7:统计总药品剩余量                  *\n");printf("                      *                  8:将信息保存至文件                  *\n");printf("                      *                  0:退出系统                          *\n");printf("                      *                                                       *\n");printf("                      *********************************************************\n");
}linklist* loadfile()
{linklist* q, * k, * head = (linklist*)malloc(sizeof(linklist));linklist temp;FILE* r = fopen("medicine.txt", "r");k = q = head;head->next = NULL;if (r == NULL){r = fopen("medicine.txt", "w");if (r == NULL){printf("打开文件出错!\n");return NULL;}fclose(r);return head;}while (fscanf(r, "%s\t%s\t%c\t%d\t%d\t%d\t%d\n", temp.data.num, temp.data.name, &temp.data.otc, &temp.data.lye, &temp.data.lmo, &temp.data.lda, &temp.data.number) != EOF){temp.next = NULL;q = (linklist*)malloc(sizeof(linklist));*q = temp;k->next = q;k = q;}k->next = NULL;fclose(r);return head;
}int password()//密码
{int n=5,i;struct user use;struct user constrast;struct user write;FILE* fp = fopen("user.txt", "a");FILE* fu = fopen("user.txt", "r");while (1) {system("cls");printf("                      *********************************************************\n");printf("                      *                                                       *\n");printf("                      *                       1:登录用户                     *\n");printf("                      *                       2:注册用户                     *\n");printf("                      *                                                       *\n");printf("                      *********************************************************\n");scanf("%d", &i);system("cls");if (i == 1) {if ((fscanf(fu, "%s\t%s\n", constrast.useword, constrast.password) != EOF)) {while (1) {printf("剩余次数:%d 次\n", n--);printf("请输入用户名:");scanf("%s", write.useword);printf("\n");printf("请输入密码:");scanf("%s", write.password);if ((strcmp(write.useword, constrast.useword) == 0) && (strcmp(write.password, constrast.password)) == 0)return 1;else {system("cls");printf("请再尝试一次:\n");}if (n == 0) {printf("抱歉,登陆失败\n");return 0;}}}else {printf("请先注册!\n");n++;break;}}else if (i == 2) {printf("请输入用户名:");scanf("%s", use.useword);printf("\n");printf("请输入密码:");scanf("%s", use.password);fprintf(fp, "%s\t%s\n", use.useword,use.password);fclose(fp);system("cls");printf("注册成功!\n");}elseprintf("请输入正确的选项\n");}
}void addmedicine(linklist *L)//增加药品信息
{printf("请输入药品信息:\n");printf("药品编号:");scanf("%s", nu);linklist* q = L;while (q->next != NULL){if (strcmp(q->next->data.num, nu) == 0){printf("此药品已存在\n");getchar(); getchar();break;}q = q->next;}if (q->next == NULL){linklist* p;p = (linklist*)malloc(sizeof(linklist));strcpy(p->data.num, nu);printf("药品名:");scanf("%s", nam);strcpy(p->data.name, nam);printf("是否为OTC,是为T否为N:");getchar();scanf("%c", &ot);p->data.otc = ot;printf("保质期\n年份:");scanf("%d", &ly);printf("月份:");scanf("%d", &lm);printf("日期:");scanf("%d", &ld);p->data.lye = ly;p->data.lmo = lm;p->data.lda = ld;printf("剩余量:");scanf("%d", &num);p->data.number = num;p->next = q->next;q->next = p;/*FILE* med = fopen("medicine.txt", "a");fprintf(med, "药品序号:%s 名称:%s OTC:%c 生产日期:%d年%d月%d日 剩余量:%d\n", p->data.num, p->data.name, p->data.otc, p->data.lye, p->data.lmo, p->data.lda, p->data.number);fclose(med);*/}
}void deletemedicine(linklist *L)//删除药品信息
{printf("请输入药品信息:\n");printf("药品编号:");scanf("%s", nu);linklist *q = L,*p;while (q->next != NULL) {if (strcmp(q->next->data.num, nu) == 0) {p = q->next;q->next = p->next;free(p);printf("删除成功!");getchar(); getchar();break;}q = q->next;}if (q->next == NULL) {printf("没有当前药品信息!");getchar(); getchar();}
}void changemedicine(linklist *L)//修改药品信息
{printf("请输入药品信息:\n");printf("药品编号:");scanf("%s", nu);linklist *q = L,*p;while (q->next != NULL) {if (strcmp(q->next->data.num, nu) == 0) {p = q->next;printf("已查到药品信息\n");printf("请输入新药品信息:\n");printf("药品名:");scanf("%s", nam);strcpy(p->data.name, nam);printf("是否为OTC,是为T否为N:");getchar();scanf("%c", &ot);p->data.otc = ot;printf("保质期\n年份:");scanf("%d", &ly);printf("月份:");scanf("%d", &lm);printf("日期:");scanf("%d", &ld);p->data.lye = ly;p->data.lmo = lm;p->data.lda = ld;printf("剩余量:");scanf("%d", &num);p->data.number = num;printf("修改成功!");getchar(); getchar();break;}q = q->next;}if (q->next == NULL) {printf("没有当前药品信息!");getchar(); getchar();}
}void findmedicine(linklist *L)//查找药品信息
{printf("请输入药品信息:\n");printf("药品编号:");scanf("%s", nu);linklist* q = L, * p;while (q->next != NULL) {if (strcmp(q->next->data.num, nu) == 0) {p = q->next;printf("药品名:%s\n",p->data.name);printf("是否为OTC:%c\n", p->data.otc);printf("保质期:%d年%d月%d日\n", p->data.lye,p->data.lmo,p->data.lda);printf("剩余量:%d\n", p->data.number);getchar(); getchar();break;}q = q->next;}if (q->next == NULL) {printf("没有当前药品信息!");getchar(); getchar();}
}void ranknumber(linklist* L)//按照药品剩余量排序
{long int sum = 0;linklist* r = L->next,*q,*p;if (r == NULL) {printf("当前没有任何药品信息!");getchar(); getchar();return;}while (r != NULL) {p = r;q = r->next;linklist* tmp;//用于排序时暂存节点  tmp = (linklist*)malloc(sizeof(linklist));while (q != NULL){if (q->data.number > p->data.number){/*先复制q结点信息到tmp*/strcpy(tmp->data.num, q->data.num);strcpy(tmp->data.name, q->data.name);tmp->data.otc = q->data.otc;tmp->data.lye = q->data.lye;tmp->data.lmo = q->data.lmo;tmp->data.lda = q->data.lda;tmp->data.number = q->data.number;/*再复制p结点信息到q*/strcpy(q->data.num, p->data.num);strcpy(q->data.name, p->data.name);q->data.otc = p->data.otc;q->data.lye = p->data.lye;q->data.lmo = p->data.lmo;q->data.lda = p->data.lda;q->data.number = p->data.number;/*最后复制exchange结点信息到p*/strcpy(p->data.num, tmp->data.num);strcpy(p->data.name, tmp->data.name);p->data.otc = tmp->data.otc;p->data.lye = tmp->data.lye;p->data.lmo = tmp->data.lmo;p->data.lda = tmp->data.lda;p->data.number = tmp->data.number;}q = q->next;}r = r->next;}printf("排序后的药品信息为:\n");linklist* c=L->next;while (c != NULL) {FILE* med = fopen("medicine.txt", "a");printf("%s\t%s\t%c\t%d\t%d\t%d\t%d\n", c->data.num, c->data.name, c->data.otc, c->data.lye, c->data.lmo, c->data.lda, c->data.number);c = c->next;}getchar(); getchar();
}void finddelayed(linklist* L)//查找是否有过期药品
{int flag = 1;int year, month, day;time_t timep;struct tm* p;time(&timep);p = gmtime(&timep);day = p->tm_mday;/*获取当前月份日数,范围是1-31*/month = 1 + p->tm_mon;/*获取当前月份,范围是0-11,所以要加1*/year = 1900 + p->tm_year;/*获取当前年份,从1900开始,所以要加1900*/linklist* q = L->next;if (q == NULL) {printf("当前没有任何药品信息!");getchar(); getchar();return;}while (q != NULL) {if (q->data.lye < year) {printf("%s已过期\n", q->data.name);flag = 0;}else if (q->data.lye == year && q->data.lmo < month) {printf("%s已过期\n", q->data.name);flag = 0;} else if (q->data.lye == year && q->data.lmo == month && q->data.lda < day) {printf("%s已过期\n", q->data.name);flag = 0;}    q = q->next;}if(flag)printf("当前没有过期药品\n");getchar(); getchar();
}void medicinesum(linklist* L)//统计总药品剩余量
{long int sum=0;linklist* p = L->next;if (p == NULL) {printf("当前没有任何药品信息!");getchar(); getchar();return;}while (p != NULL) {sum += p->data.number;p = p->next;}printf("总药品剩余量为:%ld",sum);getchar(); getchar();
}void document(linklist* L)//将信息保存至文件
{linklist* p = L->next;if (p == NULL) {printf("当前没有任何药品信息!");getchar(); getchar();return;}FILE* med = fopen("medicine.txt", "w");while (p!=NULL) {fprintf(med, "%s\t%s\t%c\t%d\t%d\t%d\t%d\n", p->data.num, p->data.name, p->data.otc, p->data.lye, p->data.lmo, p->data.lda, p->data.number);p = p->next;}fclose(med);printf("保存成功!");getchar(); getchar();
}int main(void)
{int i, n, flag=1;system("cls");//清屏surface();getchar();system("cls");i=password();if (i == 0)return 0;linklist* L;L = loadfile();while(1){system("cls");menu();scanf("%d", &n);switch (n){case 0:printf("谢谢使用");return 0;case 1:addmedicine(L);break;case 2:deletemedicine(L);break;case 3:changemedicine(L);break;case 4:findmedicine(L);break;case 5:ranknumber(L);break;case 6:finddelayed(L);break;case 7:medicinesum(L);break;case 8:document(L);break;default:printf("请输入正确的选项\n");break;}}
}/*num   name      OTC   ly   lm   ld   number
1   001   阿莫西林   N    2022  8   22   720
2   002   板蓝根     Y    2021  7   10   1080
3   003   维C        Y    2024  1   25   1920
4   004   头孢       N    2020  5   20   400
5   005   999感冒灵  Y    2018  3   12   32
*/
/*
系统功能列表:
序号  功能                  输入  输出      函数定义无   登录                  密码    无         password()0   退出系统              0       无           无1    增加药品信息            1       无           addlinklist()2    删除药品信息            2       无           deletemedicine()3     修改药品信息            3       无           changemedicine()4     查找药品信息            4       药品信息    findmedicine()5   按照药品剩余量排序 5       剩余量顺序   ranknumber()6     查找是否有过期药品 6       T/N         finddelayed()7    统计总药品剩余量      7       药品总数    medicinesum()8    将信息保存至文件      8       保存成功    document()
*/
/*(0)系统启动
(1)欢迎页面
(1)注册或登录系统
(1)显示菜单
(2)选则要进行的操作1-8:addlinklistaddmedicinedeletemedicinechangemedicinefindmedicineranknumberrankdatefinddelayedmedicinesum
(3)退出系统
*/

C语言药店药品管理系统相关推荐

  1. 基于ssm的药房药店药品管理系统

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,基于ssm的药房药店药品管理系统. 计算机毕业生设计,课程设计需要帮助的可以找我 代码 及演示录屏 https://pan.baidu.co ...

  2. MySQL药店管理系统设计,JSP药店药品管理系统的设计(含录像)(MySQL)

    JSP药店药品管理系统的设计(含录像)(MySQL)(毕业论文12000字,程序代码,数据库) 摘要 药店对药品信息和数据管理纷乱复杂,整理统计费力费时.要做好对企业的管理,企业就必须快速准确地获取自 ...

  3. c++项目实习,药店药品管理系统

    项目实习的管理系统都可以用,不啰嗦,直接上干货.有原代码,注释清晰,附带实习报告. 题目要求: 药品信息包括:药品编号.药品名称.生产厂家.保质日期.药品类型.药品数量(已售数量和库存数量).价格等. ...

  4. jspssm小型药店药品管理系统

    目  录 第一章 概述    1 1.1 研究背景    1 1.2开发意义    1 1.3 研究现状    1 1.4 研究内容    2 1.5论文结构    2 第二章 开发技术介绍    3 ...

  5. 基于java的药店药品进销存管理系统

    药店药品管理系统的功能模块包括日常业务.库存管理.查询统计.基础信息管理.系统设置.GSP专项信息等 药品管理管理包括:药品进货管理.药品销售管理.药品库存动态管理.统计表包括:药品库存清单.过期药品 ...

  6. 药品药店管理系统c语言设计,java毕业设计_springboot框架的药店药品货架管理系统...

    这是一个基于java的毕业设计项目,毕设课题为springboot框架的药店药品货架管理系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+ ...

  7. JSP+MySQL1703药店药品销售管理系统

    随着我国国民群众生活水平的提高,生活节奏也是越来越快.群众的体质也变得越来越弱,尤其是最近几年提出了亚健康这观念理论.于是大家对各类药品的需求也越来越多,于是在这样的背景下各地的药房如雨后春笋般出现, ...

  8. java计算机毕业设计基于微信小程序的药店药品销售管理系统APP

    项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, ...

  9. python基于PHP+MySQL的药店药品进销存管理系统

    随着科技的发展,针对不同疾病的药品越来越多,不同的药品有不同的属性,用法用量等内容,如何让药店和医药公司更好的对药品进行管理,是很多人都在研究的问题,本系统就是在这样的一个基础上开发出来的 PHP药店 ...

  10. C语言课设-药品管理系统(含代码)

    用到的知识点 文件操作,fopen,fclose,fprintf,fscanf,fread,fwirte函数等 链表操作,头插法,尾插法,增删节点 window.h里system(color XX), ...

最新文章

  1. linux查看机器所有寄存器,linux系统下操作硬件寄存器
  2. java贪吃蛇教程_用Java做的贪吃蛇,简单版......
  3. MySQL — 外键关联操作
  4. 查询mysql存储数据大小_MySQL如何查询数据占用存储空间的大小?
  5. Python编程基础:第五十三节 匿名函数Lambda Function
  6. python 链表的反转
  7. C语言百度翻译API的使用,c语言怎么翻译? 程序怎么运行?
  8. canvas基本用法
  9. 小程序开发学习(4)---天气预报接口API篇
  10. 使用FastReport报表工具生成报表PDF文档
  11. springboot java获取版本号_深入实践Spring Boot 实战篇,大佬整理出的PDF文档
  12. javabean连接mysql数据库,jsp+javabean 链接 mysql 数据库
  13. 为小程序添加底部导航
  14. Oauth支持的5类 grant_type 及说明 authorization_code — 授权码模式(即先登录获取code,再获取token) password — 密码模式(将用户名,密码传
  15. 电脑是否入侵,是否留有后门
  16. 程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版) 左程云
  17. 拉格朗日插值的优缺点_如何直观地理解拉格朗日插值法?
  18. Mac小白用户看过来,教你这样卸载Mac应用程序
  19. 抖音32级多少钱音浪要刷多少钱 抖币详细介绍
  20. 你怎样看待男女军人接吻

热门文章

  1. java流程图平行四边形_流程图图形标准含义
  2. 记一次进销存软件的破解
  3. 从B站源码泄露事件入手,说一下团队协作中版本管理的安全意识
  4. 简单的c++人脸识别源代码
  5. 用最简单的方法生成代码雨,效果相当的哇塞。
  6. Proteus8.9 下载与安装 以及大多数问题
  7. steam授权_号商福利,Steam验号机器人上线,再也不用手动验号了
  8. 计算机板卡设计仿真,电子技能训练(1-1)201492.ppt
  9. jCasbin:支持MAC、RBAC、ABAC多种模型的Java权限管理框架
  10. 锐捷网络linux如何认证上网,如何在Linux里面进行锐捷认证上网