1、购物卡管理系统 (一)系统主要功效模块: (1)实现系统内制卡、发卡功效。 (2)实现系统内购物卡帐户及相关帐户管理。 (3)实现购物卡交易和正当性检验。 (4)实现购物卡交易积分功效。 (5)实现购物卡报表功效。 (6)数据以文件形式存放。 提醒: 制卡:指申请一个购物卡,但还没有使用。 发卡:指该卡已经起用。 实现卡交易:指从卡中消费掉一定金额。 (二)题目及要求分析: 依照题目要求,系统应该实现以下功效: (1)制卡:主要是新建出一张购物卡,并输入了用户部分信息,如姓名、密码等,但卡没有激活,依然不可使用。 (2)发卡:激活
2、新建购物卡,用户能够使用卡进行各项活动。
(3)消费:进入帐户后,取走少于帐户金额钱款进行消费,并在帐户少减
少对应金额,增加对应积分。
(4)存款:进入帐户后,在金额项加上用户要存入钱款。
(5)报表:显示用户购物卡上统计全部信息,除密码外。
(6)存放:购物卡内信息以文件形式存放。
(7)退出:从系统中退出。
(8)菜单:提供良好界面,方便用户操作。
代码:
#include
3、通用输入输出库*/
#include
4、 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-
5、>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("文件写入错误!");
6、 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);
7、} 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);
8、 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
9、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) { sy
10、stem("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("%
11、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->nam
12、e,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;
13、 } 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\
14、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"); prin
15、tf("\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 ca
16、rd *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",ke
17、y); 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*******************
18、修改账户密码*******************\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(
19、"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");
20、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)
21、 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\
22、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
23、\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) { syste
24、m("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("c
25、ls"); return; } } } if(flag==10) break; } } while(1) { system("cls"); printf(" *****************************************\n"); printf(" * *\n"); printf("
26、 * 账户查询 *\n"); printf(" * *\n"); printf(" * —————————————————— *\n"); printf(" * *\n"); printf("
27、 1:查询 *\n"); printf(" * *\n"); printf(" * 2:存款 *\n"); printf(" * *\n"); printf(" * 3:消费
28、 *\n"); printf(" * *\n"); printf(" * 4:修改密码 *\n"); printf(" * *\n"); printf(" * 5:返回主菜单 *\n");
29、 printf(" * *\n"); printf(" *****************************************\n"); printf("\n"); printf("\t\t请选择操作: "); scanf("%d",&b);
30、 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=d
31、uqu(); 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");
32、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=he
33、ad1; } } 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确认激活您购物卡?
34、\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("激活成功,按任意键返回主菜单.....");
35、 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********************激活购物卡*******
36、\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姓 名
37、 卡 号 余 额 积分 \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"
38、); printf("\t ******************购 物 卡 管 理 系 统*******************\n"); Sleep(1000); system("cls"); while(1) { printf("\n"); printf(" *****************************************\n"); printf(" * 购 物 卡 管 理 系 统 *\n"); printf(
39、" *****************************************\n"); printf(" * 菜 单 *\n"); printf(" * *\n"); printf(" * 1:注册 *\n"); printf("
40、 * *\n"); printf(" * 2:激活 *\n"); printf(" * *\n"); printf(" * 3:帐户登录 *\n"); printf(" *
41、 *\n"); printf(" * 4:名单 *\n"); printf(" * *\n"); printf(" * 0:退出系统 *\n"); printf(" *
42、 *\n"); printf(" *****************************************\n"); printf("\n"); printf("\t\t请选择操作: "); scanf("%d",&a); switch(a) { case 1:createlist(head); system("c
43、ls");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"); } } }
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818