C语言会员卡管理程序Word下载.docx
《C语言会员卡管理程序Word下载.docx》由会员分享,可在线阅读,更多相关《C语言会员卡管理程序Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
1.6输出要求:
(1)应用程序运行后,要在屏幕上显示一个菜单;
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
1.7提示:
使用结构类型和一维数组类型,用来保存会员卡的内容。
2.1应用程序功能的详细说明:
本程序为图书大厦会员卡管理程序,主菜单分为五个选项(如图一所示)分别为:
录入新会员、进入老会员资料、统计所用会员中积分最高者、统计会员总数以及离开。
图一
进入old选项后出现一子菜单,可进行一系列对老会员管理的操作(如图二所示)。
其操作包括基本信息的输出、积分统计、本次买书折后价格、会员卡丢失、删除此会员、离开子菜单。
图二
2.2应用程序运行环境的要求:
此程序在windows操作系统环境中即可运行。
2.3应用程序的安装与启动方法:
打开win-TC,打开命名为07010120.c的文件,在菜单中点击编译链接并运行,将会出现对话框“恭喜,编译成功”,单击确定,便会出现如图一的主菜单。
2.4程序的界面、交互方式和操作方法:
在出现如图一的主菜单后,输入用户想进行的操作的号码(1—5中任意一个号码),如输入错误将提示Error,重新出现主菜单,要求用户重新输入一个正确号码。
(如图三所示)
图三
如果输入正确,根据相对应的号码,用户能进行以下操作:
输入1:
表明此用户是新会员,用户将看到如图四的界面,用户需要按顺序录入姓名、身份证号及电话号码,每一项录入后请打回车键。
录完这些信息后,首先会出现用户的号码,请用户务必记清楚自己的号码,之后的一系列操作都需要用此号码完成。
然后会出现提示问是否要再输入一个新用户(如图五),如果是请输入1回车,程序要求您再次输入,不是请输入0回车,界面将跳回主菜单。
输入错误将提示error,然后跳出,出现主菜单。
图四
图五
输入2:
将出现如图二的界面,用户可根据需要进行操作。
在如图二界面出现的子菜单下:
输出用户的基本信息。
这需要用户通过之前所给出的号码来完成操作。
输入号码后按回车进行操作。
(如图六)
图六
输出此用户所累积的积分。
(用户需要执行过买书的操作后方有积分)(如图七)
图七
输入3:
用户买书,算出此次买书所需要花费的钱数。
提示输入此次消费所花的钱数,根据积分算出应付钱数(累积购书满1000分享受95折、满2000分享受9折、满5000分享受8折,每次积分的分数为折前应付的钱数)。
(如图八)
图八
输入4:
表示此用户会员卡丢失,对此用户进行标记,在基本信息输出时会显示卡已丢失。
(如图九、图十)
图九图十
输入5:
表示删除此用户。
输入6:
返回主菜单。
主菜单下:
自动排序,得到积分最高的人的姓名及相应积分。
如果最高积分为0将不输出。
(如图十一)
图十一
统计一共有多少位会员。
(如图十二)
图十二
退出程序。
2.5输入数据类型、格式和内容限制:
输入姓名、身份证号、电话号码以字符串形式输入,钱数为双精度实型,其他的均为整型。
每次打出数据后按回车键输入。
在要求输数字时,请输数字,不要输其他字母。
程序整体结构及各模块功能描述:
input():
输入用户信息
searchoutput():
输出用户信息
score():
统计用户积分情况
deal():
算出用户此次折后花费是多少,并累计积分
lost():
用户会员卡丢失
delet():
删除此用户
sort():
统计积分最高的用户
howmany():
统计一共有多少名会员
3.2主要模块算法和数据结构解释:
上述九个模块,用九个函数表示,除main()函数外,其余函数原型设计如下:
voidinput(STUDENTs[]);
此函数完成会员信息的输入,输入的会员信息保存在形式参数指定的结构数组中。
voidsearchoutput(STUDENTs[]);
voidscore(STUDENTs[]);
floatdeal(STUDENTs[]);
intlost(STUDENTs[]);
voiddelet(STUDENTs[]);
voidsort(STUDENTs[]);
voidhowmany(STUDENTs[]);
上述几个函数形式参数相同,s存放着所有会员的信息。
主程序为所有会员信息的保存提供了结构数组,各个模块通过函数参数使用该数组。
main()函数算法流程图:
searchoutput()函数算法流程图:
其它函数流程图与searchoutput()函数流程图大体相似,故不一一画出。
#include<
stdio.h>
string.h>
typedefstruct{/*会员信息的结构类型*/
longnum;
/*号码*/
charname[80];
/*姓名*/
charID[80];
/*身份证号*/
charphone[80];
/*电话号码*/
floatscore;
/*积分*/
intlost;
/*判断丢失*/
}STUDENT;
main()
{STUDENTs[100];
/*存放会员信息*/
intchoice1,choice2;
inti,j,b=0;
floatmoney;
longn,num;
for(i=0;
i<
100;
i++)/*初始化姓名、积分、号码*/
{strcpy(s[i].name,"
"
);
s[i].score=0;
s[i].num=0;
}
for(j=0;
;
j++)
{printf("
============MENU=========\n"
printf("
new...................................................1\n"
old....................................................2\n"
thehighestscore..............................3\n"
howmanycustomers.......................4\n"
exit..................................................5\n"
scanf("
%d"
&
choice1);
switch(choice1)
{case1:
input(s);
break;
case2:
for(i=0;
i++){
===========MENU=========\n"
basicinformation............................1\n"
score...............................................2\n"
price................................................3\n"
lost..................................................4\n"
delete..............................................5\n"
exitthismenu.................................6\n"
choice2);
switch(choice2)
searchoutput(s);
score(s);
break;
case3:
deal(s);
case4:
lost(s);
case5:
delet(s);
case6:
b=1;
default:
printf("
Error\n"
}if(b==1)/*跳出子菜单循环*/
}break;
sort(s);
howmany(s);
exit(0);
}
voidinput(STUDENTs[])/*输入会员信息*/
{inti,a=2;
i++)
{if(s[i].num==0)
{s[i].num=i+1;
\nEnteryourinformation(name,IDnumber,telephonenumber)\n"
scanf("
%s"
s[i].name);
s[i].ID);
s[i].phone);
Yournumberis%d\n"
s[i].num);
s[i].lost=0;
anoterone?
(yes=1,no=0)\n"
a);
if(a==1)
continue;
else
if(a==0)
voidsearchoutput(STUDENTs[])/*查找会员并输出*/
{inti;
longn;
enteryournumber:
\n"
%ld"
n);
{/*根据是否标记丢失,有两种不同的输出方式*/
if(s[i].num==n&
&
s[i].lost==1)/*标记丢失*/
{printf("
number:
%ld\nname:
%s\nIDnumber:
%s\ntelephonenumber:
%s\n"
s[i].num,s[i].name,s[i].ID,s[i].phone);
Ithasbeenlost!
s[i].lost==0)/*未标记丢失*/
if(strcmp(s[i].name,"
)==0)
Cannotfind!
floatdeal(STUDENTs[])/*计算该会员此次消费价钱*/
floatscore,money;
{if(strcmp(s[i].name,"
if(s[i].num==n)
howmuchitcoststhistime:
%f"
money);
s[i].score=s[i].score+money;
if(s[i].score>
=1000&
s[i].score<
2000)
money=money*0.95;
=2000&
5000)
money=money*0.9;
=5000)
money=money*0.8;
price:
%f\n"
money);
returns[i].score;
voidscore(STUDENTs[])/*输出该用户积分*/
thescoreis%f\n"
s[i].score);
intlost(STUDENTs[])/*标记丢失*/
{
inti;
{s[i].lost=1;
NO.%ldlost!
returns[i].lost;
voiddelet(STUDENTs[])/*删除该会员*/
{inti,a=0;
{if(s[i].num==n)
{strcpy(s[i].ID,"
NO.%ldhasbeendelete!
n);
a=1;
voidsort(STUDENTs[])/*选出积分最高的会员*/
floathigh;
high=s[0].score;
for(i=1;
if(high<
s[i].score)
high=s[i].score;
{if(high==s[i].score&
s[i].score!
=0)
name:
%sscore:
s[i].name,s[i].score);
voidhowmany(STUDENTs[])/*统计有多少名会员*/
{inti,count=0;
=100;
{if(s[i].num!
count++;
thereare%dcustomers\n"
count-1);