栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言课设——药品管理系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言课设——药品管理系统

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

#include 
#include 
#include 
#include
//定义一个药品
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("药品总数为:%dn",CountMedicine());
			system("pause");//暂停 
			system("cls");//清屏 
			break;
		case '6'://查找药品信息
		{
			Node* p = FindMedicine();
			if(p!=NULL)
			{
				printf("药品编号:%dt名称:%st价格:%dt库存:%dt销量:%dn",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;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997315.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号