(1).建立飯卡信息:添加若干人的飯卡號、姓名、金額,要求飯卡號是唯一的;
堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都成都電動窗簾小微創(chuàng)業(yè)公司專業(yè)提供成都定制網(wǎng)站營銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。(2).買飯:要求用戶輸入飯卡號、飯費,系統(tǒng)自動從該人的飯卡中減去飯錢,并分別顯示買飯前后的金額,如果原來飯卡中的余額不足5元,則不能買飯,顯示“余額不足,請充值”;
(3).充值:輸入飯卡號、充值金額,充值完成后顯示充值前后的金額。
二.源代碼#include#include#include#define len sizeof(struct fanka)
# define max 2000
struct fanka
{
int num;
char name[100];
float yuan;
struct fanka *next;
} fanka [max];//定義結(jié)構(gòu)體飯卡,大2000人
int j=0;//計數(shù)器:建立飯卡的數(shù)量
struct fanka *create()//創(chuàng)建鏈表
{
struct fanka *head=NULL;//定義頭指針
struct fanka *n;//用于指向新建的節(jié)點
struct fanka *s;//操作指針
struct fanka *tail;//定義尾指針
while(1)//在該循環(huán)中創(chuàng)建鏈表
{
n=(struct fanka *)malloc(len);//申請地址空間
printf("請輸入飯卡號和姓名:\n");
scanf("%d,%s",&n->num,n->name);//錄入飯卡信息
s=head;//頭指針不動
for( ;s!=NULL;s=s->next)//確保飯卡號是唯一的
{
if(n->num==s->num)
printf("飯卡號不可以重復(fù)!\n");
break;
}
if(n->num==0)//當(dāng)輸入飯卡號為0時,循環(huán)結(jié)束,表格創(chuàng)建結(jié)束
{
free(n);
break;
}
else
{
if(j==0)
{
head=n;
tail=n;
}
else
{
tail->next=n;
tail=n;
}
j++;//新建一個節(jié)點,計數(shù)器自增加1
printf("請輸入充值的金額:\n");
scanf("%f",&n->yuan);//輸入初始充值的金額
}
}
tail->next=NULL;
return head;//返回頭指針
}
void maifan(struct fanka *head)//買飯函數(shù)
{
int n;//定義買飯的飯卡號
float m;//定義飯費
struct fanka *s;//定義操作指針
printf("\n請輸入飯卡號:");
scanf("%d",&n);
printf("\n請輸入飯費:");
scanf("%f",&m);
if(m<=0)//飯費不可為負(fù)數(shù)
printf("\n請正確輸入飯費!\n");
else
{
for( ; s!=NULL && s->num!=n; s=s->next)//遍歷鏈表,查找飯卡號
;
if(s==NULL)//輸入的飯卡號有誤
{
printf("未找到該飯卡號!\n");
printf("請輸入正確的飯卡號!\n");
}
else if(s->yuan<5)//小于5元則提醒充值
printf("余額不足,請充值!\n");
else
{
printf("\n消費前卡中余額:%.2f\n",s->yuan);
s->yuan=s->yuan-m;//實現(xiàn)飯卡費的扣除
printf("\n消費后卡中余額:%.2f\n",s->yuan);
}
}
}
void chongzhi(struct fanka *head)//充值函數(shù)
{
int n;//定義飯卡號
float m;//定義充值金額
struct fanka *s;//定義操作指針
s=head;//頭指針不動
printf("\n請輸入飯卡號:");
scanf("%d",&n);
printf("\n您想充值多少元?");
scanf("%f",&m);
if(m<=0)//充值金額不可以為負(fù)
printf("\n請輸入正確的金額!\n");
else
{
for( ; s!=NULL && s->num!=n; s=s->next)//遍歷鏈表,查找飯卡號
;
if(s==NULL)//輸入的飯卡號有誤
{
printf("未找到該飯卡號!\n");
printf("請輸入正確的飯卡號!\n");
}
else
{
printf("\n充值前卡中余額:%.2f\n",s->yuan);//輸出充值前的余額
s->yuan=s->yuan+m; //實現(xiàn)飯卡的充值
printf("\n充值后卡中余額:%.2f\n",s->yuan);//輸出充值后的金額
}
}
}
void print(struct fanka *head)//輸出鏈表函數(shù)
{
struct fanka *s;//定義操作指針
s=head;//頭指針不動
printf("飯卡號 姓名 飯卡余額");
if(head==NULL)
printf("這是一個空表");
else
{
while(s!=NULL)
{
printf("\n%4d %5s %4.2f",s->num,s->name,s->yuan);//輸出鏈表
s=s->next;
}
}
}
int main()
{
int a;//想要選擇何種操作
struct fanka *head=NULL;
head=create();
print(head);
while(a!=3)
{
printf("\n請選擇您想要進(jìn)行的服務(wù):\n");
printf("1.買飯 2.充值 3.退出系統(tǒng)\n");
scanf("%d",&a);
switch(a)
{
case 1: maifan(head);break;//調(diào)用買飯函數(shù)
case 2: chongzhi(head);break;//調(diào)用充值函數(shù)
case 3: break;
defaulf :printf("請選擇正確的序號\n");
}
}
? ? return 0;
}
注:該代碼應(yīng)再Dev C++上運行,使用其它編譯器會出現(xiàn)各種語法錯誤。
三.試運行你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧