为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

购物卡管理系统

2011-07-17 29页 doc 464KB 37阅读

用户头像

is_741711

暂无简介

举报
购物卡管理系统购物卡管理系统 C语言课程设计 姓名 王锦坤 班级:193091 学号:20091002436 专业:网络工程 指导老师:张冬梅 完成时间:2010年6月26日 【题目要求】 设计购物卡管理系统,系统主要模块: (1)​ 实现系统内制卡、发卡功能; (2)​ 实现系统内账户及相关账户管理; (3)​ 实现卡交易和合法性检查; (4)​ 实现卡金融交易积分功能; (5)​ 实现卡报表功能; (6)​ 数据以文件形式存储。 【提示】 制卡:指申请一张购物卡,但还没有使用。 发卡:指该购物卡已经启用。 实现卡交易:指从卡中消费掉一定...
购物卡管理系统
购物卡管理系统 C语言课程设计 姓名 王锦坤 班级:193091 学号:20091002436 专业:网络工程 指导老师:张冬梅 完成时间:2010年6月26日 【目要求】 设计购物卡管理系统,系统主要模块: (1)​ 实现系统内制卡、发卡功能; (2)​ 实现系统内账户及相关账户管理; (3)​ 实现卡交易和合法性检查; (4)​ 实现卡金融交易积分功能; (5)​ 实现卡报表功能; (6)​ 数据以文件形式存储。 【提示】 制卡:指申请一张购物卡,但还没有使用。 发卡:指该购物卡已经启用。 实现卡交易:指从卡中消费掉一定的金额。 1、​ 系统需求分析 根据题目要求,由于数据要以文件形式存储,所以应提供文件的输入、输出等操作;在程序中要实现银行卡的各项功能,应提供制卡、发卡、存款、消费、查询账户相关信息、查询账户交易、查询全部信息、退出程序等一系列操作;另外还应提供键盘式选择菜单实现功能选择。 2、​ 系统总体设计 分析了整个系统之后,根据上面的系统需求分析,可以将这个系统的设计分为如下七大模块:制卡、发卡、存款、消费、查询账户相关信息、查询账户交易记录、查询全部信息 3、​ 系统详细设计 1.​ 主函数设计 主函数的设计比较简介,只包括一个菜单函数,主要实现菜单功能,提供了菜单输入、模块选择、退出系统等模块的调用。其中各功能模块用菜单方式选择。 【图】 【小结】 函数开头有“文件包含”的预处理命令,所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。C语言提供了#include命令用来实现“文件包含”的操作。 在本程序中包含了一下头文件:"string.h"、"ctype.h"、"stdio.h",方便调用库函数实现某些功能。 在程序设计中,只使用一些基本类型(或称简单类型)的变量(如整型、实型、字符型变量等)和构造类型数据——数组,是远远不够的。有时候需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是相互联系的。 在这个程序中,定义了一个结构体数组来存放购物卡用户的各种信息,包括账户卡号、户主姓名、账户余额、账户状态、账户积分,结构体如下: struct user { int num;/*账户号码*/ char name[20];/*户主名称*/ float surplus;/*账户余额*/ char state[2];/*账户状态,y:已启用,n:未启用*/ int point;/*账户积分*/ }u[100]; 同时在各分函数中,定义了int、float、char等一系列变量类型,用来实现函数功能。 在主函数前面,要加上对各功能函数的声明,声明的作用是把函数的名字、函数的类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查,例如函数名是否正确,实参与形参的类型和个数是否一致等。 主函数比较简单,但是函数的调用很多,所以,在程序的开头就加上了各函数的声明,如下: void c_c();/*制卡函数模块*/ void s_u();/*发卡函数模块*/ void in_m();/*存款函数模块*/ void out_m();/*取款函数模块*/ void c_i();/*查询账户相关信息函数模块*/ void c_r();/*查询账户交易记录函数模块*/ void check();/*查询全部信息函数模块*/ void menu();/*主菜单函数模块*/ void back();/*返回函数模块*/ void check_b();/*给用户提示已有信息*/ 实现菜单选择功能,使用的是switch语句,根据用户输入的菜单选项a,调用不同的函数实现各种功能: switch(a) { case 1:c_c();break;/*制卡模块*/ case 2:s_u();break;/*发卡模块*/ case 3:in_m();break;/*存款模块*/ case 4:out_m();break;/*取款模块*/ case 5:c_i();break;/*查询账户相关信息模块*/ case 6:c_r();break;/*查询交易记录模块*/ case 7:check();break;/*查看所有信息模块*/ case 8:exit(0);break;/*退出模块*/ } 2.​ 各功能模块设计 2.1 制卡模块 【】 2.2 发卡模块 【流程图】 2.3 存款模块 【流程图】 2.4 消费模块 【流程图】 2.5 查询账户相关信息模块 【流程图】 2.7 查询全部信息模块 【流程图】 3.​ 公共函数设计 返回模块,即在完成一项命令之后,可以选择返回主菜单或者是退出程序。 【流程图】 总结 经过连日的奋斗,终于完成了这个购物卡管理系统的设计制作,在这个过程中,感谢老师给了我很多的指导和帮助,使我可以更快的完成这个系统的制作。 在读写文件的相关操作中,我屡次犯错,原因是打开一个二进制文件和打开一个文本文件所存放的信息和读取的信息是不同的,由于这一失误,在很长的一段时间内阻碍了我继续向前的脚步,后来向精通C语言的同学请教,终于弄明白了这一原理,得以继续向前,继续完成这一程序设计。 给予每一个用户清晰明了的界面和全面的信息,方便每一位用户的操作,这是我设计程序的一个宗旨,鉴于找一点,我添加了一个函数来实现查询全部信息的功能,使程序更加完善。但是还有一个不足之处就是不能没能够实现积分的积累,只能记录最后一次消费的积分,财务报表也只能报出每个账户最后一次的消费情况。 毋庸置疑,学习的过程就是寻找错误和改正错误的过程,在这次实习中,我发现了很多自己编程方面的不足,也遇到了很多的困难,但通过自己的努力,终于完成了这个程序设计。 在这次C语言课程设计实习中,我充分的利用了以前学习的知识,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧,利用系统提供的标准函数和自定义函数进行程序设计,培养了利用C语言设计综合程序的能力。 源代码: #include #include /*调用字符函数*/ #include #include /*通用输入输出库*/ #include #define M 1000 void menu(); void made(); void add(); void life(); void enter(); void browse(); void huo(int k); void hedui(int k); void menu1(int k); void fetch(int k); void change(int k); void deposit(int k); void stat_one(int k); void print_one(int j); int search(char h[20]); int n=0; struct credicard /*定义信用卡结构体*/ { int number; char name[20]; char ID[20]; char word[8]; int flag; float account; int integal; }card[M]; void menu() { int v,w1; do { printf("\n\n\n\n"); printf("\t\t <________________________THE MENU_______________________>\n"); printf("\t\t|| (1) 制 卡 操 作 ||\n"); printf("\t\t||------------------------------------------------------||\n"); printf("\t\t|| (2) 帐 号 激 活 ||\n"); printf("\t\t||------------------------------------------------------||\n"); printf("\t\t|| (3) 帐 户 登 陆 ||\n"); printf("\t\t||------------------------------------------------------||\n"); printf("\t\t|| (4) 报 表 操 作 ||\n"); printf("\t\t||------------------------------------------------------||\n"); printf("\t\t|| (5) 退 出 ||\n"); printf("\t\t||______________________________________________________||\n"); printf("\n\n\t\t 请选择操作(1--5):< >\b\b"); scanf("%d",&v); if(v<1||v>5) { printf("\n\n\t\t**********输 入 有 误 !************"); 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); /*退出*/ } } void main() { printf("\n\n\n\n\n\n\n\n\n"); printf("\t\t*********************购 物 卡 管 理 系 统************************\n"); printf("\n\n\n\t\t 按任意键进入............"); getchar(); menu(); } void made() /*制卡操作*/ { int i; char h[20]; do { printf("\n\n\t请输入要申请的号码:<\t\t\t>\b\b\b\b\b\b\b"); scanf("%s",h); if(strlen(h)!=6) { printf("\n\n\n\t\t***************输入有误,请重新输入****************\n\n"); continue; } for(i=0;i\b\b\b\b\b\b\b"); scanf("%s",h); k=search(h); if(k==-1) printf("\n\n\t\t\t*****************该号码不存在!****************\n"); else { if(card[k].flag==1) printf("\n\n\t\t****************该卡已经激活!*****************\n"); else huo(k); } } menu(); } int search(char h[20]) { int i,k=-1; for(i=0;i\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\t请输入姓名:<\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\t请输入六位数密码:< >\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********************激 活 成 功!**********************\n\n"); print_one(k); add(); } } void enter() /*进入*/ { int k=-1; char h[20]; if(n==0) printf("\n\n\t\t****************请 先 制 卡*********************\n"); else { printf("\n\n\t请输入购物卡号码:<\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*****************该号码不存在!****************\n"); else { if(card[k].flag=0) printf("\n\n\t\t************该卡还未激活,请先激活!************\n"); else hedui(k); } } menu(); } void hedui(int k) /*验证核对*/ { int c=0,w3=0; char p[8]; do { printf("\n\n\t\t*******请输入密码:< >\b\b\b\b\b\b\b"); scanf("%s",p); if(strcmp(card[k].word,p)!=0) { printf("\n\n\t\t********密码不正确,请重新输入!**********\n"); c++; continue; } else { printf("\n\n\t\t**********密 码 正 确 !***********\n"); w3=1; menu1(k); } } while(w3==0&&c<3); } void menu1(int k) /*显示*/ { int v,w4; do { printf("\n\n\n"); printf("\t\t <_______________________THE MENU1_______________________>\n"); printf("\t\t|| (1) 查 询 ||\n"); printf("\t\t||------------------------------------------------------||\n"); printf("\t\t|| (2) 存 款 ||\n"); printf("\t\t||------------------------------------------------------||\n"); printf("\t\t|| (3) 消 费 ||\n"); printf("\t\t||------------------------------------------------------||\n"); printf("\t\t|| (4) 修 改 密 码 ||\n"); printf("\t\t||------------------------------------------------------||\n"); printf("\t\t|| (5) 返回主菜单 ||\n"); printf("\t\t||______________________________________________________||\n"); printf("\n\n\t\t 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*************操 作 成 功 !***************"); print_one(k); menu1(k); } void deposit(int k) { float a=0.00; printf("\n\n\t\t请输入存款金额:<\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**********存 款 成 功 !***********"); print_one(k); add(); menu1(k); } void fetch(int k) /*消费*/ { float b=0.00; printf("\n\n\t\t请输入消费金额:<\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**********余 额 不 足 !*************"); else { card[k].account-=b; card[k].integal=b; printf("\n\n\t\t**********谢 谢 惠 顾 !***********"); print_one(k); add(); } menu1(k); } void change(int k) /*修改密码*/ { char a[8],b[8]; printf("\n\n\t\t请输入新六位数密码:< >\b\b\b\b\b\b\b"); scanf("%s",a); printf("\n\t\t请再次输入新六位数密码:< >\b\b\b\b\b\b\b"); scanf("%s",b); if(strcmp(a,b)==0) { printf("\n\n\t\t**********密码修改成功!*************"); add(); } else printf("\n\n\t\t两次密码输入不一致,密码修改失败!"); menu1(k); } void browse() { int i; if(n==0) printf("\n\n\t\t**********无记录,请先制卡!***********"); else { printf("\n\n\t\t*************操 作 成 功 !**************\n"); printf("\n|----|--------------------|--------------------|----|----------|----------|"); printf("\n|NO. | 姓 名 | 卡 号 |flag| account | integal |"); printf("\n|----|--------------------|--------------------|----|----------|----------|"); for(i=0;i
/
本文档为【购物卡管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索