购物卡管理系统设计实习报告Word下载.docx
- 文档编号:19147400
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:32
- 大小:339.80KB
购物卡管理系统设计实习报告Word下载.docx
《购物卡管理系统设计实习报告Word下载.docx》由会员分享,可在线阅读,更多相关《购物卡管理系统设计实习报告Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
为了使程序人性化,我为程序设计了比较简单的欢迎界面,没有实际意义,只是表示进入购物系统的提示。
【分析】:
voidmain()
{
printf("
\n\n\n\n\n\n\n\n\n"
);
\t\t*********************购物卡管理系统*********************\n"
\n\n\n\t\t按回车键进入............"
getchar();
menu();
}
这里通过简单的输入输出函数来实现欢迎界面,通过用户输入回车键进入菜单进行操作。
2.主函数
主函数的设计比较简介,只提供了进入菜单、模块选择、退出系统等模块的调用。
其中各功能模块用菜单方式选择,力图做到简洁明了,直观大方。
流程图如下:
【流程图】
函数开头有“文件包含”的预处理命令,所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。
C语言提供了#include命令用来实现“文件包含”的操作。
在本程序中包含了一下头文件:
"
string.h"
、"
ctype.h"
stdio.h"
,方便调用库函数实现某些功能。
在这个程序中,定义了一个结构体数组来存放购物卡用户的各种信息,包括账户卡号、户主姓名、账户余额、账户支出、账户积分,结构体如下:
structcredicard
intnum;
/*账户号码*/
charname[20];
/*户主名称*/
floatsurplus;
/*账户余额*/
charstate[2];
/*账户状态,y:
已启用,n:
未启用*/
intpoint;
/*账户积分*/
charword[8];
/*账户密码*/
intflag;
floataccount;
/*账户余额*/
intintegal;
/*账户支出*/
floatpoint;
}u[100];
同时在各分函数中,定义了int、float、char等一系列变量类型,用来实现函数功能。
主函数比较简单,但是函数的调用很多,所以,在程序的开头就加上了各函数的声明,如下:
voidmenu();
/*主菜单函数模块*/
voidmade();
/*制卡函数模块*/
voidppoint();
/*积分查询模块*/
voidputin();
/*存款函数模块*/
voidlife();
/*发卡函数模块*/
voidbrowse();
/*报表模块*/
voidactivate(intk);
voidcheck(intk);
/*查询全部信息函数模块*/
voidmenu1(intk);
/*次级菜单函数模块*/
实现菜单选择功能,使用的是switch语句,根据用户输入的菜单选项a,调用不同的函数实现各种功能:
3.各功能模块设计
2.1制卡模块
2.2发卡模块
2.3存款模块
2.4消费模块
2.5查询账户相关信息模块
2.7查询全部信息模块
4.积分查询模块设计
5.公共函数设计
返回模块,即在完成一项命令之后,可以选择返回主菜单或者是退出程序。
总结
功夫不负有心人,经过了连续6天的学习,练习,思考和编写,终于完成了这个实习题目的编写,完成了任务,写出了报告。
期间不乏艰难困苦,想要放弃的时候。
但是通过老师耐心的指导,同学热心的帮助,再加上网上查阅的资料和自身的思考,终于攻破了一道道难关,最终写出了程序。
在程序的编写过程中,我对数据的存储和提取方面的知识比较模糊,不能有效运用,导致我多次出错,严重阻碍了我编写的步伐,后来经过对c语言教科书再次深入的学习和同学的指点下,我终于弄清了思路,解决了问题。
再就是各个模块中各种条件的判断上我出了不少错误,百思不得其解,不知道如何限制条件。
最后在老师的指导下,通过网络上一个相似程序的解读,终于解决难题,通过判断来导向不同函数。
这次实习告诉了我,要学会利用资源,学会学习别人的长处,再加以自身的思考,理解才能成功。
因为这是个购物卡系统,本着以人为本的思想,我在如何使系统看上更加美观,人性化上下了不少功夫。
并且实际去观察了超市收银台的系统,进行学习,在剩余的时间对程序进行了改良。
让程序更容易使用和操作理解,让界面更人性化,更简洁明了,方便查询信息。
我相信这是每一个编程人员需要做的。
但是每个程序总有不足之处,我程序的缺点就是数据可能会溢出,且设置的最大存储量是1000,且密码也容易看到,这些都不太好。
总之,在这次实习中,我充分的利用了以前学习的知识,也学到了很多,遇到困难知难而进不退缩,努力思考解决难题,逐个攻破,也巩固了c语言的知识,动手实践能力也增强了,第一次编出了这么完整有用的一个程序,对自己也比较满意,充分培养了自己的动手实践能力。
最后,感谢学校给我这个实习的机会,还有同学老师的帮助,让我能够完成这个实习任务。
源代码:
#include<
stdio.h>
ctype.h>
/*调用字符函数*/
stdlib.h>
conio.h>
/*通用输入输出库*/
string.h>
#defineM1000
voidenter();
voidfetch(intk);
voidchange(intk);
voiddeposit(intk);
voidstat_one(intk);
voidprint_one(intj);
voidpoint();
intsearch(charh[20]);
intn=0;
structcredicard/*定义信用卡结构体*/
intnumber;
charID[20];
charword[8];
floataccount;
intintegal;
floatpoint;
}card[M];
voidmenu()
intv,w1;
do
{
printf("
\n\n\n\n"
\t\t||******************************************************||\n"
\t\t<
主菜单>
\n"
\t\t||
(1)制卡操作||\n"
\t\t||-------------||\n"
\t\t||
(2)激活发卡||\n"
\t\t||(3)帐户登陆||\n"
\t\t||(4)报表操作||\n"
\t\t||(5)查询积分||\n"
\t\t||(6)退出||\n"
\n\n\t\t请选择操作(1--6):
<
>
\b\b"
scanf("
%d"
&
v);
if(v<
1||v>
6)
{
\n\n\t\t**********输入错误!
************"
w1=1;
getchar();
}
elsew1=0;
}
while(w1==1);
switch(v)
inti;
case1:
made();
break;
/*制作*/
case2:
life();
/*发卡*/
case3:
enter();
/*登陆*/
case4:
browse();
/*报表*/
case5:
ppoint(i);
/*查询积分*/
case6:
exit(0);
/*退出*/
\t\t*****************欢迎进入购物卡管理系统************\n"
voidmade()/*制卡操作*/
charh[20];
\n\n\t请输入要申请的8位数号码:
\t\t\t>
\b\b\b\b\b\b\b\b\b"
%s"
h);
if(strlen(h)!
=8)
printf("
\n\n\n\t\t***************输入有误,请重新输入****************\n\n"
continue;
for(i=0;
i<
n;
i++)
if(strcmp(card[i].ID,h)==0)
{
printf("
\n\n\t\t***********该号码已经存在,请重新输入************\n\n"
break;
}
while(((strlen(h))!
=8)||strcmp(card[i].ID,h)==0);
card[n].number=n;
strcpy(card[n].name,"
***"
strcpy(card[n].ID,h);
strcpy(card[n].word,"
000000"
card[n].flag=0;
card[n].account=0.00;
card[n].integal=0;
card[n].point=0;
\n\n\n\t\t********************制卡完成!
**********************\n\n"
print_one(n);
n++;
putin();
voidppoint()
intl;
if(n==0)
\n\n\t\t**********无记录,请先制卡!
***********"
else
\n|----|---------------|----------------|---------|"
\n|NO.|姓名|卡号|point|"
for(l=0;
l<
l++)
\n|%4d|%15s|%16s|%10f"
card[l].number,card[l].name,card[l].ID,card[l].point);
voidprint_one(intj)/*显示消息*/
\n|----|---------------|----------------|----|---------|--------|---------|"
\n|NO.|name|ID|flag|account|integal|point|"
\n|%4d|%15s|%16s|%4d|%9f|%8d|%10f|"
card[j].number,card[j].name,card[j].ID,card[j].flag,card[j].account,card[j].integal,card[j].point);
voidputin()/*存款*/
FILE*fp;
if((fp=fopen("
score.txt"
"
wb"
))==NULL)
\t\tCannotopenthefile\n"
return;
for(i=0;
if(fwrite(&
card[i],sizeof(structcredicard),1,fp)!
=1)
\t\tFilewriteerror\n"
return;
fclose(fp);
\n\n\n\t\t************成功保存!
!
voidlife()/*登陆*/
intk=-1;
\n\n\t\t****************请先制卡*********************\n"
\n\n\t请输入购物卡号码:
k=search(h);
if(k==-1)
\n\n\t\t\t*****************该号码不存在!
****************\n"
else
if(card[k].flag==1)
\n\n\t\t****************该卡已经激活!
*****************\n"
elseactivate(k);
intsearch(charh[20])
inti,k=-1;
if(strcmp(card[i].ID,h)==0)k=i;
return(k);
voidactivate(intk)/*发卡激活操作*/
charm[20],p[8];
intx,w2;
\n\n\t\t是否激活该卡?
(1)是
(2)否\n"
\n\t\t请选择卡号:
scanf("
x);
if(x<
1||x>
2)
{w2=1;
getchar();
elsew2=0;
while(w2==1);
if(x==1)
\n\n\t\t请输入姓名:
\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
m);
strcpy(card[k].name,m);
\n\n\t\t请输入六位数密码:
\b\b\b\b\b\b\b"
p);
strcpy(card[k].word,p);
card[k].flag=1;
\n\n\n\t\t********************激活成功!
print_one(k);
voidenter()/*进入*/
if(card[k].flag=0)
\n\n\t\t************该卡还未激活,请先激活!
************\n"
else
check(k);
voidcheck(intk)/*验证核对*/
intc=0,w3=0;
charp[8];
{
\n\n\t\t*******请输入密码:
if(strcmp(card[k].word,p)!
=0)
\n\n\t\t********密码错误,请重新输入!
**********\n"
c++;
continue;
\n\n\t\t**********密码正确!
***********\n"
w3=1;
menu1(k);
while(w3==0&
&
c<
3);
voidmenu1(intk)/*显示*/
intv,w4;
\n\n\n"
MENU>
\t\t||
(1)查询||\n"
\t\t||------------||\n"
\t\t||
(2)存款||\n"
\t\t||(3)消费||\n"
\t\t||(4)修改密码||\n"
\t\t||---------------------------------||\n"
\t\t||(5)返回主菜单||\n"
\n\n\t\tChoiceyournumber(1--5):
5)
{w4=1;
elsew4=0;
while(w4==1);
stat_one(k);
deposit(k);
fetch(k);
change(k);
menu();
voidstat_one(intk)
\n\n\t\t*************操作成功!
***************"
print_one(k);
voiddeposit(intk)
floata=0.00;
\n\n\t\t请输入存款金额:
\t\t>
\b\b\b\b\b\b\b\b\b\b\b"
%f"
a);
card[k].account+=a;
\n\n\t\t**********存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 购物 管理 系统 设计 实习 报告