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

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

数据结构实习报告

班级计科双学位13级

学生高原20120514120

程琼阳20120144202

指导老师

日期2015年1月6日

题目:客户消费积分管理系统

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

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

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

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

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

二.概要设计

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

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

1.函数

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

②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);计算客户折扣,每次显示用户信息调用一次保证客户为最新打折信息。

主函数

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

2.功能模块详细设计

四.调试分析

1.调试过程中出现选择对应操作,按完Enter 键后,直接返回主操作界面,而结果在上一主界面下面,这样导致要想看到结果必须用鼠标操作才能看到对应操作的结果

添加

查找

显示

删除

添加客户

修改信息

删除客户

统计

修改

修改客户

统计客户

修改结果:修改操作界面的上下大小,从而使显示结果显示在操作界面上部

五.心得体会

实习期间,组内队员的团队合作使得这次实习很快就完成了。我们一起在确定了题目之后,一起讨论了为了实现这个程序所需要的函数,一起书写代码,调试,直到程序完全成型。六.用户手册

操作一:添加用户

打开程序后,输入数字1,然后系统会提示你分别按顺序输入姓名、身份证号、消费金额。输入完后,按Enter回到主界面。

操作二:查找用户

进入主界面后,输入数字2,系统会提醒你输入18位的身份证号,按Enter显示结果。

操作三:修改用户信息

进入主界面后,输入数字3,系统会提醒你输入想要修改的客户的身份证号,按Enter后显示客户信息,系统会提醒你想要修改客户的那部分信息,选择对应数字修改对应信息。

操作四:删除用户

进入系统后,输入数字4,系统会提醒你输入想要删除的客户的身份证号,按Enter后会显示客户信息来进一步确认,并提醒你是否要删除,选择对应数字来确定是否删除。

操作五:统计用户数量

进入系统后,输入数字6,按Enter键后就会显示客户数量,如果没有客户就会提醒“没有客户”。

源代码:

#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☆★ 1 2 3 4 5 6 7 ★☆\n");

printf("\n☆★添查修删显统退★☆\n");

printf("\n☆★加找改除示记出★☆\n");

printf("\n☆★客客客客客客★☆\n");

printf("\n☆★户户户户户户★☆\n");

printf("\n ☆★★☆\n");

printf(" ☆★☆★☆☆★☆★☆☆★☆★☆☆★☆★☆★");

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

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);}

相关文档
最新文档