客户消费积分管理系统说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);}