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

公交IC卡管理系统

2017-09-02 20页 doc 42KB 34阅读

用户头像

is_594886

暂无简介

举报
公交IC卡管理系统公交IC卡管理系统 #include "stdio.h" //标准输入输出头文件 #include "string.h" //字符串处理头文件 #include "windows.h" //为界面改变背景及文字颜色 #include "stdlib.h" /* ** 定义一个结构体,用于存储公交IC卡的基本信息 */ typedef struct { char NO[10]; //公交IC卡卡号 char name[20]; //公交IC卡持卡人姓名 double money; //公交IC卡中现有金额...
公交IC卡管理系统
公交IC卡管理系统 #include "stdio.h" //输入输出头文件 #include "string.h" //字符串处理头文件 #include "windows.h" //为界面改变背景及文字颜色 #include "stdlib.h" /* ** 定义一个结构体,用于存储公交IC卡的基本信息 */ typedef struct { char NO[10]; //公交IC卡卡号 char name[20]; //公交IC卡持卡人姓名 double money; //公交IC卡中现有金额 int flag; //标志变量,用于记录公交IC卡的状态是否为挂失 }IC_card; static int card_num; //存储所有的IC卡数目 static int total_thing[1000]; //存储IC卡使用乘车总次数 static int car_num[1000][50]; //存储乘坐的车次 static double car_money[1000][50]; //存储乘坐的车的费用 void input_card_information(IC_card Card[]); int input_card_number_1(IC_card Card[]); int input_card_number_2(IC_card Card[]); void charge_card(IC_card Card[], int card_num); void search_information(IC_card Card[], int counter); void consume_card(IC_card Card[], int counter); void register_loss(IC_card Card[], int counter); void cancel_register_loss(IC_card Card[], int counter); void cancel_card(IC_card Card[], int counter); int main() { IC_card Card[1000]; int counter, choice, flag_1 = 1; char s[20]; //对公交IC卡进行操作用于存储公交卡号以用于 char reply; system("color 02"); do { /* ** 操作菜单 */ printf("\n****************************************************************** ****\n"); printf(" ??????????????????????????\n"); printf(" ?************欢迎使用公交IC卡管理系统************?\n"); printf(" ??????????????????????????\n"); printf(" ?1 公交IC卡的基本信息(包含卡号、初始金额)录入: ?\n"); printf(" ??????????????????????????\n"); printf(" ?2 公交IC卡消费: ?\n"); printf(" ??????????????????????????\n"); printf(" ?3 公交IC卡充值: ?\n"); printf(" ??????????????????????????\n"); printf(" ?4 公交IC卡查询: ?\n"); printf(" ??????????????????????????\n"); printf(" ?5 公交IC卡挂失: ?\n"); printf(" ??????????????????????????\n"); printf(" ?6 公交IC卡解除挂失: ?\n"); printf(" ??????????????????????????\n"); printf(" ?7 公交IC卡注销: ?\n"); printf(" ??? printf(" ?0 退出系统: ?\n"); printf(" ??????????????????????????\n"); printf("\n****请输入您想要进行的操作的选项前面的数字:"); scanf("%d",&choice); printf("\n"); /* ** 对菜单的选择进行处理 */ switch (choice) { /* ** 处理公交IC卡的基本信息录入 */ case 1: { do { input_card_information(Card); printf("你想继续录入公交IC卡信息吗,\n"); printf("继续请按’Y‘或者’y‘,退出录入请按’N‘或者’n‘:"); scanf("%c",&reply); getchar(); //吸收回车符 printf("***********************************************************\n\n"); }while ((reply=='Y')||(reply=='y')); reply = 'n'; system("pause"); break; } /* ** 公交卡消费 */ case 2: { do { counter = input_card_number_1(Card); if (counter == -1) { break; } else { consume_card(Card, counter); } printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 printf("***********************************************************\n\n"); }while ((reply=='Y')||(reply=='y')); reply = 'n'; counter = 0; system("pause"); break; } /* ** 处理公交IC卡的充值 */ case 3: { do { counter = input_card_number_1(Card); if (counter == -1) { break; } else { charge_card(Card, counter); } printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 printf("***********************************************************\n\n"); }while ((reply=='Y')||(reply=='y')); reply = 'n'; counter = 0; system("pause"); break; } /* ** 处理公交IC卡的信息查询 */ case 4: { do { counter = input_card_number_1(Card); if (counter == -1) { break; } else { search_information(Card, counter); } printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 printf("***************** }while ((reply=='Y')||(reply=='y')); reply = 'n'; counter = 0; system("pause"); break; } /* ** 处理公交IC卡的挂失 */ case 5: { do { counter = input_card_number_1(Card); if (counter == -1) { break; } else { register_loss(Card, counter); } printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 printf("***********************************************************\n\n"); }while ((reply=='Y')||(reply=='y')); reply = 'n'; counter = 0; system("pause"); break; } case 6: { do { counter = input_card_number_2(Card); if (counter == -1) { break; } else { cancel_register_loss(Card, counter); } printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 printf("***********************************************************\n\n"); }while ((reply=='Y')||(reply=='y')); reply = 'n'; counter = 0; system("pause"); break; } /* ** 处理公交IC卡的注销 */ case 7: { do { counter = input_card_number_1(Card); if (counter == -1) { break; } else { cancel_card(Card, counter); } printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 printf("***********************************************************\n\n"); }while ((reply=='Y')||(reply=='y')); reply = 'n'; counter = 0; system("pause"); break; } /* ** 程序退出 */ case 0: { do { printf("是否确定退出程序,确定请按’Y‘或者’y‘不退出请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 printf("欢迎下次使用本程序~\n"); system("pause"); exit(0); }while ((reply == 'Y')||(reply == 'y')); break; } } }while (1); } /* ** 自定义:录入IC卡信息 */ void input_card_information(IC_card Card[]) { printf("请输入新录入公交IC卡信息:\n"); printf("****编号:"); scanf("%s", Card[card_num].NO); //键盘输入公交IC卡的卡号 getchar(); printf("****姓名:"); scanf("%s", Card[card_num].name); //输入IC卡持有者姓名 getchar(); //吸收回车符 printf("****初始金额:"); scanf("%lf", &Card[card_num].money); //初始化IC卡金额 getchar(); Card[card_num].flag = 1; //标识变量定位该卡未被注销 card_num ++; //每录入一个IC卡的信息后,IC卡总数就加一 printf("????????????????????\n"); printf("新卡录入成功,当前共有%d个公交IC卡!\n", card_num); printf("????????????????????\n"); } /* ** 自定义函数:对IC卡充值 */ void charge_card(IC_card Card[], int counter) { double charge; //存储对公交IC卡充值时的金额 printf("请输入充值金额:"); scanf("%lf", &charge); getchar(); /* ** 如果找到系统中的要充值的卡号,则执行充值 */ if (Card[counter].flag == 1) { printf("充值成功!\n"); printf("公交IC卡的编号:%s\n姓名:%s\n初始金额:%.2lf 目前金额:%.2lf\n",Card[counter].NO, Card[counter].name, Card[counter].money, Card[counter].money+charge); Card[counter].money += charge; //将系统中存储的金额改为充值后的金额 printf("***********************************************************\n\n"); } } /* ** 自定义函数:输入IC卡号,从系统中找出该卡 */ int input_card_number_1(IC_card Card[]) { char card_ID[20], reply; int counter; do { printf("请输入公交IC卡的编号:"); scanf("%s", card_ID); getchar(); /* ** 将输入的要进行操作的IC卡卡号与系统录入的卡对比 */ for(counter = 0; counter < card_num; counter++) { if (strcmp(card_ID, Card[counter].NO) == 0) { break; } } /* ** 如果没有找出系统中要充值的卡号,counter会大于所输入的卡的数目 */ if (counter == card_num) { printf("对不起,系统没有此IC卡的记录~~\n"); printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 } else if (Card[counter].flag == 0) { printf("此卡正在挂失中~~"); printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 } else { return counter; //若找到IC卡,则返回卡的序号 } }while ((reply == 'Y')||(reply == 'y')); if ((reply == 'N')||(repl { return -1; //若返回值为-1,则放弃操作 } } int input_card_number_2(IC_card Card[]) { char card_ID[20], reply; int counter; do { printf("请输入公交IC卡的编号:"); scanf("%s", card_ID); getchar(); /* ** 将输入的要进行操作的IC卡卡号与系统录入的卡对比 */ for(counter = 0; counter < card_num; counter++) { if (strcmp(card_ID, Card[counter].NO) == 0) { break; } } /* ** 如果没有找出系统中要充值的卡号,counter会大于所输入的卡的数目 */ if (counter == card_num) { printf("对不起,系统没有此IC卡的记录~~\n"); printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 } else if (Card[counter].flag == 1) { printf("此卡没有被挂失~~"); printf("您是否需要重新输入IC卡号以便进入操作,\n"); printf("如果您要继续输入,请按’Y‘或者’y‘,进入主菜单请按’N‘或者’n‘:"); scanf("%c", &reply); getchar(); //吸收回车符 } else { return counter; //若找到IC卡,则返回卡的序号 } }while ((reply == 'Y')||(reply == 'y')); if ((reply == 'N')||(reply == 'n')) { return -1; //若返回值为-1,则放弃操作 } } /* ** IC卡信息查询 */ void search_information(IC_card Card[], int counter) { int counter_1; printf("**公交IC卡的编号:%s\n", Card[counter].NO); printf("**姓名:%s\n****目前金额:%.2f\n", Card[counter].name, Card[counter].money, Card[counter].money); for(counter_1 = 0; counter_1 < total_thing[counter]; counter_1++) { printf("**乘坐的公共汽车的车次有:%d\n", car_num[counter][counter_1]); printf("**乘坐该次公共汽车消费为:%.2f\n", car_money[counter][counter_1]); } printf("***********************************************************\n\n"); } /* ** IC卡消费 */ void consume_card(IC_card Card[], int counter) { int N = total_thing[counter]; printf("请输入乘坐的公共汽车的车次:"); scanf("%d", &car_num[counter][N]); getchar(); printf("请输入乘坐该车次的费用:"); scanf("%lf", &car_money[counter][N]); getchar(); Card[counter].money -= car_money[counter][N]; total_thing[counter] ++; printf("***********************************************************\n\n"); } void register_loss(IC_card Card[], int counter) { Card[counter].flag = 0; printf("公交IC卡已成功挂失。\n"); printf("***********************************************************\n\n"); } void cancel_register_loss(IC_card Card[], int counter) { Card[counter].flag = 1; pr printf("***********************************************************\n\n"); } void cancel_card(IC_card Card[], int counter) { for(; counter < card_num-1; counter++) { Card[counter] = Card[counter+1]; } card_num --; //注销成功后,将目前公交IC卡的数目改为目前的总数 printf("注销成功,还剩余%d公交IC卡\n", card_num); printf("***********************************************************\n\n"); }
/
本文档为【公交IC卡管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索