收藏 分销(赏)

C语言购物卡管理系统链表.docx

上传人:天**** 文档编号:9488350 上传时间:2025-03-28 格式:DOCX 页数:30 大小:18.02KB
下载 相关 举报
C语言购物卡管理系统链表.docx_第1页
第1页 / 共30页
C语言购物卡管理系统链表.docx_第2页
第2页 / 共30页
点击查看更多>>
资源描述
购物卡管理系统 (一)系统主要功效模块:  (1)实现系统内制卡、发卡功效。   (2)实现系统内购物卡帐户及相关帐户管理。   (3)实现购物卡交易和正当性检验。   (4)实现购物卡交易积分功效。  (5)实现购物卡报表功效。 (6)数据以文件形式存放。  提醒:  制卡:指申请一个购物卡,但还没有使用。  发卡:指该卡已经起用。  实现卡交易:指从卡中消费掉一定金额。  (二)题目及要求分析: 依照题目要求,系统应该实现以下功效: (1)制卡:主要是新建出一张购物卡,并输入了用户部分信息,如姓名、密码等,但卡没有激活,依然不可使用。  (2)发卡:激活新建购物卡,用户能够使用卡进行各项活动。  (3)消费:进入帐户后,取走少于帐户金额钱款进行消费,并在帐户少减 少对应金额,增加对应积分。  (4)存款:进入帐户后,在金额项加上用户要存入钱款。  (5)报表:显示用户购物卡上统计全部信息,除密码外。  (6)存放:购物卡内信息以文件形式存放。  (7)退出:从系统中退出。  (8)菜单:提供良好界面,方便用户操作。 代码: #include <stdio.h> #include<ctype.h> /*调用字符函数*/ #include<stdlib.h> #include<conio.h> /*通用输入输出库*/ #include<string.h> #include<windows.h> int flag=5; struct card { char name[20]; char number[20]; float money; char key[10]; float jifen; float mid; int power; struct card *next; }; save(struct card *head); void list(); void jihuo(); struct card *chaxun(); save(struct card *head) { FILE *fp; struct card *q; q=head; if((fp=fopen("e:\\123.txt","ab+"))==NULL) { printf("无法打开\n"); exit(0); } while(q!=NULL) { if(fwrite(q,sizeof(struct card),1,fp)!=1) { printf("文件写入错误!"); fclose(fp); return (head); } q=q->next; } fclose(fp); } struct card *save1(struct card *head) { FILE *fp; struct card *q; q=head; if((fp=fopen("e:\\123.txt","wb"))==NULL) { printf("无法打开\n"); exit(0); } while(q!=NULL) { if(fwrite(q,sizeof(struct card),1,fp)!=1) { printf("文件写入错误!"); fclose(fp); return (head); } q=q->next; } fclose(fp); } struct card *duqu()//读取数据 { struct card *head = NULL; struct card *p1, *p2; FILE *fp; if((fp=fopen("e:\\123.txt","rb+"))==NULL) { printf("打开文件犯错\n"); exit(0); } while(!feof(fp)) { if((p1=(struct card*)malloc(sizeof(struct card)))==NULL) { printf("something is wrong!\n"); fclose(fp); exit(0); } if(fread(p1,sizeof(struct card),1,fp)!=1) { free(p1); break; } if(head==NULL) head=p2=p1; else { p2->next=p1; p2=p1; } } fclose(fp); return (head); } struct card *createlist() { struct card *head,*p,*q; int i; char num[20]; head=(struct card*)malloc(sizeof(struct card)); head->next=NULL; head->money=0; head->jifen=0; system("cls"); printf("\n\t\t********************注册购物卡*******************\n\n\n"); do { printf("\n\n\t请输入要注册卡号(六位数): "); scanf("%s",head->number); if(strlen(head->number)!=6) { system("cls"); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t对不起您输入有误,请重新输入!\n\n"); Sleep(1000); system("cls"); printf("\n\t\t********************注册购物卡*******************\n\n\n"); continue; } printf("\n\n\t请输入您名字: "); scanf("%s",head->name); printf("\n\n\t请输入您密码: "); scanf("%s",head->key); head->power=99; } while(strlen(head->number)!=6); p=head; system("cls"); printf("\n\t\t********************注册购物卡*******************\n\n\n"); printf("您购物卡为:\n\n"); printf("\n\t姓 名 卡 号 余 额 积分 \n\n"); printf("\t%2s %16s %13.2f %13.2f",p->name,p->number,p->money,p->jifen); getche(); p->next=NULL; save(head); printf("\n\n\n\n\n\n\t\t\t"); printf("购物卡注册成功!\n\n\n\n\t\t\t\t按任意键返回....."); getche(); } void cost(struct card *q) { struct card *p,*a; p=duqu(); a=p; while(strcmp(q->number,p->number)!=0) { p=p->next; } system("cls"); printf("\n\t\t********************账户消费*******************\n\n\n"); printf("\n\n\n\n\n\n"); printf("\t\t\t请输入您消费金额:"); scanf("%f",&p->mid); (p->money)=(p->money)-(p->mid); (p->jifen)=(p->jifen)+(p->mid); printf("\n\n\t\t\t您余额为:%.2f",p->money); printf("\n\n\n\n\n\t\t\t显示完成,按任意键返回子菜单....."); getche(); p=a; save1(p); } void cunkuan(struct card *q) { struct card *p,*a; p=duqu(); a=p; while(strcmp(q->number,p->number)!=0) { p=p->next; } system("cls"); printf("\n\t\t********************账户存款*******************\n\n\n"); printf("\n\n\n\n\n\n"); printf("\t\t\t请输入您存款金额:"); scanf("%f",&p->mid); (p->money)=(p->mid)+(p->money); printf("\n\n\t\t\t您余额为:%.2f",p->money); printf("\n\n\n\n\n\t\t\t显示完成,按任意键返回子菜单....."); getche(); p=a; save1(p); } void xiugai(struct card *q) { char key[10],num[10]; struct card *p,*a; p=duqu(); a=p; while(strcmp(q->number,p->number)!=0) { p=p->next; } system("cls"); printf("\n\t\t********************修改账户密码*******************\n\n\n"); printf("\n\n\n\n"); printf("\t\t\t请输入您新密码:"); scanf("%s",num); printf("\n\n\t\t\t请再次输入您密码:"); scanf("%s",key); if(strcmp(key,num)!=0) { system("cls"); printf("\n\t\t********************修改账户密码*******************\n\n\n"); printf("\n\n\n\n\n\t\t对不起,两次输入密码不一样,修改密码失败!"); Sleep(1000); system("cls"); } if(strcmp(key,num)==0) { system("cls"); printf("\n\t\t********************修改账户密码*******************\n\n\n"); strcpy(p->key,num); printf("\n\n\n\n\n\n\t\t\t修改密码成功!"); Sleep(1000); p=a; save1(p); } } void chaxun2(struct card *q) { struct card *p,*a; p=duqu(); a=p; while(strcmp(q->number,p->number)!=0) { p=p->next; } system("cls"); printf("\n\t\t********************账户查询*******************\n\n\n"); printf("\t您账户信息为:\n\n\n"); printf("\n\t\t姓 名 卡 号 余 额 积分 \n\n"); printf("\t\t%2s %16s %13.2f %13.2f",p->name,p->number,p->money,p->jifen); printf("\n"); getch(); } struct card *chaxun() { int b,i=0; int flag=9; struct card *head; char num[10],key[10]; struct card *p,*head1; head1=duqu(); p=head1; system("cls"); printf("\n\t\t********************账户登陆*******************\n\n\n"); printf("\n\n\t请输入您卡号(六位数): "); scanf("%s",num); while(p!=NULL) { if(strcmp(num,p->number)!=0) { p=p->next; if(p==NULL) { system("cls"); printf("\n\t\t********************账户登陆*******************\n\n\n"); printf("\n\n\n\n\n\n\n\t\t\t没有该卡号信息,请重新输入!\n\n"); Sleep(1000); system("cls"); printf("\n\t\t********************账户登陆*******************\n\n\n"); printf("\n\n\t请重新输入卡号(六位数): "); scanf("%s",num); p=head1; } continue; } if((p->power)==99) { system("cls"); printf("\n\t\t********************账户登陆*******************\n\n\n"); printf("\n\n\n\n\n\n\n\t\t\t对不起,该卡未激活,请先激活!"); getche(); system("cls"); main(); } if(p->power==100) { while(flag==9) { printf("\n\n\t请输入密码(六位数): "); scanf("%s",key); if(strcmp(key,p->key)==0) { flag=10; } if(strcmp(key,p->key)!=0) { system("cls"); printf("\n\t\t********************账户登陆*******************\n\n\n"); printf("\n\n\n\n\n\n\n\t\t\t对不起,密码输入错误%d次!",i+1); flag=9; i++; if(i==3) { system("cls"); printf("\n\n\n\n\n\n\n\t\t\t密码输入错误三次,系统自动返回主菜单!"); Sleep(); system("cls"); return; } } } if(flag==10) break; } } while(1) { system("cls"); printf(" *****************************************\n"); printf(" * *\n"); printf(" * 账户查询 *\n"); printf(" * *\n"); printf(" * —————————————————— *\n"); printf(" * *\n"); printf(" * 1:查询 *\n"); printf(" * *\n"); printf(" * 2:存款 *\n"); printf(" * *\n"); printf(" * 3:消费 *\n"); printf(" * *\n"); printf(" * 4:修改密码 *\n"); printf(" * *\n"); printf(" * 5:返回主菜单 *\n"); printf(" * *\n"); printf(" *****************************************\n"); printf("\n"); printf("\t\t请选择操作: "); scanf("%d",&b); switch(b) { case 1:chaxun2(p); break; case 2:cunkuan(p);break; case 3:cost(p);break; case 4:xiugai(p);break; case 5:main(); default:printf("对不起,您输入有误,请重新输入!"); } } } void jihuo() { char x; char num[10]; struct card *p,*head1; head1=duqu(); p=head1; system("cls"); printf("\n\t\t********************激活购物卡*******************\n\n\n"); printf("\t请输入您要激活卡号(六位数): "); scanf("%s",num); while(p!=NULL) { if(strcmp(num,p->number)!=0) { p=p->next; } else break; while(p==NULL) { system("cls"); printf("\n\t\t********************激活购物卡*******************\n\n\n"); printf("\n\n\n\n\n\n\t\t\t没有该卡号信息,请重新输入卡号!\n\n"); Sleep(1000); system("cls"); printf("\n\t\t********************激活购物卡*******************\n\n\n"); printf("\t请重新输入您申请卡号(六位数): "); scanf("%s",num); p=head1; } } system("cls"); printf("\n\t\t********************激活购物卡*******************\n\n\n"); printf("您购物卡为:\n\n"); printf("\n\t姓 名 卡 号 余 额 积分 \n\n"); printf("\t%2s %16s %13.2f %13.2f",p->name,p->number,p->money,p->jifen); printf("\n\n\n\n\n\t\t\t确认激活您购物卡? \n\n\t\t\t <1> 是 <2> 否"); printf("\n\n\t\t\t请选择:"); scanf(" %c",&x); switch(x) { case '1': system("cls"); printf("\n\t\t********************激活购物卡*******************\n\n\n"); p->power=100; save1(head1); printf("\n\n\n\n\n\n\n\t\t\t"); printf("激活成功,按任意键返回主菜单....."); getche(); break; case '2': system("cls"); printf("\n\t\t********************激活购物卡*******************\n\n\n"); printf("\n\n\n\n\n\n\n\t\t\t"); printf("您已放弃激活,按任意键返回主菜单....."); getche(); break; default: system("cls"); printf("\n\t\t********************激活购物卡*******************\n\n\n"); printf("\n\n\n\n\n\n\n\t\t\t"); printf("对不起,您输入有误,请重新输入!"); Sleep(); } } void list() { struct card *p1; p1=duqu(); system("cls"); printf("\n\t\t********************显示购物卡*******************\n\n\n"); printf("全部购物卡信息为:\n\n\n"); printf("\n\t姓 名 卡 号 余 额 积分 \n\n"); while(p1!=NULL) { printf("\t %2s %16s %14.2f %14.2f",p1->name,p1->number,p1->money,p1->jifen); printf("\n"); p1=p1->next; } } main() { int a; struct *head; printf("\n\n\n\n\n\n\n\n\t\t\t\t"); printf(" 欢迎使用"); printf("\n\n"); printf("\t ******************购 物 卡 管 理 系 统*******************\n"); Sleep(1000); system("cls"); while(1) { printf("\n"); printf(" *****************************************\n"); printf(" * 购 物 卡 管 理 系 统 *\n"); printf(" *****************************************\n"); printf(" * 菜 单 *\n"); printf(" * *\n"); printf(" * 1:注册 *\n"); printf(" * *\n"); printf(" * 2:激活 *\n"); printf(" * *\n"); printf(" * 3:帐户登录 *\n"); printf(" * *\n"); printf(" * 4:名单 *\n"); printf(" * *\n"); printf(" * 0:退出系统 *\n"); printf(" * *\n"); printf(" *****************************************\n"); printf("\n"); printf("\t\t请选择操作: "); scanf("%d",&a); switch(a) { case 1:createlist(head); system("cls");break; case 2:jihuo();system("cls");break; case 3:chaxun();break; case 4: list(); printf("\n\n\n\n\t\t\t显示完成,按任意键返回主菜单...."); getche(); system("cls"); break; case 0: system("cls"); printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t"); printf(" 感激您使用,再见!"); printf("\n\n\n\n\n\t\t\t\t\t"); Sleep(1000); exit(0); default:system("cls"); printf("\n\n\n\t\t\t对不起!您输入有误!请重新输入。"); printf("\n"); } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服