您的当前位置:首页正文

客户消费积分管理系统说明书

2022-08-10 来源:榕意旅游网


中北大学

数 据 结 构

课 程 设 计 说 明 书

学生姓名: 学 院: 专 业: 题 目: 成绩 王举然 学 号: 0921010443 软件学院 软件工程 客户消费积分管理系统 尹四清、薛海丽 指导教师

2010年12月20日

1. 设计目的

《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:

 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;  初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;  提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。 2. 设计内容和要求 设计内容:

针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。

1) 2) 3)

采用一定的存储结构进行客户信息的存储; 对客户的信息可以进行修改、删除、添加; 能够根据消费情况进行客户积分的计算;

4) 根据积分情况实行不同程度的打折优惠; 设计要求:

(1) 符合课题要求,实现相应功能; (2) 要求界面友好美观,操作方便易行; (3) 注意程序的实用性、安全性; 3.本设计所采用的数据结构

本系统用到的主要数据结构为数组和文件。

一个数组对应一个客户,里面用3个字符串分别存储着用户的客户号、姓名和消费情况。 然后将数组写入文件,查询时读取文件,提取相应信息。同时编制了删除和查找函数,方便此消费系统的使用。

4.功能模块详细设计 4.1 详细设计思想

在数组中定义3个字符串gukehao、xingming、xiaofei,分别存储客户的顾客号、姓名、消费额。

通过录入函数对3个字符串循环进行赋值,然后根据消费额使用if语句判断其折扣区间,复制完毕后存入文件s_score.txt。

修改函数首先按照用户输入的客户号找到相应存储文件,然后输出相应信息供客户阅览,最后提供修改命令,修改完毕后删除原文件,用新文件替代原文件。

查找函数首先读取文件,然后根据用户输入客户号找到相应文件输出客户信息(顾客号、姓名、消费额、积分、折扣)。

删除函数根据用户输入客户号找到相应文件进行删除。

主函数为用户界面,1-4分别对应录入、修改、查找、删除函数,5为退出。 ①当编码运行成功时候会出现如下图片:

图上为:1、录入,2、修改,3、删除,4、查找,5、退出。 这个时候请输入数字1,即录入客户消费情况,将会出现如下情况:

分别输入客户号,名字,消费情况,系统将会自动记录,以便于修改,删除,查找。 ②当要修改客户消费情况的时候,请先录入客人消费情况,如下:

然后退出将会回到首页,之后再输入数字2意为修改。将会有一下图片:

之后再次输入客人信息和消费情况。

③如果想删除这个消费信息,请在主界面输入数字3,之后出现:

如果你输入客户号码73,则会出现:

即删除了客户信息。

④如果想查找哪个客户的消费情况,则在主页面舒服数字4,会出现:

之后请输入客户号,比如刚刚设置的73号:

即客户的消费信息。 ⑤为退出系统。 4.2核心代码 #include \"stdafx.h\" #include \"stdio.h\" #include \"stdlib.h\" #include \"string.h\" #include \"conio.h\" #include \"ctype.h\" //#include \"mem.h\" #include \"malloc.h\" struct {

char gukehao[8]; char mingzi[20]; float score[6]; }data,info[1000]; int i,j,k=0; float n;

char temp[20],ch; FILE *fp,*fp1;

void luru() {

if((fp=fopen(\"s_score.txt\ {

printf(\"cannot open this file.\\n\"); getch();exit(0); }

for(i=0;i>=0;i++) {

printf(\"Please input gukehao:\"); gets(data.gukehao);

printf(\"please input mingzi:\"); gets(data.mingzi);

printf(\"Please input xiaofei:\"); 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;

fwrite(&data,sizeof(data),1,fp);

printf(\"another?(input n to main/anykey to continue)\\n\"); ch=getch();

if(ch=='n'||ch=='N') break; } fclose(fp); }

void xiugai() {

if((fp=fopen(\"s_score.txt\ {

printf(\"Cannot open this file.\\n\"); exit(0); }

printf(\"\\nPlease input shuru xiugai gukehao:\"); scanf(\"%d\

while((fread(&data,sizeof(data),1,fp))==1) {

j=atoi(data.gukehao); if(j==i) {

printf(\"gukehao:%s\\nmingzi:%s\\n\

printf(\"Please input mingzi:\");

gets(data.mingzi);

printf(\"Please input xiaofei:\");

gets(temp);data.score[0]=atof(temp);

} fwrite(&data,sizeof(data),1,fp1); }

fseek(fp,0L,0); fseek(fp1,0L,0);

while((fread(&data,sizeof(data),1,fp1))==1) {

fwrite(&data,sizeof(data),1,fp); }

fclose(fp); fclose(fp1); }

void chazhao()

{

if((fp=fopen(\"s_score.txt\ {

printf(\"\\nCannot open this file.\\n\"); exit(0); }

printf(\"\\nPlease input gukehao chakan:\"); scanf(\"%d\

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.mingzi,data.score[0],data.score[0],n); } }getch(); }

void shanchu() {

if((fp=fopen(\"s_score.txt\ {

printf(\"\\nopen score.txt was failed!\"); getch(); exit(0); }

printf(\"\\nPlease input gukehao which you want to del:\"); scanf(\"%d\

while((fread(&data,sizeof(data),1,fp))==1) {

j=atoi(data.gukehao); if(j==i) {

printf(\"Anykey will delet it.\\n\"); getch(); continue; }

fwrite(&data,sizeof(data),1,fp1); }

fclose(fp); fclose(fp1);

remove(\"s_score.txt\");

rename(\"temp.txt\ printf(\"Data delet was succesful!\\n\"); printf(\"Anykey will return to main.\"); getch(); }

void main() { while(1) {

system(\"cls\");

printf(\"* ========================================================= * \\n\"); printf(\"* 1>luru 2>xiugai * \\n\"); printf(\"* 3>shanchu 4>chazhao * \\n\"); printf(\"* 5>exit * \\n\");

printf(\"* * \\n\"); printf(\"* --------------------------------------------------------- * \\n\"); printf(\" Please input which you want(1-5):\\n\"); ch=getch(); switch(ch) {

case '1':luru();break; case '2':xiugai(); break; case '3':shanchu(); break; case '4':chazhao(); break; case '5':exit(0); default: continue; } } }

5.课程设计心得及存在问题

1.程序设计没有按照一定的流程来,会导致程序臃肿,可重复利用率低。

2.程序的选择语句运行比较的多,当初是为了程序的安全和便捷,选择了较多的选择,确认步骤,这样一来使得程序中的选择语句比较的多,乱,这个在概要设计中没有充分的理清思路,导致程序的可读性差。

3.这是第一次比较全面的设计一个可执行多种功能的程序的课程设计,暴露出较多的知识点的缺乏,比如文件的打开与保存。

4.程序的局限性较大,具体表现在由于采用数据组保存,则有个上限的问题,而且随着文本的数据的增大,对文本的操作将越来越浪费时间。

因篇幅问题不能全部显示,请点此查看更多更全内容