资源描述
《计算机科学和应用系程序类课程设计》
设计汇报书
题 目:会员消费积分管理系统
一、 需求分析
首先该问题分为两个大块,一个是会员卡管理功效,另一个是会员积分管
理功效。针对会员卡管理功效,首先应含有7项功效,新会员录入,查询会员
信息,会员挂失操作,会员冻结操作,修改密码操作,注销会员操作,
和返回上一层目录操作。在没有一个会员时候,假如用户进行了查询及注
销等其它在有用户基础上才应该进行操作,也应该给出对应提醒,来警示用
户应该正确操作。
要实现新会员增加,首先应设置一个会员结构体数据结构来存放每个
会员信息,以防会员之间信息混淆,每个会员信息包含身份证号码存放
数组,密码存放数组,冻结存放,挂失存放,消费额存放,等级存放,
积分存放这些内容,在增加时对于身份证号码判定,输入错误时应该采取
方法,新会员增加时密码设置,对于密码位数要求和出现不符合要求应该
采取对应方法,和再次密码确实定。
实现会员信息输出时要进行身份证号码识别,密码确实定,然后根据一
定格式给出会员信息存放内容。
在进行冻结和后面对应操作时也全部是首优异行身份识别,密码确实
认,经过后再进行对应操作。
进行密码修改时候,首先要进行身份识别,进行旧密码确实定,然后
才提醒输入新密码,并再次进行新密码确实定。新密码要覆盖旧密码,下次进行
其它操作时要实现新密码置换。
在进行注销用户操作时,要删除该用户,在进行下一次操作时,要做出相
应提醒该用户已删除。
返回上一层菜单能够使用户返回到上一层菜单,该功效较轻易实现。
在进行积分查询时首先要消费额录入来验证该功效实现。
在进行折扣率查询时首先要等级录入来验证该功效。
二、 系统关键功效
该系统关键功效是:会员卡管理功效和会员卡储值积分管理。
会员卡管理功效:
(1)依据身份证办理会员卡,一张身份证只能办理一张会员卡。
(2)依据需要能够注销、挂失、冻结会员卡或修改会员卡密码和积分和消费金额查询。会员基础信息包含:会员身份证号、卡号、密码、积分、消费金额、等级。
会员卡储值积分管理:
(1)依据会员卡等级设置折扣率,依据折扣率自动打折计算消费金额。
(2)依据消费金额计算积分,积分累计达成一定标准后换购商品。
三、功效模块描述及功效模块图
本系统包含以下函数:
①. 系统主函数 函数名 void main()
②. 主控模板call函数 函数名 void call()
③. 系统退出函数 函数名 int tuichu()
④. 会员管理总函数 函数名 int guanli()
⑤. 会员积分总函数 函数名 int jifen()
⑥. 会员信息查询函数 函数名 int chaxun()
⑦. 信息输出函数 函数名 int shuchu(int aa)
⑧. 冻结函数 函数名 int dongjie()
⑨. 挂失函数 函数名 int guashi()
⑩. 注销函数 函数名 int zhuxiao()
⑪. 返回函数 函数名 int fanhui()
⑫. 密码设置函数 函数名 int mimashezhi()
⑬. 检验函数 函数名 int jiancha(int aaa)
⑭. 增加新会员函数 函数名 int zengjia()
⑮. 修改密码函数 函数名 int xiugaimima()
⑯. 输入等级函数 函数名 int shurujibie()
⑰. 输入消费额函数 函数名 int shuruxiaofei()
⑱. 查询积分函数 函数名 int chaxunjifen()
⑲. 查询折扣率函数 函数名 int zhekoulv()
各模板N-S图以下:
1系统主函数
输出“会员卡存放值积分管理系统”
调用call()
2主控模板call函数
清空缓冲区fflush(stdin)
屏幕输出提醒操作内容
读取键盘输入数字
i=1
真
否
调用guanli()
i=2
真
否
调用jifen()
调用tuichu()
3. 系统退出函数
调用exit(0)
返回0
4.会员管理函数
清空缓冲区fflush(stdin)
屏幕输出提醒操作内容
读取键盘输入数字
是
i=1
否
调用zengjia()
是
i=2
否
调用chaxun()
是
i=3
否
调用guashi()
是
i=4
否
调用dongjie()
是
i=5
否
调用xiugaimima()
是
i=6
否
调用zhuxiao()
调用fanhui()
返回0
5.会员积分总函数
清空缓冲区fflush(stdin)
屏幕输出提醒操作内容
读取键盘输入数字
是
i=1
否
调用shuruxiaofei()
是
i=2
否
调用shurujibie()
是
i=3
否
调用zhekoulv()
是
i=4
否
调用chaxunjifen()
调用fanhui()
返回0
6.会员信息查询函数
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
调用jiancha(bc)
调用shuchu(bc)
调用guanli()
7.信息输出函数
处理数据
输出第一行内容
输出信息
zong[aa].guashi
是
== 0
否
输出“否”
输出“是”
zong[aa].dongjie
是
== 0
否
输出“否”
输出“是”
输出其它数据
i=0,i++ 直到 i=17
返回0
8.冻结函数
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
调用jiancha(bc)
zong[bc].dongjie = 1
输出冻结成功消息
调用guanli()
9.挂失函数
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
调用jiancha(bc)
zong[bc].guashi = 1
输出挂失成功消息
调用guanli()
10.注销函数
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
调用jiancha(bc)
zong[x].shen[y] = zong[x+1].shen[y]
y=0,y++ 直到 y=17
zong[x].mima[y] =zong[x+1].mima[y]
y=0,y++ 直到 y=5
处理数据
x=bc,x++ 直到 x=zonglen-1
输出注销成功
调用guanli()
11.返回函数
调用call()
12.密码设置函数
输出提醒操作
读取键盘输入数据
直到mimalen == 6
读取键盘再次输入内容
i=0,i++ 直到 i=5 而且 c[i] == b[i]
c[6] = ‘\0’
zong[zonglen-1].mima[i] = c[i]
i=0,i++ 直到 i=6
返回0
13.检验函数
清空缓冲区fflush(stdin)
输出提醒信息
读取输入字符串b
mimalen=strlen(b)
直到mimalen == 6
b[6] = ‘\0’
n = 0
zong[aaa].mima[i]
是
== b[i]
否
n=n+1
无操作
i=0,i++,直到i=5 而且 n == 6
返回0
14.增加新会员函数
输出提醒信息
读取从键盘录入字符串
直到字符串长度为18
i=0,i++ 直到 i=17 而且 a[i]>= 48 && a[i]<=57
Zonglen =zonglen +1
zong[zonglen-1].shen[i] = a[i]
i=0,i++ 直到 i=18
处理数据
调用mimashezhi()
输出成功消息
调用guanli()
15.修改密码函数
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
输出提醒信息
读取输入字符串b
mimalen=strlen(b)
直到mimalen == 6
zong[bc].mima[i]
是
== b[i]
否
n = n+1
无操作
i=0,i++ 直到 i=5 而且 n== 6
输出提醒操作
读取键盘输入数据
直到mimalen == 6
读取键盘再次输入内容
i=0,i++ 直到 i=5 而且 c[i] == b[i]
c[6] = ‘\0’
zong[bc].mima[i] = c[i]
i=0,i++ 直到 i=6
输出密码修改成功
调用guanli()
16.输入等级函数啊
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
调用jiancha(bc)
输出提醒信息
读取键盘输入信息x
zong[bc].jibie = x
输出设置成功
调用jifen()
17.输入消费函数
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
调用jiancha(bc)
输出提醒信息
读取键盘输入信息x
zong[bc].xiaofei = x
zong[bc].jifen = zong[bc].xiaofei/50
输出设置成功
调用jifen()
18.查询积分
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
调用jiancha(bc)
输出该用户有zong[bc].jifen个积分
输出请进行其它操作
调用jifen ()
19.查询折扣率函数
清空缓冲区fflush(stdin)
是
Zonglen==0
否
输犯错误信息
输出提醒信息
读取输入字符串a
Shenlen=strlen(a)
直到shenlen == 18
i=0,i++,直到i=17 而且 a[i]>=48 && a[i]<=57
a[18] = ‘\0’
zong[i].shen[j]
是
== a[j]
否
调用guanli()
m=m+1
无操作
j=0,j++,直到j=17
i=0,i++,直到i=zonglen-1 而且 m == 18
bc=i
调用jiancha(bc)
是
zong[bc].jibie == 0
否
输出不能打折
zong[bc].jibie
是
== 1
否
输出打9折
zong[bc].jibie
是
== 2
否
输出打8.5折
输出打8折
输出请进行其它操作
调用jifen()
四、 关键代码
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
char a[25],b[10],c[6];
int shenlen,i,zonglen,zl,mimalen,gua,ab,bc,j,m,n,x,y; //用到变量名称
struct abc //会员信息存放结构
{
char shen[18];
int guashi;
int dongjie;
char mima[6];
int jifen;
int xiaofei;
int jibie;
}zong[300];
void main() //主函数main()
{
int call();
printf("会员卡储值积分管理系统\n");
call();
}
int call() //主控程序模块call函数
{
fflush(stdin);
int guanli();
int jifen();
int tuichu();
printf("\n");
printf("请根据提醒进行操作\n");
printf("1.会员卡管理\n");
printf("2.会员卡储值积分管理\n");
printf("3.退出系统\n");
printf("请输入编号:");
scanf("%d",&ab);
switch(ab)
{
case 1: {guanli(); break;}
case 2:{jifen(); break;}
case 3:{ tuichu(); break;}
}
return 1;
}
int tuichu() //退出系统函数
{
exit(0);
return 0;
}
int guanli() //会员信息管理函数
{
int zengjia();
int chaxun();
int guashi();
int dongjie();
int xiugaimima();
int zhuxiao();
int fanhui();
fflush(stdin);
printf("\n");
printf("请根据提醒进行操作\n");
printf("1.申请会员卡\n");
printf("2.查询会员信息\n");
printf("3.申请挂失\n");
printf("4.申请冻结\n");
printf("5.重置密码\n");
printf("6.申请注销\n");
printf("7.返回上一级\n");
printf("请输入编号:");
scanf("%d",&ab);
switch(ab)
{
case 1:zengjia();
case 2:chaxun();
case 3:guashi();
case 4:dongjie();
case 5:xiugaimima();
case 6:zhuxiao();
case 7:fanhui();
}
return 0;
}
int jifen() //会员积分函数
{
int shuruxiaofei();
int shurujibie();
int zhekoulv();
int chaxunjifen();
int fanhui();
fflush(stdin);
printf("\n");
printf("请根据提醒进行操作\n\n");
printf("请先设置用户消费额和等级进行测试,消费额为0到10000,等级为0到3\n\n");
printf("1.依据用户输入消费额\n");
printf("2.依据用户输入等级.\n");
printf("3.查询折扣率\n");
printf("4.查询积分\n");
printf("5.返回上一级\n");
printf("请输入编号:");
scanf("%d",&ab);
switch(ab)
{
case 1:shuruxiaofei();
case 2:shurujibie();
case 3:zhekoulv();
case 4:chaxunjifen();
case 5:fanhui();
}
return 0;
}
int chaxun() //查询信息函数
{
//int z;
int shuchu(int aa);
int jiancha(int aaa);
printf("\n");
fflush(stdin);
if(zonglen == 0)
{printf("\n还未有用户注册\n");
goto dom;}
top:
printf("请输入要查询身份证号码:");
fflush(stdin);
gets(a);
shenlen = strlen(a);
if(shenlen != 18)
{
printf("\n您输入号码有误,");
goto top;
}
for(i=0;i<18;i++)
{
if((a[i] < 48) || (a[i] > 57))
{printf("\n您输入号码有误,");
goto top;}
}
a[18] = '\0';
for(i=0;i<zonglen;i++)
{
m = 0;
for(j=0;j<18;j++)
{
if(zong[i].shen[j] == a[j])
m = m+1;
}
if(m == 18)
{bc = i;
jiancha(bc);
shuchu(bc);
goto dom;
}
if(i == (zonglen-1) && (m!=18))
{printf("\n您输入用户不存在\n\n");
goto top;}
}
dom:
printf("\n");
return (guanli());
}
int shuchu(int aa) //信息输出函数
{
int ef;
ef = aa;
printf("\n");
printf(" 身份证号 挂失 冻结 积分 消费额 等级\n");
for(i = 0;i<18;i++)
{printf("%c",zong[aa].shen[i]);}
if(zong[aa].guashi == 0) printf(" 否 ");
else printf(" 是 ");
if(zong[aa].dongjie == 0) printf(" 否 ");
else printf(" 是 ");
printf(" %d ",zong[aa].jifen);
printf(" %d ",zong[aa].xiaofei);
printf(" %d ",zong[aa].jibie);
return 0;
}
int dongjie() //会员信息冻结函数
{
int jiancha(int aaa);
printf("\n");
fflush(stdin);
if(zonglen == 0)
{printf("\n还未有用户注册\n");
goto dom;}
top:
printf("请输入要冻结身份证号码:");
fflush(stdin);
gets(a);
shenlen = strlen(a);
if(shenlen != 18)
{
printf("\n您输入号码有误,");
goto top;
}
for(i=0;i<18;i++)
{
if((a[i] < 48) || (a[i] > 57))
{printf("\n您输入号码有误,");
goto top;}
}
a[18] = '\0';
for(i=0;i<zonglen;i++)
{
m = 0;
for(j=0;j<18;j++)
{
if(zong[i].shen[j] == a[j])
m = m+1;
}
if(m == 18)
{bc = i;
jiancha(bc);
zong[bc].dongjie = 1;
goto domaa;
}
if(i == (zonglen-1) && (m!=18))
{printf("\n您输入用户不存在\n\n");
goto top;}
}
domaa:
printf("冻结成功,请进行其它操作");
dom:
printf("\n");
return (guanli());
}
int guashi() //会员信息挂失函数
{
int jiancha(int aa);
printf("\n");
fflush(stdin);
if(zonglen == 0)
{printf("\n还未有用户注册\n");
goto dom;}
top:
printf("请输入要挂失身份证号码:");
fflush(stdin);
gets(a);
shenlen = strlen(a);
if(shenlen != 18)
{
printf("\n您输入号码有误,");
goto top;
}
for(i=0;i<18;i++)
{
if((a[i] < 48) || (a[i] > 57))
{printf("\n您输入号码有误,");
goto top;}
}
a[18] = '\0';
for(i=0;i<zonglen;i++)
{
m = 0;
for(j=0;j<18;j++)
{
if(zong[i].shen[j] == a[j])
m = m+1;
}
if(m == 18)
{bc = i;
jiancha(bc);
zong[bc].guashi = 1;
goto domaa;
}
if(i == (zonglen-1) && (m!=18))
{printf("\n您输入用户不存在\n\n");
goto top;}
}
domaa:
printf("挂失成功,请进行其它操作");
dom:
printf("\n");
return (guanli());
}
int zhuxiao() //会员注销函数
{
int jiancha(int aa);
printf("\n");
fflush(stdin);
if(zonglen == 0)
{printf("\n还未有用户注册\n");
goto dom;}
top:
printf("请输入要查询身份证号码:");
fflush(stdin);
gets(a);
shenlen = strlen(a);
if(shenlen != 18)
{
printf("\n您输入号码有误,");
goto top;
}
for(i=0;i<18;i++)
{
if((a[i] < 48) || (a[i] > 57))
{printf("\n您输入号码有误,");
goto top;}
}
a[18] = '\0';
for(i=0;i<zonglen;i++)
{
m = 0;
for(j=0;j<18;j++)
{
if(zong[i].shen[j] == a[j])
m = m+1;
}
if(m == 18)
{bc = i;
jiancha(bc);
for(x=bc;x<zonglen;x++)
{
for(y=0;y<18;y++)
{
zong[x].shen[y] = zong[x+1].shen[y];
}
for(y=0;y<6;y++)
{
zong[x].mima[y] = zong[x+1].mima[y];
}
zong[x].dongjie = zong[x+1].dongjie;
zong[x].guashi = zong[x+1].guashi;
zong[x].jibie = zong[x+1].jibie;
zong[x].jifen = zong[x+1].jifen;
zong[x].xiaofei = zong[x+1].xiaofei;
}
zonglen = zonglen -1;
goto domaa;
}
if(i == (zonglen-1) && (m!=18))
{printf("\n您输入用户不存在\n\n");
goto top;}
}
domaa:
printf("\n注销成功,请进行其它操作\n");
dom:
printf("\n");
return (guanli());
}
int fanhui() //系统内返回上一层菜单函数
{
return (call());
}
int mimashezhi() //密码设置函数
{
printf("\n");
top:
fflush(stdin);
printf("请设置密码(6位密码):");
gets(b);
mimalen = strlen(b);
if(mimalen != 6)
{
printf("\n您输入密码不符合要求,");
goto top;
}
abcd:
printf("\n");
printf("请再次输入密码:");
gets(c);
for (i=0;i<6;i++)
{
if(c[i] != b[i])
{printf("您再次输入密码有误,");
goto abcd;}
}
c[6] = '\0';
for(i=0;i<7;i++)
{
zong[zonglen-1].mima[i] = c[i];
}
return 0;
}
int jiancha(int aaa) //密码检验函数
{
展开阅读全文