运用结构体链表指针等写出实现增删改查统计文件等基本操作,代码如下

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include<string.h>
//定义一个药品
typedef struct _Medicine
{char name[20];//药品名int num;//药品编号int price;//药品价格 int stock;//药品库存数量int sell;//药品销量 } Medicine;//节点
typedef struct _Node
{Medicine med;struct _Node* pNext;//指向下一个结点的指针
}Node; //头结点
Node *g_pHead=NULL;//头结点 //欢迎
void Welcome();
//录入药品信息
void InputMedicine();
//打印药品信息
void PrintMedicine();
//保存药品信息
void SaveMedicine();
//读取药品信息
void ReadMedicine();
//查找药品信息
Node* FindMedicine();
//修改药品信息
void ModifyMedcine();
//删除药品信息
void DeleteMedicine();
//统计所有药品数量
int main()
{while(1){Welcome();//欢迎//从键盘接收一个字符char ch=getchar(); switch(ch){case '1'://录入药品信息InputMedicine();break; case '2'://打印药品信息PrintMedicine();break;case '3'://保存药品信息SaveMedicine(); system("pause");//暂停 system("cls");//清屏 break;case '4'://读取药品信息ReadMedicine();break;case '5'://统计所有药品数量 printf("药品总数为:%d\n",CountMedicine());system("pause");//暂停 system("cls");//清屏 break;case '6'://查找药品信息{Node* p = FindMedicine();if(p!=NULL){printf("药品编号:%d\t名称:%s\t价格:%d\t库存:%d\t销量:%d\n",p->med.num,p->med.name,p->med.price,p->med.stock,p->med.sell);}else{printf("没有找到该药品。\n");}system("pause");//暂停 system("cls");//清屏 break;}case '7'://修改药品信息ModifyMedcine(); break;case '8'://删除药品信息DeleteMedicine();break;case '0'://退出系统printf("再见,欢迎下次使用!\n");return 0;default:printf("您的输入有误,请重新输入!\n");system("pause");//暂停 system("cls");//清屏break; }} return 0;
}//欢迎
void Welcome()
{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");} //录入药品信息 void InputMedicine(){//创建一个新节点Node* pNewNode=(Node*)malloc(sizeof(Node));pNewNode->pNext=NULL;//头插法if(g_pHead==NULL){g_pHead=pNewNode;} else{pNewNode->pNext=g_pHead;g_pHead=pNewNode;}printf("请输入药品的名称:\n");scanf("%s",pNewNode->med.name);printf("请输入药品的编号:\n");scanf("%d",&pNewNode->med.num);printf("请输入药品的价格:\n");scanf("%d",&pNewNode->med.price);printf("请输入药品的库存:\n");scanf("%d",&pNewNode->med.stock); printf("请输入药品的销量:\n");scanf("%d",&pNewNode->med.sell);printf("药品信息录入成功.\n");system("pause");//暂停 system("cls");//清屏 }//打印药品信息 void PrintMedicine(){system("cls");//清屏printf("***********************************************\n");printf("*          欢迎使用药品管理系统               *\n");printf("***********************************************\n");printf("*  编号  *  名称  *  价格  *  库存  *  销量  * \n"); printf("***********************************************\n");//遍历链表Node* p=g_pHead;while(p!=NULL){printf("*  %d  *  %s  *  %d  *  %d  *  %d  *\n",p->med.num,p->med.name,p->med.price,p->med.stock,p->med.sell);p=p->pNext;} printf("***********************************************\n");system("pause");//暂停 }//保存药品信息 void SaveMedicine(){//打开文件FILE* fp = fopen("D:\\shiyan.txt","w");if (fp==NULL){printf("打开文件失败。\n");return;} //遍历链表 Node* p=g_pHead;while(p!=NULL){fwrite(&p->med,1,sizeof(Medicine),fp);p=p->pNext;} //关闭文件fclose(fp);printf("\n数据保存成功\n");}//读取药品信息 void ReadMedicine(){ //打开文件FILE *fp=fopen("D:\\shiyan.txt","r");if(fp==NULL){printf("打开文件失败。\n");return;} //读文件Medicine med;while (fread(&med,1,sizeof(Medicine),fp)){//创建一个新节点Node* pNewNode = (Node*)malloc(sizeof(Node));pNewNode->pNext=NULL; memcpy(pNewNode,&med,sizeof(Medicine));//头插法if(g_pHead==NULL){g_pHead=pNewNode;}     else{pNewNode->pNext=g_pHead;g_pHead=pNewNode;}} //关闭文件fclose(fp);printf("加载数据成功。\n"); system("pause");//暂停 system("cls");//清屏 } //删除药品信息
void DeleteMedicine()
{int nMedNum;printf("请输入要删除的药品的编号:\n");scanf("%d",&nMedNum);Node* p1,*p2;//判断是不是头节点if (g_pHead->med.num == nMedNum){p1=g_pHead;g_pHead=g_pHead->pNext;free(p1);return;} //不是头节点Node* p=g_pHead;while (p->pNext != NULL){if(p->pNext->med.num == nMedNum){p2=p->pNext;p->pNext=p->pNext->pNext;free(p2);system("pause");//暂停 system("cls");//清屏 return;}p=p->pNext;if(p->pNext==NULL){break;}} if(p->pNext==NULL){printf("没有找到该药品。\n");}system("pause");//暂停 system("cls");//清屏
}//查找药品信息 Node* FindMedicine(){int nMedNum;char ypName[20];printf("请输入要查找的药品的编号:\n");scanf("%d",&nMedNum);printf("请输入要查找的药品的名称:\n");scanf("%s", ypName);Node* p =g_pHead;while(p!=NULL){//strcmp字符串比较函数if (p->med.num == nMedNum || 0 == strcmp(p->med.name, ypName)){return p;} p=p->pNext;}//没有找到 return NULL; }//修改药品信息 void ModifyMedcine(){int nMedNum;printf("请输入需要修改的药品信息的编号:\n");scanf("%d",&nMedNum); Node* p =g_pHead;while(p!=NULL){//strcmp字符串比较函数if (p->med.num == nMedNum){printf("请输入要修改的药品名称 价格 库存 销量:\n");scanf("%s %d %d %d",p->med.name,&p->med.price,&p->med.stock,&p->med.sell);printf("修改成功。\n");break; } p=p->pNext;}if (p==NULL){printf("没有找到该药品信息。\n");}system("pause");//暂停 system("cls");//清屏} //统计所有药品数量
int CountMedicine()
{int nCount=0;//药品总数//遍历Node* p=g_pHead;while (p!=NULL){nCount++;p=p->pNext;} return nCount;
}

c语言课设——药品管理系统相关推荐

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

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

  2. C语言课设-----工资管理系统(附全部源码)

    C语言课设-----工资管理系统(附全部源码) 本系统分三个部分: 1.出售金鱼 2.数字菱形 3.工资管理系统 (ps:另外添加了登录界面 id:qwq password:123 可自己在代码里再更 ...

  3. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  4. 关于C语言课设学生管理系统的编写(简单版)

    课设要求 根据课设要求,我们需要给我们的管理系统增加以下功能:1,菜单方式工作:2,录入功能:3,浏览功能:4,查询功能:5,排序功能:6,删除功能:7,修改功能:8,保存功能. 我们将用模块化的思想 ...

  5. C语言课设——车票管理系统

    这几天没学什么能拿得出手的东西,都是一些基础,就不在博客上发表了,不过这几天把C语言的课程设计弄了一下,一下是源代码. #include<stdio.h> #include<stdl ...

  6. C语言课设车票管理系统(大作业)

    C语言课程设计(大作业)(车票管理系统) 一.项目简介 设计一个车票管理系统实现录入.查看班次信息,售票,退票等基本功能.设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的.规模较大的问题, ...

  7. C语言课设设备管理系统(大作业)

    一.任务概述 设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间统一部门购买的若干相同设备可作为1条记录),包括设备号,设备名称,领用人,所属部门,数量,购买时间,价格等.能够显示和统 ...

  8. 学生信息管理系统c语言课设,学生信息管理系统C语言课设.doc

    学生信息管理系统C语言课设 目录 一.需求分析2 二.概要设计2 三.详细设计4 四.调试分析9 五.用户手册9 六.测试数据9 七.附录10 一.需求分析学生学籍管理系统用数据文件存放学生的学籍,可 ...

  9. c语言学生学籍管理修改,C语言课设之学生学籍管理系统.doc

    C语言课设之学生学籍管理系统.doc 题目学生学籍管理系统 目录一.个人简介.二.报告摘要.三.报告目录.四.报告正文. 1.系统需求分析 2.系统总体设计 3.系统详细设计六.总结. 二.报告摘要 ...

最新文章

  1. 学习RPG Maker MZ开发创建并发布PC和移动端游戏
  2. HDOJ 1213 HDU 1213 How Many Tables ACM 1213 IN HDU
  3. mysql master-slave_mysql 同步 master-slave
  4. B端产品经理思考-软硬产品设计
  5. Django从理论到实战(part29)--Field的常用参数
  6. tomcat多个端口对应多个web应用
  7. 测试驱动的面向对象软件开发(china-pub首发)
  8. 在线ASCII流程图编辑器工具
  9. JAVA笔记 之 Thread线程
  10. 【浅说】堆(heap)和栈(stack)区别
  11. Eclipse远程部署
  12. 11-Container With Most Water
  13. CSS从入门到精通——基础知识
  14. ROS中的AGV与ROS_CONTROL学习
  15. 提醒用户的方式 notification+Dialog
  16. 职业发展百问之第一问:三十岁了再进入IT行业还有机会吗?
  17. 基于强化学习的中间商赚差价指导手册
  18. 0xE06D7363: Microsoft C++ Exception.
  19. react组件书写规范
  20. 自学用——html+css(要点)

热门文章

  1. 【MySQL】逻辑库与数据表相关操作
  2. 网络:传输层之TCP协议
  3. EWM常规开发知识汇总
  4. OKhttp3基本POST使用
  5. [Revit二次开发] 轴网交点创建柱子
  6. window10快捷键
  7. 下班时间学写作练习17天
  8. css中repeat用法,background-repeat 怎么使用
  9. pjsip学习 ------ 二
  10. 【分享程序员的生活】在国企里面当程序猿是一种怎样的体验!!??