数据结构课程设计客户积分系统Word格式文档下载.docx

上传人:b****5 文档编号:19139223 上传时间:2023-01-04 格式:DOCX 页数:11 大小:173.35KB
下载 相关 举报
数据结构课程设计客户积分系统Word格式文档下载.docx_第1页
第1页 / 共11页
数据结构课程设计客户积分系统Word格式文档下载.docx_第2页
第2页 / 共11页
数据结构课程设计客户积分系统Word格式文档下载.docx_第3页
第3页 / 共11页
数据结构课程设计客户积分系统Word格式文档下载.docx_第4页
第4页 / 共11页
数据结构课程设计客户积分系统Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据结构课程设计客户积分系统Word格式文档下载.docx

《数据结构课程设计客户积分系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计客户积分系统Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

数据结构课程设计客户积分系统Word格式文档下载.docx

具体规则:

积分值大于2000,享受6折优惠;

积分值大于500小于2000,享受7折优惠;

积分值大于200小于500,享受8折优惠;

积分值大于50小于200,享受9折优惠。

1.3数据结构设计

Customer(客户)定义:

typedefstruct{

charno[10];

//客户编号

charname[5];

floatpoints;

//积分

floatdiscount;

//折扣

}Customer;

顺序表定义:

#definelistinitsize10

#definelistincrement10

typedefstruct

{

Customer*elem;

intlength;

//当前长度

intlistsize;

//当前分配的存储容量

}SqList;

voidInitSq(SqList&

L){//动态分配顺序表存储空间

L.elem=(Customer*)malloc(listinitsize*sizeof(Customer));

if(!

L.elem){

printf("

Notabletoallocatememory.\n"

);

exit

(1);

}

L.length=0;

L.listsize=listinitsize;

}

 

2系统设计

2.1总体设计

2.2各功能模块的设计

2.2.1主函数main()

动态获取表空间,初始化顺序表,打开文件将客户数据加载入表中,进行表操作,操作结束将表数据保存到文件,文件关闭。

2.2.2客户信息添加

遍历当前顺序表,若待添加的用户编号已存在,则返回用户已存在的提示信息;

若待添加的用户不存在,则将该客户信息添加到顺序表最后,并将顺序表长度加1。

2.2.3客户信息删除

遍历当前顺序表,若要删除的用户标号不存在,则返回提示信息;

否则提示用户是否确定删除,确定即删除。

删除操作即将待删除记录的后面记录依次向前移动1步。

2.2.4客户信息更新

遍历当前顺序表,若待更新的用户编号不存在,则返回用户不存在的提示信息;

若待添加的用户存在,则提示输入新的信息。

2.2.5查找客户信息

2.2.6显示客户信息

遍历顺序表,返回客户信息

2.2.7消费积分清零

遍历顺序表,将积分与折扣赋值为0;

2.2.8积分计算

intpoints_cal(floatconsume)//积分计算规则{

if(consume<

=0)cons=0;

elseif(consume<

=500)cons=consume/10;

elseif(consume<

=2000)cons=(consume-500)/8+50;

=5000)cons=(consume-2000)/6+237;

elsecons=(consume-5000)/5+737;

returncons;

2.2.9折扣计算

doubleDiscount(intdiscount)//折扣的计算规则{

if(m<

=0)discount=10;

elseif(m<

=50)discount=10;

elseif(m<

=200)discount=9;

=500)discount=8;

=2000)discount=7;

elsediscount=6;

returndiscount;

3系统调试

1.运行客户消费积分管理系统,主菜单如下:

2.调用添加客户模块,添加客户信息

3.测试删除模块

4.测试更新模块

其他模块测试类似。

4总结

本次课程设计,是我发现了很多不足,比如:

1.软件设计阶段考虑不充分,导致编码时随机性大,方向性不明确;

2.存储结构的选择分析不够充分,没有考虑其它可行的存储实现(只用了动态数组);

3.设计的系统安全性方面未能达到极高级别(后台文件可以随意更改);

此外,在系统调试阶段,我发还现了很多细节方面的不足,使我认识到设计一个系统并非想象中那么简单,而是需要考虑各个方面结果的。

通过本次课程设计,我加深了对顺序存储结构的理解,更加熟悉了顺序表的基本操作,还有文件读写方面的知识得到了回顾。

通过客户积分系统软件的设计,我基本熟悉了一般的软件开发流程,认识到前期设计的重要性与盲目编代码错误观点。

总的来说,本次课程设计获益匪浅,既是对书本所学知识的回顾,更是对课本所学知识的运用。

5参考文献

[1]严蔚敏,吴伟民.数据结构.[M]清华大学出版社,2005.

[2]何钦铭,颜晖.C语言程序设计.[M]高等教育出版社,2008.

附录

源代码:

#include<

stdio.h>

#include<

stdlib.h>

string.h>

//客户编号charname[5];

//积分floatdiscount;

//折扣

#definelistinitsize10#definelistincrement10

typedefstruct{

//当前长度intlistsize;

//当前分配的存储容量

L){

L.elem=(Customer*)malloc(listinitsize*sizeof(Customer));

//动态分配顺序表存储空间

if(!

exit

(1);

L.length=0;

intmain(void){

voidAdd(SqList&

L);

voidShow(SqList&

voidDelete(SqList&

voidupdate(SqList&

voidQuery(SqList&

voidReset(SqList&

SqListL;

InitSq(L);

charch;

Customer*newbase;

FILE*fp;

if((fp=fopen("

1.txt"

"

r"

))==NULL){

Fileopenerror!

\n"

exit(0);

Customercustomer;

intc=0,f;

ch=fgetc(fp);

rewind(fp);

if(ch==EOF)printf("

文件为空!

else{

fscanf(fp,"

%s%s%f%f"

customer.no,customer.name,&

customer.discount,&

customer.points);

while(!

feof(fp)){

L.elem[c]=customer;

c++;

L.length++;

if(L.length>

=L.listsize){

newbase=(Customer*)realloc(L.elem,(L.listsize+listincrement)*sizeof(Customer));

if(!

newbase){

L.elem=newbase;

L.listsize+=listincrement;

}}

printf("

输入你要选择的操作:

\n\t1-添加顾客信息\n\t2-删除顾客信息\n\t3-更新顾客信息\n\t4-查找顾客信息\n\t5-显示所有顾客信息\n\t6-清零所有客户的消费积分\n\t0-退出\n"

*****************************\n请选择操作:

"

scanf("

%d"

&

f);

while(f!

=0){

switch(f){

case1:

Add(L);

break;

case2:

Delete(L);

case3:

update(L);

case4:

Query(L);

case5:

Show(L);

case6:

Reset(L);

default:

请输入正确的操作!

break;

if(fclose(fp)){

Cannotclosethefileerror!

exit(0);

w+"

for(inti=0;

i<

L.length;

i++)

fprintf(fp,"

%s%s%.1f%.0f\n"

L.elem[i].no,L.elem[i].name,L.elem[i].discount,L.elem[i].points);

if(fclose(fp)){

return0;

voidAdd(SqList&

intz=L.length;

Customercustomer;

请输入客户信息:

编号:

scanf("

%s"

customer.no);

for(inti=0;

L.length;

if(strcmp(L.elem[i].no,customer.no)==0){

printf("

编号已存在,请重新输入:

i=0;

姓名:

customer.name);

customer.discount=10;

customer.points=0;

L.elem[z]=customer;

L.length++;

L){charno3[10];

inti;

输入要查询的顾客编号:

no3);

for(i=0;

if(strcmp(L.elem[i].no,no3)==0){

break;

if(i>

=L.length)printf("

没有该顾客信息!

charno1[10],xx;

intcc=1;

输入你要删除的顾客的编号:

no1);

您确定要删除%s号客户的信息吗?

\n确定-Y,取消-N:

xx);

if(xx=='

Y'

||xx=='

y'

){

i++){

if(strcmp(L.elem[i].no,no1)==0){

for(intj=i;

j<

j++)L.elem[j]=L.elem[j+1];

L.length--;

顾客信息删除完毕!

cc=0;

if(cc==0)break;

=L.length)printf("

您所要删除的顾客信息不存在或已删除!

elseif(xx=='

N'

n'

)printf("

您的删除操作已取消!

intpoints_cal(floatconsume){//积分计算规则

intss=0;

=0)ss=0;

=500)ss=consume/10;

=2000)ss=(consume-500)/8+50;

=5000)ss=(consume-2000)/6+237;

elsess=(consume-5000)/5+737;

returnss;

doubleDiscount(intm){//折扣的计算规则

doubleee;

=50)ee=10;

elseif(m<

=200)ee=9;

=500)ee=8;

=2000)ee=7;

elseee=6;

returnee;

voidupdate(SqList&

charno2[10];

floatsum;

inti,x,y;

输入您所要更新顾客的编号:

no2);

for(i=0;

if(strcmp(L.elem[i].no,no2)==0)break;

顾客信息不存在。

else{

选择你要的操作:

1-增加积分,2-减少积分:

x);

if(x==1){printf("

输入本次一次性消费的金额:

%f"

sum);

L.elem[i].points+=points_cal(sum);

L.elem[i].discount=Discount(L.elem[i].points);

else{

printf("

输入本次使用的积分值:

y);

L.elem[i].points-=y;

L.elem[i].discount=Discount(L.elem[i].points);

顾客更新后的信息:

L){//清零所有客户的积分

L.elem[i].points=0;

L.elem[i].discount=10;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1