運用結(jié)構(gòu)體鏈表指針等寫出實現(xiàn)增刪改查統(tǒng)計文件等基本操作,代碼如下
成都創(chuàng)新互聯(lián)專業(yè)提供成都主機托管四川主機托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價格,機房位于中國電信/網(wǎng)通/移動機房,成都天府聯(lián)通服務(wù)器托管服務(wù)有保障!#include#include#include#include//定義一個藥品
typedef struct _Medicine
{
char name[20];//藥品名
int num;//藥品編號
int price;//藥品價格
int stock;//藥品庫存數(shù)量
int sell;//藥品銷量
} Medicine;
//節(jié)點
typedef struct _Node
{
Medicine med;
struct _Node* pNext;//指向下一個結(jié)點的指針
}Node;
//頭結(jié)點
Node *g_pHead=NULL;//頭結(jié)點
//歡迎
void Welcome();
//錄入藥品信息
void InputMedicine();
//打印藥品信息
void PrintMedicine();
//保存藥品信息
void SaveMedicine();
//讀取藥品信息
void ReadMedicine();
//查找藥品信息
Node* FindMedicine();
//修改藥品信息
void ModifyMedcine();
//刪除藥品信息
void DeleteMedicine();
//統(tǒng)計所有藥品數(shù)量
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'://統(tǒng)計所有藥品數(shù)量
printf("藥品總數(shù)為:%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'://退出系統(tǒng)
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.統(tǒng)計所有藥品數(shù) *\n");
printf("* 6.查找藥品信息 *\n");
printf("* 7.修改藥品信息 *\n");
printf("* 8.刪除藥品信息 *\n");
printf("* 0.退出系統(tǒng) *\n");
printf("***********************************************\n");
}
//錄入藥品信息
void InputMedicine()
{
//創(chuàng)建一個新節(jié)點
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("* 歡迎使用藥品管理系統(tǒng) *\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;
}
//關(guān)閉文件
fclose(fp);
printf("\n數(shù)據(jù)保存成功\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))
{
//創(chuàng)建一個新節(jié)點
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;
}
}
//關(guān)閉文件
fclose(fp);
printf("加載數(shù)據(jù)成功。\n");
system("pause");//暫停
system("cls");//清屏
}
//刪除藥品信息
void DeleteMedicine()
{
int nMedNum;
printf("請輸入要刪除的藥品的編號:\n");
scanf("%d",&nMedNum);
Node* p1,*p2;
//判斷是不是頭節(jié)點
if (g_pHead->med.num == nMedNum)
{
p1=g_pHead;
g_pHead=g_pHead->pNext;
free(p1);
return;
}
//不是頭節(jié)點
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字符串比較函數(shù)
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字符串比較函數(shù)
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");//清屏
}
//統(tǒng)計所有藥品數(shù)量
int CountMedicine()
{
int nCount=0;//藥品總數(shù)
//遍歷
Node* p=g_pHead;
while (p!=NULL)
{
nCount++;
p=p->pNext;
}
return nCount;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
分享題目:c語言課設(shè)——藥品管理系統(tǒng)-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://redsoil1982.com.cn/article16/dpgcdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、軟件開發(fā)、ChatGPT、網(wǎng)站建設(shè)、網(wǎng)站制作、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容