運用結構體鏈表指針等寫出實現增刪改查統計文件等基本操作,代碼如下
成都創新互聯專業提供成都主機托管四川主機托管成都服務器托管四川服務器托管,支持按月付款!我們的承諾:貴族品質、平民價格,機房位于中國電信/網通/移動機房,成都天府聯通服務器托管服務有保障!#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("藥品總數為:%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;
}
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
分享題目:c語言課設——藥品管理系統-創新互聯
標題路徑:http://m.newbst.com/article16/dpgcdg.html
成都網站建設公司_創新互聯,為您提供網站設計、軟件開發、ChatGPT、網站建設、網站制作、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯