下面是小编为大家整理的基于c、c语言客户消费积分管理系统设计与实现,供大家参考。
毕业设计(论文)
目录
1.设计目的 ...................................................................................................... 3 2. 问题描述 .................................................................................................... 4 3.需求分析 ...................................................................................................... 4 3.1 数据需求 .............................................................................................. 4 3.2 基本功能需求 ...................................................................................... 4 3.3 非功能性需求 ...................................................................................... 4 4.概要设计 ...................................................................................................... 5 4.1 数据结构 .............................................................................................. 5 4.2 系统包含的函数 .................................................................................. 5 4.3 函数间的关系 ...................................................................................... 5 4.4 系统功能模块图 .................................................................................. 6 5.详细设计 ...................................................................................................... 6 5.1 结构体的详细定义 .............................................................................. 6 5.2 系统函数详细介绍 .............................................................................. 7 5.3 系统功能模块介绍 ............................................................................ 13 5.4 具体模块设计 .................................................................................... 14 6.调试分析 .................................................................................................... 16 7.使用说明 .................................................................................................... 17 8. 设计总结 .................................................................................................. 21 9.参考文献 .................................................................................................... 22
《数据结构》毕业设计 客户消费积分管理 1. 设计目的 “数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。对于从事计算机科学及其应用的科技工作者来说,数据结构与算法是必须透彻地掌握的重要基础。
学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。毕业设计是加强学生实践能力的一个强有力手段。毕业设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编写中小型软件的过程中,深化对数据结构与算法毕业中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。
毕业设计要求学生在完成程序设计的同时能够撰写比较规范的设计报告。严格实施毕业设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
2. 问题描述
本设计用于管理客户的消费情况,从而根据客户的消费积分对客户实行不同程度的打折优惠。客户消费积分管理系统具体应该使用一定的存储结构将用户的消费信息存储起来,以方便管理。其中用户的信息包括用户姓名,用户身份证号码,用户消费金额,用户积分多少。继而完成对于客户信息的增删查改等管理。
3. 需求分析 3.1 数据需求
应使用结构体对每个用户的信息进行封装。其中用户的信息包括用户姓名,用户身份证号码,用户消费金额,用户积分多少。
然后运用链表的存储结构将所有用户信息进行保存。继而完成各种功能。
3.2 基本功能需求
本设计应该同时完成以下功能①添加用户②查找用户③修改用户④删除用户⑤统计客户数量⑥按一定顺序显示客户信息⑦清空用户信息 ⑧ 用一定的存储方法实现用户信息的永久保存 ,充分满足对于管理系统的要求。
3.3 非功能性需求 用户界面需求:简洁、易用、易懂、友好的用户界面。
硬件要求:装有Visual C++6.0的计算机。
可靠性需求:保证用户在正常使用本系统时,用户的操作或
误操作不会产生数据的丢失。
4. 概要设计 4.1 数据结构
本设计采用链表的存储方式对用户的信息进行临时性的存储,其中每个节点的信息用结构体进行封装,其中用户的信息包括用户姓名,用户身份证号码,用户消费金额,用户积分数量。
4.2 系统包含的函数 系统包含的函数有:添加函数,按姓名查找函数,按身份证号查找函数,修改函数,删除函数,显示函数,统计函数,排序函数,计算折扣函数,清空函数,文件保存函数,文件读取函数,身份证验证函数和主函数。共计 14 个函数。
4.3 函数间的关系 ①显示函数调用计算折扣函数,计算出客户的折扣信息,并在屏幕上显示; ②主函数在调用添加,修改,删除,清空函数之后都必须调用文件保存函数进行保存。
③调用显示函数之前先调用排序函数,以便屏幕输出有序的用户信息。
④ 调用添加函数之前先调用身份验证函数,判断身份证号是否重复。
⑤ 其它各个函数都各自独立。
4.4 系统功能模块图
图 4-1 系统功能模块图 注释:此处的调用不是真正意义上的调用,而是在主函数中调用 A 函数前,先调用 B 函数。以此来类比 A 函数调用 B 函数。
5. 详细设计 5.1 结构体的详细定义
构造一个结构体,封装客户的个人信息,作为链表中每个节点的模板。括用户姓名,用户身份证号码,用户消费金额,用户积分数量。具体实现如下:
struct C
//定义一个结构体 C {
char name[20];
char ID[20];
double consume;
double integer;
C *next;
};
5.2 系统函数详细介绍 ①添加用户。函数 void Getelem (cnode *head);采用类将每个用户的信息封装,其中包括用户姓名 name、用户省份证号 ID、用户消费金额 consume、积分 integer 的信息。输入一个客户信息后再开辟新的节点连接。如添加一个客户:定义指针 p,用于申请空的结点空间,p=(cnode*)malloc(sizeof(cnode)),利用函数输入姓名,身份证号,并保证身份证号的正确。
void A::Getelem (C *head)
//增加客户 {
C *p;
double y;
p=(C*)malloc(sizeof(C));
//申请空的节点空间
cout<<"请输入姓名:";
cin>>p->name;
cout<<"请输入身份证号(18 位):";
cin>>p->ID;
while(strlen(p->ID)!=18)
{
cout<<"身份证号码位数有误请重新输入(18 位):";
cin>> p->ID;
}
cout<<"请输入消费金额:";
cin>>p->consume;
p->integer=p->consume;
y=display_discount(p->integer);
//调用函数计算折扣
cout<<"折扣:"<<y<<"折";
p->next=head->next;
head->next=p; } ②void Search(cnode *head,char ID[]);和 void Search(cnode *head,char ID[]);查找用户,用每一个节点的 ID 信息或者姓名信息和待查信息进行比对,直到找到正确信息并显示。用身份证号(ID)核对的程序实现如下:
void A:: Searchi(C *head,char ID[])
//查找用户 {
C *p;
double y;
p=head;
if(p->next==NULL)
cout<<"没有客户!";
//判断链表是否为空
else
{
while(p->next!=NULL)
{
p=p->next;
if(strcmp(ID,p->ID)==0)
//判断身份证号是否相同
{
cout<< " ****************************"<<endl;
cout<<"姓名:"<<p->name<<endl;
cout<<"身份证号:"<<p->ID<<endl;
cout<<"消费:"<<p->consume<<endl;
cout<<"积分:"<<p->integer<<endl;
y=display_discount(p->integer);
cout<<"折扣:"<<y<<"折"<<endl;
cout<< " ****************************"<<endl;
}
}
}
} ③void Amend(cnode *head,char ID[]);查找并显示然后修改。先判断链表是否为空,若为空则提示没有客户;若不为空,则用每一个节点信息和待查节点信息进行比对,知道找到该节点,然后对该节点信息进行修改。以下程序以修改客户姓名为例。
void A:: Amend(C *head,char ID[])
//修改客户函数 {
C *p;
double y,z;
int choose,x;
p=head;
if(p->next==NULL)
cout<<"没有客户!";
else
{
while(p->next!=NULL)
{
p=p->next;
if(strcmp(ID,p->ID)==0)
//判断身份证号是否相同
{
cout<< " ****************************"<<endl;
cout<<"姓名:"<<p->name<<endl;
cout<<"身份证号:"<<p->ID<<endl;
cout<<"消费:"<<p->consume<<endl;
cout<<"积分:"<<p->integer<<endl;
y=display_discount(p->integer);
cout<<"折扣:"<<y<<"折"<<endl;
cout<< " ****************************"<<endl;
}
}
cout<<"请选择你要修改的 1、姓名。2、身份证号。3、消费金额。";
cin>>choose;
if(choose==1)
{
cout<<"请输入修改后姓名;";
cin>>p->name;
}
④void Delete(cnode *head,char ID[]);查找显示并删除。查找时的做法与上述两个函数基本相同,以下程序用来实现删除该客户(该节点)的功能。cout<<"你确认删除?1、确定。2、取消。请选择:";
cin>>x;
if(x==1)
{
head->next=p->next;
cout<<"删除成功!";
}
else
{
cout<<"删除失败!";
}
⑤void Showall(cnode *head);遍历链表并显示客户。用一个while 语句实现打印每一个用户。
while(p->next!=NULL)
{
cout<< " ****************************"<<endl;
p=p->next;
cout<<"姓名:"<<p->name<<endl;
cout<<"身份证号:"<<p->ID<<endl;
cout<<"消费:"<<p->consume<<endl;
cout<<"积分:"<<p->integer<<endl;
y=display_discount(p->integer);
cout<<"折扣:"<<y<<"折"<<endl;
}
⑥void count(cnode *head);遍历统计客户数量显示。用一个计数变量 i 遍历链表实现计数功能。
while(p->next!=NULL)
{
p=p->next;
i++;
} ⑦void A:: Clear(C *head);清空所有客户信息。代码实现如下: void A:: Clear(C *head) {
C *p;
p=head;
while(p->next!=NULL)
{
head=p;
p=p->next;
head->next=p->next;
}
cout<<"清空成功!"; }
⑧double display_discount(double integer);计算客户折扣,每次显示用户信息调用一次保证客户为最新打折信息。根据每个客户的积分不同,用 if 和 else 语句打印出不同的折扣信息。详见附录。
⑨void paixu(C *head);排序函数,用冒泡排序法将用户信息按照积分从小到大的顺序排列。在显示用户信息的时候调用。代码详见附录。
⑩void save(C*head);和 void load(C*head);将用户信息从链表中写入文件中,并可以从文件中读入链表。代码如下:
void A::save(C*head) {
ofstream outstuf ;
outstuf.open("chesen.txt",ios::out ) ;
if(!outstuf)
{
cout<<"File could not be open."<<endl ;
cout<<"保存失败!"<<endl ;
}
else{
C*save;
save=head->next;
while(save!=NULL)
{
outstuf<<save->name<< " "<< save->ID
<< " "<<save->consume<<" " <<save->integer<<"\n" ;
save=save->next ;
}
cout<<"保存成功,保存文件为:"<<"chesen.txt";
}
} void A::load(C*head) {
ifstream in;
char a[20];char b[20];double c;double d;
in.open("chesen.txt",ios::app);
while(in>>a>>b>>c>>d)
{
C *p=new C(a,b,c,d,NULL);
p->next=head->n...
推荐访问:基于c、c语言客户消费积分管理系统设计与实现 管理系统 积分 语言
版权所有:上派范文网 2010-2024 未经授权禁止复制或建立镜像[上派范文网]所有资源完全免费共享
Powered by 上派范文网 © All Rights Reserved.。沪ICP备12033476号-1