1、问题描述:针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。基本要求:1.采用一定的存储结构进行客户信息的存储;2.对客户的信息可以进行修改、删除、添加;3.能够根据消费情况进行客户积分的计算;4.根据积分情况实行不同程度的打折优惠。3本设计所采用的数据结构本系统用到的主要数据结构为数组和文件。一个数组对应一个客户,里面用3个字符串分别存储着用户的客户号、姓名和消费情况。然后将数组写入文件,查询时读取文件,提取相应信息。4功能模块详细设计4.1 详细设计思想在数组中定义3个字符串gukehao、xingming、xiaofei,分别存储客户的顾客号、姓名、消费额
2、。通过录入函数对3个字符串循环进行赋值,然后根据消费额使用if语句判断其折扣区间,复制完毕后存入文件s_score.txt。修改函数首先按照用户输入的客户号找到相应存储文件,然后输出相应信息供客户阅览,最后提供修改命令,修改完毕后删除原文件,用新文件替代原文件。查找函数首先读取文件,然后根据用户输入客户号找到相应文件输出客户信息(顾客号、姓名、消费额、积分、折扣)。删除函数根据用户输入客户号找到相应文件进行删除。主函数为用户界面,1-4分别对应录入、修改、查找、删除函数,5为退出。4.2 源代码#include stdio.hstdlib.hstring.hconio.hmem.hctype.
3、halloc.hstruct score char gukehao8; /*定义3个存储客户信息的字符串*/ char mingzi20; float score6;data,info1000; /*定义数组*/ int i,j,k=0; float n; /*n为折扣值*/ char temp20,ch; FILE *fp,*fp1;void luru() if(fp=fopen(s_score.txt,ab+)=NULL) printf(cannot open this file.n); getch();exit(0); for(i=0;i=0;i+) /*无限循环知道用户选择停止*/Pl
4、ease input gukehao: gets(data.gukehao);please input mingzi: gets(data.mingzi);Please input xiaofei: gets(temp);data.score0=atof(temp); /*不能直接赋值,采用转换函数*/ if(data.score05000) n=0.95; n=0.9; fwrite(&data,sizeof(data),1,fp); /*写入文件*/another?(input n to main/anykey to continue)n /*循环停止判断*/ ch=getch(); if
5、(ch=n|ch=N) break; fclose(fp);void xiugai()rb+)=NULL|(fp1=fopen(temp.txtwb+)=NULL)Cannot open this file.n exit(0);nPlease input shuru xiugai gukehao: scanf(%d,&i); getchar(); while(fread(&data,sizeof(data),1,fp)=1) /*读取文件*/ j=atoi(data.gukehao); if(j=i) /*根据输入数值确定客户号*/gukehao:%snmingzi:%sn,data.guke
6、hao,data.mingzi);Please input mingzi: fwrite(&data,sizeof(data),1,fp1); fseek(fp,0L,0); /*0位移*/ fseek(fp1,0L,0);data,sizeof(data),1,fp1)=1) /*取代原文件*/ fclose(fp); fclose(fp1);void chazhao()rbnCannot open this file.nnPlease input gukehao chakan: while(fread(&data,sizeof(data),1,fp)=1) if(i=j)%snxiaofe
7、i:%fnjifen:%fnzhekou:%fn,data.gukehao,data.mingzi,data.score0,data.score0,n); getch();void shanchu()if(fp=fopen(nopen score.txt was failed!nPlease input gukehao which you want to del:getchar();data,sizeof(data),1,fp)=1) if(j=i)Anykey will delet it.n continue; remove( /*删除文件*/ rename(Data delet was succesful!nAnykey will return to main.main()while(1) clrscr(); /*清屏*/*=* n* 1luru 2xiugai * n* 3shanchu 4chazhao * n* 5exit * n* * n* -* n Please input which you want(1-5): switch(ch) case 1:luru();break;2xiugai();3shanchu();4chazhao();5 default:5.结论 通过对系统的设计,发现文件相对于其他数据结构更便于修改和删除。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1