客户消费积分管理系统 课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构

课程设计报告设计题目:

专业软件工程

班级0902班

学生周雷

学号********

指导教师张雪

21.客户消费积分管理系统

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

1.采用一定存储结构进行客户信息存储。

2.对客户信息可以修改、删除、添加。

3.能够根据消费情况进行客户积分计算。

4.根据积分情况实行不同程度的打折优惠。

1.本程序对于客户消费积分管理系统利用线性表的链表存储方式,使用结构体指针将每一个用户联系起来。使用结构体指针的链表动态链接形式将便于客户的封装,节省空间,便于插入和删除。

2.程序中设计了①添加用户②查找用户③修改用户④删除用户⑤统计客户数量的功能。

3.①添加用户:函数void Getelem (cnode *head);添加用户中,采用结构体将每个用户的信息封装,其中包括用户姓名name、用户省份证号ID、用户消费金额consume、积分integer 的信息。输入一个客户信息后再开辟新的节点连接。开一个空间加一个用户可以节省空间,解决实现开辟的空间不够的问题。

4.②void Search(cnode *head,char ID[]);查找用户利用指针一个一个用户比对信息知道,直到找到正确信息并显示。

5③void Amend(cnode *head,char ID[]);查找并显示然后修改。

6④void Delete(cnode *head,char ID[]);查找显示并删除。

7⑤void Showall(cnode *head);遍历链表并显示客户。

8⑥void count(cnode *head);遍历统计客户数量显示

9⑦double display_discount(double integer);计算客户折扣,每次显示用户信息调用一次保证客户为最新打折信息。

主函数

主菜单①添加用户②查找用户③修改用户④删除用户⑤统计客户数量⑥退出。各个函数通过调用头结点连接。

4.功能模块详细设计、运行结果。

源代码:

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

typedef struct cnode{

char name[20];

char ID[20];

double consume;

double integer;

struct cnode *next;}cnode;

void Initstack(cnode * &head)/*初始化链表*/{

head= (cnode*)malloc(sizeof(cnode)); //开辟节点空间

head->next=NULL;}

void Getelem (cnode *head);

void Search(cnode *head,char ID[]);

void Amend(cnode *head,char ID[]);

void Delete(cnode *head,char ID[]);

void Showall(cnode *head);

void count(cnode *head);

double display_discount(double integer);

void main(){

cnode *head;

int choice;

char y[20];

Initstack(head);

do{

printf("\n");

printf(" 客户消费积分管理系统\n\n");

printf(" ****************************");

printf("\n * *\n");

printf("\n * 主菜单*\n");

printf("\n * 1 添加客户*\n");

printf("\n * 2 查找客户*\n");

printf("\n * 3 修改客户*\n");

printf("\n * 4 删除客户*\n");

printf("\n * 5 显示客户*\n");

printf("\n * 6 统计客户*\n");

printf("\n * 7 退出*\n");

printf("\n * *\n");

printf(" ***************************");

printf("\n 请输入您的选择(1,2,3,4,5,6):");

scanf("%d",&choice);

if(choice==1){

Getelem(head); } //添加

else if(choice==2){

printf("\n 请输入您查找客户的身份证号:");

scanf("%s",y);

while(strlen(y)!=18){

printf("身份证号码位数有误请重新输入(18位):");

scanf("%s",y);}

Search(head,y); } //查找

else if(choice==3){

printf("\n 请输入您想修改客户的身份证号:");

scanf("%s",y);

while(strlen(y)!=18){

printf("身份证号码位数有误请重新输入(18位):");

scanf("%s",y);}

Amend(head,y); } //修改

else if(choice==4){

printf("\n");

printf(" 请输入你想要删除的客户的身份证号:");

scanf("%s",y);

Delete(head,y); }//删除

else if(choice==5){

printf("\n");

Showall(head); } //显示

else if(choice==6){

printf("\n");

count(head); } //统计

else if(choice==7)

exit(1);}while(choice<=7);}

void Getelem (cnode *head) { //添加客户函数以头节点为参数

cnode *p;

double y;

p=(cnode*)malloc(sizeof(cnode));/*申请空的节点空间*/

printf("请输入姓名:");

scanf("%s",&p->name);

printf("请输入身份证号(18位):");

scanf("%s",&p->ID);

while(strlen(p->ID)!=18){

printf("身份证号码位数有误请重新输入(18位):");

scanf("%s",&p->ID);}

printf("请输入消费金额:");

scanf("%lf",&p->consume);

p->integer=p->consume/100;

y=display_discount(p->integer); //调用函数计算折扣

printf("折扣:");

printf("%.1lf",y);

相关文档
最新文档