客户消费积分管理系统.docx
《客户消费积分管理系统.docx》由会员分享,可在线阅读,更多相关《客户消费积分管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
客户消费积分管理系统
中北大学
数据结构
课程设计说明书
学生姓名:
毕青林
学号:
1021010445
学院:
软件学院
专业:
企业信息化软件开发与应用
题目:
客户消费积分管理系统
指导教师
贾美丽
2011年12月20日
1.设计任务概述(包括系统总体框图及功能描述)
按照需求设计功能分类如下:
录入——存入文件
修改——修改信息
查看——读取文件
删除——删除文件
2.本设计所采用的数据结构
本系统用到的主要数据结构为数组和文件。
一个数组对应一个客户,里面用3个字符串分别存储着用户的客户号、姓名和消费情况。
然后将数组写入文件,查询时读取文件,提取相应信息。
同时编制了删除和查找函数,方便此消费系统的使用。
3.功能模块详细设计
3.1详细设计思想
在数组中定义3个字符串gukehao、xingming、xiaofei,分别存储客户的顾客号、姓名、消费额。
通过录入函数对3个字符串循环进行赋值,然后根据消费额使用if语句判断其折扣区间,复制完毕后存入文件s_score.txt。
修改函数首先按照用户输入的客户号找到相应存储文件,然后输出相应信息供客户阅览,最后提供修改命令,修改完毕后删除原文件,用新文件替代原文件。
查找函数首先读取文件,然后根据用户输入客户号找到相应文件输出客户信息(顾客号、姓名、消费额、积分、折扣)。
删除函数根据用户输入客户号找到相应文件进行删除。
主函数为用户界面,1-4分别对应录入、修改、查找、删除函数,5为退出。
3.2核心代码
voidluru()
{
if((fp=fopen("s_score.txt","ab+"))==NULL)
{
printf("cannotopenthisfile.\n");
getch();exit(0);
}
for(i=0;i>=0;i++)/*无限循环直到用户选择停止*/
{
printf("Pleaseinputgukehao:
");
gets(data.gukehao);
printf("pleaseinputmingzi:
");
gets(data.mingzi);
printf("Pleaseinputxiaofei:
");
gets(temp);data.score[0]=atof(temp);/*不能直接赋值,采用转换函数
*/
if(data.score[0]<=5000)/*判断折扣区间*/
n=1;
else
if(data.score[0]<=10000&&data.score[0]>5000)
n=0.95;
else
n=0.9;
data.t=n;
fwrite(&data,sizeof(data),1,fp);/*写入文件*/
printf("another?
(inputntomain/anykeytocontinue)\n");/*循环停止判断
*/
ch=getch();
if(ch=='n'||ch=='N')
break;
}fclose(fp);
}
voidxiugai()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))
==NULL)
{
printf("Cannotopenthisfile.\n");
exit(0);
}
printf("\nPleaseinputshuruxiugaigukehao:
");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)/*读取文件*/
{
j=atoi(data.gukehao);
if(j==i)/*根据输入数值确定客户号*/
{
printf("gukehao:
%s\nmingzi:
%s\n",data.gukehao,data.mingzi);
printf("Pleaseinputmingzi:
");
gets(data.mingzi);
printf("Pleaseinputxiaofei:
");
gets(temp);data.score[0]=atof(temp);
}fwrite(&data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);/*0位移*/
fseek(fp1,0L,0);
while((fread(&data,sizeof(data),1,fp1))==1)
{
fwrite(&data,sizeof(data),1,fp);/*取代原文件*/
}
fclose(fp);
fclose(fp1);
}
voidchazhao()
{
if((fp=fopen("s_score.txt","rb"))==NULL)
{
printf("\nCannotopenthisfile.\n");
exit(0);
}
printf("\nPleaseinputgukehaochakan:
");
scanf("%d",&i);
while(fread(&data,sizeof(data),1,fp)==1)
{
j=atoi(data.gukehao);
if(i==j)
{
printf("gukehao:
%s\nmingzi:
%s\nxiaofei:
%f\njifen:
%f\nzhekou:
%f\n",data.gukehao,data.mingzi,data.score[0],data.score[0],data.t);
}
}getch();
}
voidshanchu()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))
==NULL)
{
printf("\nopenscore.txtwasfailed!
");
getch();
exit(0);
}
printf("\nPleaseinputgukehaowhichyouwanttodel:
");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.gukehao);
if(j==i)
{
printf("Anykeywilldeletit.\n");
getch();
continue;
}
fwrite(&data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove("s_score.txt");/*删除文件*/
rename("temp.txt","s_score.txt");
printf("Datadeletwassuccesful!
\n");
printf("Anykeywillreturntomain.");
getch();
}
3.3程序运行结果
功能选择1~4,5为退出,请输入1—5进行选择。
选择输入“1”进行数据录入。
分别输入顾客号,名字,消费。
按n键返回主界面,按其它键继续录入数据。
分别录入5组数据。
按n返回主界面。
选择“2”进行对顾客数据的修改。
输入要修改的顾客号,进行修改!
输入顾客号“003”进行对此修改。
修改完之后返回到主界面。
选择“3”进行对顾客数据的删除,输入要删除的顾客号进行删除。
输入顾客号“002”对此数据删除。
按任何键对此删除。
成功删除顾客号为“002”的数据。
按任意键返回到主界面。
选择“4”进行对顾客数据的查看,输入要查看的顾客号进行查看。
输入顾客号“004”对此数据查看。
输出顾客号为“004”的信息。
按任意键返回主界面。
在主界面里选择“5”退出。
按任意键退出。
4.课程设计心得、存在问题及解决方法
从拿到题目到完成整个编程,从理论到实践,在这两周里,学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
通过这次的课程设计,让我了解到文件相对于其他数据结构更便于修改和删除。