c语言课设——药品管理系统
运用结构体链表指针等写出实现增删改查统计文件等基本操作,代码如下
#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语言课设——药品管理系统相关推荐
- C语言课设-药品管理系统(含代码)
用到的知识点 文件操作,fopen,fclose,fprintf,fscanf,fread,fwirte函数等 链表操作,头插法,尾插法,增删节点 window.h里system(color XX), ...
- C语言课设-----工资管理系统(附全部源码)
C语言课设-----工资管理系统(附全部源码) 本系统分三个部分: 1.出售金鱼 2.数字菱形 3.工资管理系统 (ps:另外添加了登录界面 id:qwq password:123 可自己在代码里再更 ...
- C语言课设物资管理系统,C语言课设之物资管理系统.doc
C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...
- 关于C语言课设学生管理系统的编写(简单版)
课设要求 根据课设要求,我们需要给我们的管理系统增加以下功能:1,菜单方式工作:2,录入功能:3,浏览功能:4,查询功能:5,排序功能:6,删除功能:7,修改功能:8,保存功能. 我们将用模块化的思想 ...
- C语言课设——车票管理系统
这几天没学什么能拿得出手的东西,都是一些基础,就不在博客上发表了,不过这几天把C语言的课程设计弄了一下,一下是源代码. #include<stdio.h> #include<stdl ...
- C语言课设车票管理系统(大作业)
C语言课程设计(大作业)(车票管理系统) 一.项目简介 设计一个车票管理系统实现录入.查看班次信息,售票,退票等基本功能.设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的.规模较大的问题, ...
- C语言课设设备管理系统(大作业)
一.任务概述 设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间统一部门购买的若干相同设备可作为1条记录),包括设备号,设备名称,领用人,所属部门,数量,购买时间,价格等.能够显示和统 ...
- 学生信息管理系统c语言课设,学生信息管理系统C语言课设.doc
学生信息管理系统C语言课设 目录 一.需求分析2 二.概要设计2 三.详细设计4 四.调试分析9 五.用户手册9 六.测试数据9 七.附录10 一.需求分析学生学籍管理系统用数据文件存放学生的学籍,可 ...
- c语言学生学籍管理修改,C语言课设之学生学籍管理系统.doc
C语言课设之学生学籍管理系统.doc 题目学生学籍管理系统 目录一.个人简介.二.报告摘要.三.报告目录.四.报告正文. 1.系统需求分析 2.系统总体设计 3.系统详细设计六.总结. 二.报告摘要 ...
最新文章
- 学习RPG Maker MZ开发创建并发布PC和移动端游戏
- HDOJ 1213 HDU 1213 How Many Tables ACM 1213 IN HDU
- mysql master-slave_mysql 同步 master-slave
- B端产品经理思考-软硬产品设计
- Django从理论到实战(part29)--Field的常用参数
- tomcat多个端口对应多个web应用
- 测试驱动的面向对象软件开发(china-pub首发)
- 在线ASCII流程图编辑器工具
- JAVA笔记 之 Thread线程
- 【浅说】堆(heap)和栈(stack)区别
- Eclipse远程部署
- 11-Container With Most Water
- CSS从入门到精通——基础知识
- ROS中的AGV与ROS_CONTROL学习
- 提醒用户的方式 notification+Dialog
- 职业发展百问之第一问:三十岁了再进入IT行业还有机会吗?
- 基于强化学习的中间商赚差价指导手册
- 0xE06D7363: Microsoft C++ Exception.
- react组件书写规范
- 自学用——html+css(要点)