资源描述
目录
一、系统开发背景 1
二、系统分析和设计 1
(一) 系统功效要求 1
(二) 系统模块结构设计 1
三、系统设计和实现 2
(一) 增添消费者信息:void zentian() 2
(二) 删除消费者信息:void shanchu() 3
(三) 修改消费者信息:void xiugai() 5
(四) 查看消费者信息:void chakan() 8
(五) 依据积分计算打折后消费总价格:void jisuan() 10
(六) 删除运行过信息并返回第一页主菜单:void qingping() 13
(七) 退出程序: 14
四、系统测试 15
(一) 测试( void zentian()//增添消费者信息 )函数: 15
(二) 测试( void shanchu()//删除消费者信息)函数: 17
(三) 测试( void xiugai()//修改消费者信息 )函数: 18
(四) 测试( void chakan()//查看消费者信息 )函数: 19
(五) 测试( void jisuan()//依据积分计算打折后消费总价格 )函数: 21
(六) 测试( void qingping()//删除运行过信息并返回第一页主菜单 )函数: 22
(七) 测试退出函数: 23
五、总结 23
六、附件 24
(一)(全部代码) 24
(二)(部分测试图) 33
用户消费积分管理系统
一、系统开发背景
为了更便捷科学管理用户信息和为用户服务,跟着现代化步伐。所以设计开发了此用户消费积分管理系统来愈加好为用户服务。
二、系统分析和设计
(一) 系统功效要求
针对用户消费情况,进行用户管理,依据用户消费积分对用户实施不一样程度打折优惠。
1、 对用户信息能够进行修改、删除、添加和查看;
2、 能够依据消费情况进行用户积分计算;
3、 依据积分情况实施不一样程度打折优惠;
(二) 系统模块结构设计
经过对系统功效分析,用户消费积分管理系统功效图1所表示。
图1 用户消费积分管理系统功效图
经过上图功效分析,把整个系统划分为7个模块:
1、 增添消费者信息,该模块关键实现:对新用户添加(包含对新用户全部信息添加)。借助函数是void zentian()来实现;
2、 删除消费者信息,该模块关键实现:对保留全部用户中任意一个用户删除。借助函数是void shanchu()来实现;
3、 修改消费者信息,该模块关键实现:(1)、对任意一个用户全部信息修改。(2)、能够对任意一个用户信息中用户编号、用户姓名、用户身份证号码、积分、消费额中任意一个信息修改。借助函数是void xiugai()来实现;
4、 查看消费者信息,该模块关键实现:(1)、全部用户基础信息(用户编号、用户姓名、用户身份证号码、积分、消费额)输出。(2)、某个用户基础信息(用户编号、用户姓名、用户身份证号码、积分、消费额)输出。借助函数是void chakan()来实现;
5、 依据积分计算打折后消费总价格,该模块关键实现:依据用户所对应积分计算出打折优惠和打折后消费额。借助函数是void jisuan()来实现;
6、 删除运行过信息并返回第一页主菜单,该模块关键实现:运行内容太多时此功效能够简化运行页面。借助函数是void qingping()来实现;
7、 退出程序,该模块关键实现:退出该运行程序。
三、系统设计和实现
(一) 增添消费者信息:void zentian()
分析:首先输出主菜单,然后依据提醒输入要添加几条新用户信息,然后输入用户全部信息即可。步骤图图2所表示。
图2:void zentian()步骤图
该模块具体代码以下所表示:
void zentian()//增添消费者信息
{
int i,k;
printf("\n");
printf(" 请输入您要添加几条新信息:");
scanf("%d",&k);
printf("\n");
printf(" 请输入要添加用户信息(编号最小为10006),回车后信息将自动保留:\n\n");
printf("用户编号 用户名 身份证号(18位) 积分 消费额\n\n");
for(i=5;i<5+k;i++)
{
scanf("%d %s %s %lf %lf",&m[i].kehubh,
&m[i].name,&m[i].shengfzh,&m[i].jifen,&m[i].xiaofe);
printf("\n");
}
printf(" 保留成功!请到查看消费者信息中查看!\n\n");
}
(二) 删除消费者信息:void shanchu()
分析:首先输出主菜单,然后输入要删除用户编号,然后回车即可删除该用户全部信息。步骤图图3所表示。
图3:void shanchu()步骤图
该模块具体代码以下所表示:
void shanchu()//删除消费者信息
{
int q,b,i;
printf("\n");
printf(" 请输入您所要删除用户编号:");
scanf("%d",&b);
printf("\n");
printf(" 删除成功!\n\n");
printf(" 删除后剩下用户信息为:\n\n");
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
for(i=0;i<5+k;i++)
{
if(b!=m[i].kehubh)
{
q=i;
printf(" %d %s %s %6.2lf %6.2lf\n",m[q].kehubh,
m[q].name,m[q].shengfzh,m[q].jifen,m[q].xiaofe);
}
}
}
(三) 修改消费者信息:void xiugai()
分析:首先输出主菜单,然后选择要修改某个用户全部信息还是某条信息。若修改全部信息则重新输入该用户全部信息即可,若修改某处则选择要修改哪里然后重新输入即可。步骤图图4所表示。
图4:void xiugai()步骤图
该模块具体代码以下所表示:
void xiugai()//修改消费者信息
{
int i,a,b,q,p;
double j;
printf("\n");
printf(" & & & & & & & & & & & & & & & & & & & &\n");
printf(" & &\n");
printf(" & 修改某处信息,请选择1 &\n");
printf(" & &\n");
printf(" & 修改全部信息,请选择2 &\n");
printf(" & &\n");
printf(" & & & & & & & & & & & & & & & & & & & &\n\n");
printf(" 请输入您选择:");
scanf("%d",&p);
if(p==1)
{
printf("\n");
printf(" 请输入要修改用户信息编号:");
scanf("%d",&a);
for(i=0;i<5+k;i++)
if(a==m[i].kehubh)
{
printf("\n");
printf(" & & & & & & & & & & & & & & & & & & & &\n");
printf(" # #\n");
printf(" # 修改用户编号,请选择1 #\n");
printf(" # #\n");
printf(" # 修改用户名,请选择2 #\n");
printf(" # #\n");
printf(" # 修改用户身份证号,请选择3 #\n");
printf(" # #\n");
printf(" # 修改用户积分,请选择4 #\n");
printf(" # #\n");
printf(" # 修改用户消费额,请选择5 #\n");
printf(" # #\n");
printf(" & & & & & & & & & & & & & & & & & & & &\n\n");
printf(" 请输入您选择:");
scanf("%d",&b);
if(b==1)
{
printf("\n");
printf(" 原用户编号为%d\n\n",m[i].kehubh);
printf(" 请输入新用户编号为:");
scanf("%d",&q);
m[i].kehubh=q;
printf("\n");
printf(" 修改成功!\n\n");
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
printf(" %d %s %s %6.2lf %6.2lf\n",m[i].kehubh,
m[i].name,m[i].shengfzh,m[i].jifen,m[i].xiaofe);
}
if(b==2)
{
printf("\n");
printf(" 原用户姓名%s\n",m[i].name);
printf(" 请输入新用户姓名为:");
scanf("%s",&m[i].name);
printf("\n");
printf(" 修改成功!\n\n");
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
printf(" %d %s %s %6.2lf %6.2lf\n",m[i].kehubh,
m[i].name,m[i].shengfzh,m[i].jifen,m[i].xiaofe);
}
if(b==3)
{
printf("\n");
printf(" 原用户身份证号%s\n",m[i].shengfzh);
printf(" 请输入新用户身份证号为:");
scanf("%s",&m[i].shengfzh);
printf("\n");
printf(" 修改成功!\n\n");
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
printf(" %d %s %s %6.2lf %6.2lf\n",m[i].kehubh,
m[i].name,m[i].shengfzh,m[i].jifen,m[i].xiaofe);
}
if(b==4)
{
printf("\n");
printf(" 原用户积分%6.2lf\n",m[i].jifen);
printf(" 请输入新用户积分为:");
scanf("%lf",&j);
m[i].jifen=j;
printf("\n");
printf(" 修改成功!\n\n");
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
printf(" %d %s %s %6.2lf %6.2lf\n",m[i].kehubh,
m[i].name,m[i].shengfzh,m[i].jifen,m[i].xiaofe);
}
if(b==5)
{
printf("\n");
printf(" 原用户消费额%6.2lf\n",m[i].xiaofe);
printf(" 请输入新用户消费额为:");
scanf("%lf",&j);
m[i].xiaofe=j;
printf("\n");
printf(" 修改成功!\n\n");
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
printf(" %d %s %s %6.2lf %6.2lf\n",m[i].kehubh,
m[i].name,m[i].shengfzh,m[i].jifen,m[i].xiaofe);
}
}
}
if(p==2)
{
printf("\n");
printf(" 请输入要修改用户信息编号:");
scanf("%d",&a);
for(i=0;i<5+k;i++)
if(a==m[i].kehubh)
{
printf("\n");
printf(" 原用户信息为:\n");
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
printf(" %d %s %s %6.2lf %6.2lf\n",m[i].kehubh,
m[i].name,m[i].shengfzh,m[i].jifen,m[i].xiaofe);
printf(" (输成如上形式,中间用空格,能够是多个空格)\n");
printf(" 请输入修改后用户信息为:\n\n");
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
scanf("%d %s %s %lf %lf",&m[i].kehubh,
&m[i].name,&m[i].shengfzh,&m[i].jifen,&m[i].xiaofe);
printf("\n");
printf(" 修改成功!\n\n");
}
}
}
(四) 查看消费者信息:void chakan()
分析:首先输出主菜单,然后选择查看全部还是查看某一个。若查看全部则输出全部用户信息,若查看某个用户信息则输入要查看用户编号即可输出该用户具体信息。步骤图图5所表示。
图5:void chakan()步骤图
该模块具体代码以下所表示:
void chakan()//查看消费者信息
{
int a,b,p,i;
printf("\n");
printf(" & & & & & & & & & & & & & & & & & & & &\n");
printf(" & &\n");
printf(" & 要查看全部用户信息请选择1 &\n");
printf(" & &\n");
printf(" & 要查看某个用户信息请选择2 &\n");
printf(" & &\n");
printf(" & & & & & & & & & & & & & & & & & & & &\n\n");
printf(" 请输入您选择:");
scanf("%d",&a);
if (a==1)
{
printf("\n");
printf(" 您所查看全部用户信息为(有0是需用户添加):\n\n");
printf("用户编号 用户名 身份证号 积分 消费额\n");
for(i=0;i<5+k;i++)
printf(" %d %s %s %6.2lf %6.2lf\n",m[i].kehubh,
m[i].name,m[i].shengfzh,m[i].jifen,m[i].xiaofe);
}
if(a==2)
{
printf("\n");
printf(" 请输入所查用户编号:");
scanf("%d",&b);
for(i=0;i<5+k;i++)
{
if(b==m[i].kehubh)
p=i;
}
if(p>=0&&p<5+k)
{
printf("\n");
printf(" 您所要查看%d用户具体信息为:\n\n",m[p].kehubh);
printf("用户编号 用户名 身份证号 积分 消费额\n\n");
printf(" %d %s %s %6.2lf %6.2lf\n",m[p].kehubh,
m[p].name,m[p].shengfzh,m[p].jifen,m[p].xiaofe);
}
else
printf(" 对不起,您输入有误!\n\n");
}
}
(五) 依据积分计算打折后消费总价格:void jisuan()
分析:首先输出主菜单,然后输入要计算积分是多少用户,输入后即可计算出该用户打折优惠信息并输出该用户具体信息。步骤图图6所。
图6:void jisuan()步骤图
该模块具体代码以下所表示:
void jisuan()//依据积分计算打折后消费总价格
{
int i,p;
double sum,a;
printf("\n");
printf(" 请输入积分:");
scanf("%lf",&a);
if(a<=30.00)
{
for(i=0;i<5+k;i++)
if(a==m[i].jifen)
{
p=i;
}
printf("\n");
printf(" <<该用户打折信息为>>:\n");
printf(" 用户编号:%d\n",m[p].kehubh);
printf(" 客 户 名:%s\n",m[p].name);
printf(" 身份证号:%s\n",m[p].shengfzh);
printf(" 积 分:%6.2lf\n",m[p].jifen);
printf(" 消 费 额:%6.2lf\n",m[p].xiaofe);
printf(" 打折优惠:9.8折\n");
sum=0.98*m[p].xiaofe;
printf(" 打折后消费额:%6.2lf元\n",sum);
}
else
if(a<=40.00)
{
for(i=0;i<5+k;i++)
if(a==m[i].jifen)
{
p=i;
}
printf("\n");
printf(" <<该用户打折信息为>>:\n");
printf(" 用户编号:%d\n",m[p].kehubh);
printf(" 客 户 名:%s\n",m[p].name);
printf(" 身份证号:%s\n",m[p].shengfzh);
printf(" 积 分:%6.2lf\n",m[p].jifen);
printf(" 消 费 额:%6.2lf\n",m[p].xiaofe);
printf(" 打折优惠:9.5折\n");
sum=0.95*m[p].xiaofe;
printf(" 打折后消费额:%6.2lf元\n",sum);
}
else
if(a<=60.00)
{
for(i=0;i<5+k;i++)
if(a==m[i].jifen)
{
p=i;
}
printf("\n");
printf(" <<该用户打折信息为>>:\n");
printf(" 用户编号:%d\n",m[p].kehubh);
printf(" 客 户 名:%s\n",m[p].name);
printf(" 身份证号:%s\n",m[p].shengfzh);
printf(" 积 分:%6.2lf\n",m[p].jifen);
printf(" 消 费 额:%6.2lf\n",m[p].xiaofe);
printf(" 打折优惠:9.0折\n");
sum=0.90*m[p].xiaofe;
printf(" 打折后消费额:%6.2lf元\n",sum);
}
else
if(a<=80.00)
{
for(i=0;i<5+k;i++)
if(a==m[i].jifen)
{
p=i;
}
printf("\n");
printf(" <<该用户打折信息为>>:\n");
printf(" 用户编号:%d\n",m[p].kehubh);
printf(" 客 户 名:%s\n",m[p].name);
printf(" 身份证号:%s\n",m[p].shengfzh);
printf(" 积 分:%6.2lf\n",m[p].jifen);
printf(" 消 费 额:%6.2lf\n",m[p].xiaofe);
printf(" 打折优惠:8.5折\n");
sum=0.85*m[p].xiaofe;
printf(" 打折后消费额:%6.2lf元\n",sum);
}
else
{
for(i=0;i<5+k;i++)
if(a==m[i].jifen)
{
p=i;
}
printf("\n");
printf(" <<该用户打折信息为>>:\n");
printf(" 用户编号:%d\n",m[p].kehubh);
printf(" 客 户 名:%s\n",m[p].name);
printf(" 身份证号:%s\n",m[p].shengfzh);
printf(" 积 分:%6.2lf\n",m[p].jifen);
printf(" 消 费 额:%6.2lf\n",m[p].xiaofe);
printf(" 打折优惠:8.0折\n");
sum=0.80*m[p].xiaofe;
printf(" 打折后消费额:%6.2lf元\n",sum);
}
}
(六) 删除运行过信息并返回第一页主菜单:void qingping()
分析:首先输出主菜单,然后输入要运行序号即可删除运行过得信息并返回首页主菜单。步骤图图7所表示。
图7:void qingping()步骤图
该模块具体代码以下所表示:
要有#include <stdlib.h>
void qingping()//删除运行过信息并返回第一页主菜单
{
system("cls");
}
(七) 退出程序:
分析:首先输出主菜单,然后输入要运行序号即可退出该程序。步骤图图8所表示。
图8:退出程序步骤图
该模块具体代码以下所表示:
scanf("%d",&j);
switch(j)
case 0: break;
四、系统测试
测试该函数使用测试方法,测试具体步骤,测试用例选择,测试结果。
(一) 测试( void zentian()//增添消费者信息 )函数:
(二) 测试( void shanchu()//删除消费者信息)函数:
(三) 测试( void xiugai()//修改消费者信息 )函数:
注:其它修改请在附件中查看
(四) 测试( void chakan()//查看消费者信息 )函数:
(五) 测试( void jisuan()//依据积分计算打折后消费总价格 )函数:
(六) 测试( void qingping()//删除运行过信息并返回第一页主菜单 )函数:
(七) 测试退出函数:
五、总结
系统完成了对用户信息增添、删除、修改、查看、依据积分情况实施不一样程度打折优惠、删除运行过信息并返回第一页主菜单和退出功效。
系统有(1)、当删除某个用户信息后,在主菜单用户信息中查看刚刚删除用户信息时信息还在却无法删除,而且不能一次性删除多个用户信息,要删除多个用户信息时必需运行该删除功效数次,比较麻烦而且不方便。(2)、此系统没有用到文件、链表和指针。(3)、当用户信息中积分有相同时,计算并输出用户信息只有一个而不能全部显示出来。以上三点不足。
经过对用户消费积分管理系统前期了解和自己构思到最终设计成此系统全部功效,也碰到了很多阻碍,但最终还是一步一步修改好了。不过我从中也学到了好多,尤其对一维数组还有for循环和if语句使用和定义有了深入提升。对结构体使用和选择结构也有了深入提升。
六、附件
(一)(全部代码)
#include <stdio.h>
#include <stdlib.h>
int k;
struct xiaofxx//结构体(消费信息)
{
int kehubh; //用户编号
char name[12]; //用户名
char shengfzh[19]; //身份证号
double jifen; //积分
double xiaofe; //消费额
}xiaofxx[1000];
struct xiaofxx m[100]={
{10001,"xiao hua","6224266",30.0,300.0},
{10002,"xiaoming","6225380",40.0,400.0},
{10003,"wangjing","6224241",60.0,600.0},
{10004,"huanhuan","6224263",80.0,800.0},
{10005,"lu lu","6224262",100.0,1000.0}};//数组初始化
void main()//主函数
{ void zentian();
void shanchu();
void xiugai();
void chakan();
void jisuan();
void qingping();
int j=1;
while(j)
{
printf("\n\n");
printf(" <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>\n");
printf(" <> <>\n");
printf(" <> 用户消费积分管理系统 <>\n");
printf(" <> <>\n");
printf(" <> <>\n");
printf(" <> 增添消费者信息,请选择1 <>\n");
printf(" <> <>\n");
printf(" <> 删除消费者信息,请选择2 <>\n");
printf(" <> <>\n");
printf(" <> 修改消费者信息,请选择3 <>\n");
printf(" <> <>\n");
printf(" <> 查看消费者信息,请选择4 <>\n");
printf(" <> <>\n");
printf(" <> 依据积分计算打折后消费总价格,请选择5 <>\n");
printf(" <> <>\n");
printf(" <> 删除运行过信息并返回第一页主菜单,请选择6 <>\n");
printf(" <> <>\n");
printf(" <> 退出,请选择0 <>\n");
printf(" <> <>\n");
printf(" <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>\n\n");
printf(" 温馨提醒:请选择所要运行序号:");
scanf("%d",&j);
printf("\n");
switch(j)
{
case 0: break;
case 1: zentian() ; break;
case 2: shanchu() ; break;
case 3: xiugai() ; break;
case 4: chakan() ; break;
case 5: jisuan() ; break;
case 6: qingping(); break;
default:printf(" 输入有误哦!请重新输入!\n");
}
}
}
void zentian()//增添消费者信息
{
int i;
printf("\n");
printf(" 请输入您要添加几条新信息:
展开阅读全文