(1).建立飯卡信息:添加若干人的飯卡號、姓名、金額,要求飯卡號是唯一的;
(2).買飯:要求用戶輸入飯卡號、飯費,系統自動從該人的飯卡中減去飯錢,并分別顯示買飯前后的金額,如果原來飯卡中的余額不足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];//定義結構體飯卡,大2000人
int j=0;//計數器:建立飯卡的數量
struct fanka *create()//創建鏈表
{
struct fanka *head=NULL;//定義頭指針
struct fanka *n;//用于指向新建的節點
struct fanka *s;//操作指針
struct fanka *tail;//定義尾指針
while(1)//在該循環中創建鏈表
{
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("飯卡號不可以重復!\n");
break;
}
if(n->num==0)//當輸入飯卡號為0時,循環結束,表格創建結束
{
free(n);
break;
}
else
{
if(j==0)
{
head=n;
tail=n;
}
else
{
tail->next=n;
tail=n;
}
j++;//新建一個節點,計數器自增加1
printf("請輸入充值的金額:\n");
scanf("%f",&n->yuan);//輸入初始充值的金額
}
}
tail->next=NULL;
return head;//返回頭指針
}
void maifan(struct fanka *head)//買飯函數
{
int n;//定義買飯的飯卡號
float m;//定義飯費
struct fanka *s;//定義操作指針
printf("\n請輸入飯卡號:");
scanf("%d",&n);
printf("\n請輸入飯費:");
scanf("%f",&m);
if(m<=0)//飯費不可為負數
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;//實現飯卡費的扣除
printf("\n消費后卡中余額:%.2f\n",s->yuan);
}
}
}
void chongzhi(struct fanka *head)//充值函數
{
int n;//定義飯卡號
float m;//定義充值金額
struct fanka *s;//定義操作指針
s=head;//頭指針不動
printf("\n請輸入飯卡號:");
scanf("%d",&n);
printf("\n您想充值多少元?");
scanf("%f",&m);
if(m<=0)//充值金額不可以為負
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; //實現飯卡的充值
printf("\n充值后卡中余額:%.2f\n",s->yuan);//輸出充值后的金額
}
}
}
void print(struct fanka *head)//輸出鏈表函數
{
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請選擇您想要進行的服務:\n");
printf("1.買飯 2.充值 3.退出系統\n");
scanf("%d",&a);
switch(a)
{
case 1: maifan(head);break;//調用買飯函數
case 2: chongzhi(head);break;//調用充值函數
case 3: break;
defaulf :printf("請選擇正確的序號\n");
}
}
? ? return 0;
}
注:該代碼應再Dev C++上運行,使用其它編譯器會出現各種語法錯誤。
三.試運行你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
當前題目:飯卡管理系統-創新互聯
標題路徑:http://vcdvsql.cn/article0/eisio.html
成都網站建設公司_創新互聯,為您提供品牌網站建設、網站制作、虛擬主機、動態網站、網站收錄、品牌網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯