收藏 分销(赏)

购物卡标准管理系统.doc

上传人:w****g 文档编号:3000359 上传时间:2024-06-12 格式:DOC 页数:20 大小:104.54KB 下载积分:10 金币
下载 相关 举报
购物卡标准管理系统.doc_第1页
第1页 / 共20页
购物卡标准管理系统.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
C语言课程设计报告 班学号: 193092 姓名: 马幸佳 指引教师: 张冬梅 日期: 6月 中华人民共和国地质大学(武汉) 计算机学院 一、题目规定 系统重要功能模块: 1,实现系统内制卡,发卡功能。 2,实现系统内购物卡帐户及有关帐户管理。 3,实现购物卡交易和合法性检查。 4,实现购物卡交易积分功能。 5,实现购物卡报表功能。 6,数据以文献形式存储。 提示:制卡:指申请一种购物卡,但还没有使用。发卡:指该卡已经起用。实现卡交易:指从卡中消费掉一定金额。 二、需求分析 依照题目规定,由于购物卡信息是存储在文献中,因此应提供文献输入、输出等操作;在程序中需浏览购物卡信息,应提供报表、查询等操作;此外还应提供键盘式选取菜单实现功能选取。 三、总体设计 依照需求分析,可以将系统分为五大模块:制卡、发卡、登陆、报表、积分。 购物卡管理系统 制卡模块 发卡模块 登录模块 积分模块 报表模块 查询 储蓄 修改密码 消费 四、详细设计 1、主函数 将main()函数体内界面选取某些语句单独抽取出来作为一独立函数,目在于系统执行完每某些功能模块后可以以便返回到系统界面。 void menu() { int v,w1; do { printf("\t\t*********************MENU*********************\n\n"); printf("\t\t\t\t 1.card-made\n"); printf("\t\t\t\t 2.card-life\n"); printf("\t\t\t\t 3.card-enter\n"); printf("\t\t\t\t 4.card-browse\n"); printf("\t\t\t\t 5.exit\n"); printf("\n\n\t\t **********************************************\n"); printf("Choice your number(1-5):[]\b\b"); scanf("%d",&v); if(v<1||v>5) { w1=1; getchar(); } else w1=0; } while(w1==1); switch(v) { case 1:made();break; case 2:life();break; case 3:enter();break; case 4:browse();break; case 5:exit(0); } } 2、各功能模块设计 (1)制卡模块 【数据构造】 struct credicard { int number; char name[20]; char ID[20]; char word[8]; int flag; float account; int integal; }card[M]; /*card[M]中每个数组元素相应一种运动员信息* / 【程序】 void made() { int i; char h[20]; do { printf("\n\n\t Input your number:<\t\t\t>\b\b\b\b\b\b\b"); scanf("%s",h); if(strlen(h)!=6) { printf("\n\n\n\t\t***************Wrong!Input again****************\n\n"); continue; } for(i=0;i<n;i++) if(strcmp(card[i].ID,h)==0) { printf("\n\n\t\t***********The number exist,input again************\n\n"); break; } } while(((strlen(h))!=6)||strcmp(card[i].ID,h)==0); card[n].number=n; strcpy(card[n].name,"***"); strcpy(card[n].ID,h); strcpy(card[n].word,"000000"); card[n].flag=0; card[n].account=0.00; card[n].integal=0; printf("\n\n\n\t\t********************The card is made!**********************\n\n"); print_one(n); n++; add(); menu(); } print_one(n):显示一张卡信息函数。 【程序】 void print_one(int j) { printf("\n|----|--------------------|--------------------|----|----------|----------|"); printf("\n|NO. | name | ID |flag| account | integal |"); printf("\n|----|--------------------|--------------------|----|----------|----------|"); printf("\n|%4d|%20s|%20s|%4d|%10.2f|%10d|", card[j].number,card[j].name,card[j].ID,card[j].flag,card[j].account,card[j].integal); printf("\n|----|--------------------|--------------------|----|----------|----------|"); } (2)发卡模块 void life() { int k=-1; char h[20]; if(n==0) printf("\n\n\t\t****************Make card first*********************\n"); else { printf("\n\n\t Input your applied number:<\t\t\t>\b\b\b\b\b\b\b"); scanf("%s",h); k=search(h); if(k==-1) printf("\n\n\t\t\t*****************Wrong number!****************\n"); else { if(card[k].flag==1) printf("\n\n\t\t****************Life already!*****************\n"); else huo(k); } } menu(); } huo(k):激活一张卡函数。 void huo(int k) { char m[20],p[8]; int x,w2; do { printf("\n\n\t\t Life? (1) Yes (2) No \n"); printf("\n\t\t Chioce your number:< >\b\b"); scanf("%d",&x); if(x<1||x>2) {w2=1;getchar();} else w2=0; } while(w2==1); if(x==1) { printf("\n\n\t\tInput your name:<\t\t\t>\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); scanf("%s",m); strcpy(card[k].name,m); printf("\n\n\t\tInput six-number code :< >\b\b\b\b\b\b\b"); scanf("%s",p); strcpy(card[k].word,p); card[k].flag=1; printf("\n\n\n\t\t********************Life!**********************\n\n"); print_one(k); add(); } } (3)登陆模块 void enter() { int k=-1; char h[20]; if(n==0) printf("\n\n\t\t****************Make card first*********************\n"); else { printf("\n\n\tInput your applied number:<\t\t\t>\b\b\b\b\b\b\b"); scanf("%s",h); k=search(h); if(k==-1) printf("\n\n\t\t\t*****************Wrong number!****************\n"); else { if(card[k].flag=0) printf("\n\n\t\t************LIFE FIRST!************\n"); else hedui(k); } } menu(); } hedui(k):登陆信息。 void hedui(int k) { int c=0,w3=0; char p[8]; do { printf("\n\n\t\t*******Input your code:< >\b\b\b\b\b\b\b"); scanf("%s",p); if(strcmp(card[k].word,p)!=0) { printf("\n\n\t\t********Wrong code!**********\n"); c++; continue; } else { printf("\n\n\t\t**********Right code!***********\n"); w3=1; menu1(k); } } while(w3==0&&c<3); } 子菜单设计如下: void menu1(int k) { int v,w4; { printf("\t\t*********************MENU********************\n\n"); printf("\t\t\t\t 1.Inquire\n"); printf("\t\t\t\t 2.Deposit\n"); printf("\t\t\t\t 3.fetch\n"); printf("\t\t\t\t 4.change code\n"); printf("\t\t\t\t 5.back to menu\n"); printf("\n\n\t\t *********************************************\n"); printf("Choice your number(1--5):< >\b\b"); scanf("%d",&v); if(v<1||v>5) {w4=1;getchar();} else w4=0; } while(w4==1); switch(v) { case 1:stat_one(k);break; case 2:deposit(k);break; case 3:fetch(k);break; case 4:change(k);break; case 5:menu(); } } 子模块设计如下 查询模块: void stat_one(int k) { printf("\n\n\t\t*************Operate successfully!***************"); print_one(k); menu1(k); } 储蓄模块 void deposit(int k) { float a=0.00; printf("\n\n\t\tInput your amount:<\t\t>\b\b\b\b\b\b\b\b\b\b\b"); scanf("%f",&a); card[k].account+=a; printf("\n\n\t\t**********deposit successfully!***********"); print_one(k); add(); menu1(k); } 消费模块: void fetch(int k) { float b=0.00; printf("\n\n\t\tInput your amount:<\t\t>\b\b\b\b\b\b\b\b\b\b\b"); scanf("%f",&b); if(b>card[k].account) printf("\n\n\t\t**********Remaining sum is not enough !*************"); else { card[k].account-=b; card[k].integal=b; printf("\n\n\t\t**********Your patronage !***********"); print_one(k); add(); } menu1(k); } 修改密码模块: void change(int k) { char a[8],b[8]; printf("\n\n\t\tInput new six-number code:< >\b\b\b\b\b\b\b"); scanf("%s",a); printf("\n\t\tInput new code again:< >\b\b\b\b\b\b\b"); scanf("%s",b); if(strcmp(a,b)==0) { printf("\n\n\t\t**********Code change!*************"); add(); } else printf("\n\n\t\tDifferent codes,code change failed!"); menu1(k); } (4)报表模块: void browse() { int i; if(n==0) printf("\n\n\t\t**********Make card first!***********"); else { printf("\n\n\t\t*************Operate successfully!**************\n"); printf("\n|----|--------------------|--------------------|----|----------|----------|"); printf("\n|NO. | name | ID |flag| account | integal |"); printf("\n|----|--------------------|--------------------|----|----------|----------|"); for(i=0;i<n;i++) printf("\n|%4d|%20s|%20s|%4d|%10.2f|%10d|", card[i].number,card[i].name,card[i].ID,card[i].flag,card[i].account,card[i].integal); printf("\n|----|--------------------|--------------------|----|----------|----------|"); } menu( ); } 3、公共函数 (1)保存函数 void add() { int i; FILE *fp; if((fp=fopen("score.txt","wb"))==NULL) { printf("\t\t Can not open the file \n"); return; } for(i=0;i<n;i++) if(fwrite(&card[i],sizeof(struct credicard),1,fp)!=1) { printf("\t\t File write error \n"); return; } fclose(fp); printf("\n\n\n\t\t************Keep!!!************\n"); } (2)查找函数 int search(char h[20]) { int i,k=-1; for(i=0;i<n;i++) if(strcmp(card[i].ID,h)==0)k=i; return(k); } 五、运营成果 (1)主菜单 (2)制卡模块:输入卡号 (3)制卡成功 (4)发卡模块 (5)发卡成功 (6)登录模块 (7)储蓄成功 (8)修改密码 (9)报表功能 六、总结 此前在没有做课程设计时候,总觉得自己编写一种程序那简直就是天方夜谭,自己怎么也许写出来。可是当前,照着课本一点点模仿设计,自己居然也可以写个大概,虽然过程不是很顺利,有些某些还需要学长指点,但是,我觉得已有很大收获了。对于有些某些,也许还是不会写,最起码可以看懂了,不会像此前同样,只是能做一两道题目,写个三四十行程序,当前是对于程序有了一种整体把握。虽然耗费了诸多时间和精力,但是可以学到诸多东西,当前自己对于C语言有了更深一点理解和结识。 我懂得,当前只是学了一点皮毛而已,离纯熟掌握C语言尚有很大一段距离,要做尚有诸多,我一定会在这个暑假继续加强学习,在理解学习好自己编写这个程序后,再尝试编写某些其她程序,使自己更加纯熟运用和掌握c语言。
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服