C语言购物卡管理系统(链表)
(完整word版)c语言程序设计超市管理系统
实验题目:超市管理系统一、实验目的1.熟悉 c 语言的编译连接和运行过程。
2.掌握 c 语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
3.掌握if 语句及switch 语句的运用方法及嵌套应用方法。
4.掌握实现循环结构的三种语句while 、do-while. 、for 的使用。
5.掌握函数的定义方法和调用方法。
6.能够采用模块化思想调试程序。
二.实验内容1.编写程序并进行调试运行。
2.输入商品资料,并保存于文件。
每件商品包含信息如:商品号、商品名、商品类别、商品总量、商品上限和下限、商品价格、进货日期、生产日期、保质期等。
3.对已存入的商品信息进行更新操作,包括添加一件商品信息、删除某件商品信息和修改商品信息。
4.通过按商品名、商品种类、商品进货量的方式查询商品信息。
5.输入某商品号后对其利润进行统计、对进货价格相同的商品进行统计。
6 对商品的库存量和利润进行排序。
7.最后输出商品信息,供需要时打印。
二、需求分析1.该程序可用于对商品的基本信息的存储、更新、查询、输出、统计、排序等操作,以实现管理者对商品的管理和消费者对商品的了解。
2.其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多件商品信息,也可对个别商品信息进行适当的删除或修改。
以便随时更新商品信息。
3.程序中设计的查询功能可根据需要从若干数据中查询某件商品信息,并且可根据三种不同的方法查询:按商品名查询、按商品种类查询和按商品进货量查询。
以满足不同的需要。
四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:超市管理管理系统查询模块排序模块退出系统退出系统查询模块排序模块统计模块*更新模块*输出信息¥录入信息按商品名查询利润排行库存量排行退出系统第二类商品第一类商品退出系统2 •功能模块说明:对各个模块进行功能的描述(1).输入模块:录入需要管理的商品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
C语言 超市管理系统源程序
C谈话超市管制系统源步调之阳早格格创做超市管制系统源步调代码,要不妨真止的.最佳是文献,链表中的一种.好了一定沉金报问~最佳问案有一个小型超市,出卖N(N>=10)种商品,安排并真止一个系统,完毕下列功能:1.保存及输出.超市中的百般商品疑息保存正在指定文献中,不妨把它们输出隐现.2.估计并排序.估计每类商品的总代价(sum,单粗度)及仄衡价(aver,单粗度,输出一位小数),将每类商品按仄衡价从大到小的程序排序挨印出去.3.统计.统计输出库存量矮于100的货号及类型.统计输出有二种以上(含二种)商品库存量矮于100的商品类型.本步调主要分为八个模块:主模块、疑息输出建改模块、新建疑息模块、排序模块、估计模块、统计模块1、统计模块2、挨印模块.1)主模块:通过调用各分模块真止功能;2)疑息输出建改模块:输出隐现文献中商品疑息真质,增加商品疑息,简略商品疑息,建改商品疑息;3)新建商品疑息模块:建坐一个新结构体,为链表存疑息用,而且将疑息保存正在指定的文献中;4)排序模块:把文献中程序整治的商品疑息按单价的大小从下到矮举止排序,搁到链内中保存;5)估计模块:将所有商品的代价与库存量举止乏加供战;6)挨印模块:将商品疑息按每类仄衡代价排序(从下到矮)按程序挨印出去;7)统计模块1:统计库存量矮于100的货名及类型;8)统计模块2:统计商品库存量有2种以上(含2种)矮于100的商品类型.附录(步调浑单)#include "stdio.h" /*输进,输出头文献*/#include "stdlib.h" /*申请空间头文献*/#include "string.h" /*对于字符串加工头文献*/#include "conio.h" /*浑屏头文献*/FILE *fp;int n=0; /*定义文献指针典型*/int i,j,a[4],m; /*定义整数典型*/float aver[4],sum[4],g[4],h; /*定义浮面典型*/char c[5]="elec"; /*定义字符数组典型*/char d[5]="comm"; /*定义字符数组典型*/char e[5]="food"; /*定义字符数组典型*/char f[5]="offi"; /*定义字符数组典型*/struct good /*定义结构体*/{int num; /*商品编号*/char name[20]; /*商品称呼*/char kind[40]; /*商品典型*/float price; /*商品代价*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针典型*/}*head,*p1,*p2;struct good *createlist() /*创造链表函数*/{struct good *head1,*p1,*p2; /*定义结构体指针典型*/if((fp=fopen("goods message.txt","w"))==NULL) /*推断是可挨启文献*/{printf("can not open the file");exit(0); /*中断步调*/}head1=(struct good *)malloc(sizeof(struct good)); /*申请头结面空间*/ p1=head1;p2=head1;printf("*********************************************\n");printf("请输进疑息:编号,称呼,典型,代价,单位,数目\n");printf(" (以输进“-1”表示中断输进)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity); /*输进商品疑息*/printf("____________________\n");p1->next=NULL;fprintf(fp,"%d %s %s %f %s %d ",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity); /*将商品疑息写进文献*/while(1){p1=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/printf("*********************************************\n");printf("请输进疑息:编号,称呼,典型,代价,单位,数目\n");printf(" (以输进“-1”表示中断输进)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d",&p1->num);if(p1->num==-1) /*申请空间中断条件*/{printf("____________________\n\n");fprintf(fp,"%d",-1);fclose(fp);return head1; /*返转头指针*/}scanf("%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity); /*输进商品疑息*/printf("________________\n");fprintf(fp,"%d %s %s %f %s %d ",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity); /*将商品疑息写进文献*/p1->next=NULL;p2->next=p1;p2=p1;}}struct good *paixu(struct good*head2) /*链表排序函数*/{struct good *p6,*p7,*r,*s; /*定义结构体指针典型*/for(i=0;i<=3;i++) /*赋初值值*/{a[i]=0;sum[i]=0;aver[i]=0;}p6=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/p6->next=head2;head2=p6;while(p6->next!=NULL) /*推断循环中断条件*/{p7=p6->next;r=p6;while(p7->next!=NULL) /*推断循环中断条件*/{if((p7->next->price)>(r->next->price)) /*推断是可变更*/r=p7;p7=p7->next;}if(p6!=r) /*推断循环中断条件*/{s=r->next; /*指针变更*/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;free(p6); /*释搁第一个无效空间*/return head2;}void jisuan(){p1=head;do{if(strcmp(p1->kind,c)==0) /*推断是可为电器典型*/{sum[0]=sum[0]+(p1->price)*(p1->quantity); /*供电器总价*/a[0]=a[0]+p1->quantity; /*供电器总件数*/}if(strcmp(p1->kind,d)==0) /*推断是可为日用品典型*/{sum[1]=sum[1]+(p1->price)*(p1->quantity); /*供日用品总价*/ a[1]=a[1]+p1->quantity; /*供日用品总件数*/}if(strcmp(p1->kind,e)==0) /*推断是可为办公用品典型*/{sum[2]=sum[2]+(p1->price)*(p1->quantity); /*供办公用品总价*/a[2]=a[2]+p1->quantity; /*供办公用品总件数*/}if(strcmp(p1->kind,f)==0) /*推断是可为食品典型*/{sum[3]=sum[3]+(p1->price)*(p1->quantity); /*供食品总价*/a[3]=a[3]+p1->quantity; /*供食品总件数*/}p1=p1->next;}while (p1!=NULL); /*遍历链表中断条件*/for(i=0;i<4;i++)aver[i]=sum[i]/a[i]; /*供每类商品仄衡价*/printf("****************************************************\n"); printf("商品典型 \t 仄衡价\t 总库存量\n");printf("****************************************************\n"); printf("____________________________________________________\n"); printf("电器总代价:%0.1f\t仄衡价:%0.1f\t总库存量:%d\n",sum[0],aver[0],a[0]);printf("____________________________________________________\n"); printf("日用品总代价:%0.1f\t仄衡价:%0.1f\t总库存量:%d\n",sum[1],aver[1],a[1]);printf("____________________________________________________\n"); printf("食品总代价:%0.1f\t仄衡价:%0.1f\t总库存量:%d\n",sum[2],aver[2],a[2]);printf("____________________________________________________\n"); printf("办公用品总代价:%0.1f\t仄衡价:%0.1f\t总库存量:%d\n",sum[3],aver[3],a[3]);printf("____________________________________________________\n"); }void shuchu() /*输出商品疑息函数*/{do{struct good *p3,*p4,*p5; /*定义结构体指针典型*/int n=0,p=0,q=0,r=0;printf("所有商品疑息:\n");printf("编号,称呼,典型,代价,单位,数目\n");printf("**********************************\n");if((fp=fopen("goods message.txt","rb+"))==NULL) /*推断是可挨启文献*/{printf("can not open the file");exit(0); /*中断步调*/}head=(struct good *)malloc(sizeof(struct good)); /*申请头结面空间*/p3=head;fscanf(fp,"%d %s %s %f %s %d ",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity); /*从文献中写到链表*/while(1){p4=(struct good *)malloc(sizeof(struct good)); /*申请头结面空间*/fscanf(fp,"%d ",&p4->num);if(p4->num!=-1) /*推断循环中断条件*/{fscanf(fp,"%s %s %f %s %d ",p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity); /*从文献中写到链表*/p4->next=NULL;p3->next=p4;p3=p4;}else{p3->next=NULL;break;}}fclose(fp); /*关关文献*/p3=head;while(p3!=NULL){printf(" %d %s %s %0.1f %s %d\n\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);printf("__________________________________\n");p3=p3->next;}printf("**********************************\n");printf("//////////////////////////////////\n");while(n!=4){p3=head;printf("**********************************\n");printf("1 增加商品疑息\n");printf("2 简略某商品疑息\n");printf("3 建改某商品疑息\n");printf("4 返回(当您完毕了对于某一商品的增加、简略大概者建改后请按4返回)\n");printf("**********************************\n");scanf("%d",&n);if(n==1) /*增加商品疑息*/{printf("请输进商品编号称呼典型代价单位数目\n");printf("**********************************\n");p4=(struct good *)malloc(sizeof(struct good)); /*申请空间*/scanf("%d %s %s %f %s %d",&p4->num,p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity); /*输进商品疑息*/p4->next=NULL;while(p3->next!=NULL) /*推断循环中断条件*/{p3=p3->next;}p3->next=p4;p3=head;if((fp=fopen("goods message.txt","w"))==NULL) /*推断是可挨启文献*/{printf("can not open the file");exit(0); /*中断步调*/}while(p3!=NULL){fprintf(fp,"%d %s %s %f %s %d ",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity) /*将商品疑息写进文献*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关关文献*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==2) /*简略商品*/{printf("**********************************\n");printf("请输进需要简略的商品编号\n");printf("**********************************\n");scanf("%d",&p);printf("**********\n");printf("1 确认简略\n2 与消简略\n");printf("**********\n");scanf("%d",&r);if(r==1){if((head->num)==p){head=head->next;free(p3); /*释搁空间*/}else{p4=head;p3=p4->next;while(p3!=NULL) /*推断循环中断条件*/{if((p3->num)==p){p5=p3->next;free(p3); /*释搁空间*/p4->next=p5;break;}p3=p3->next;p4=p4->next;}}if((fp=fopen("goods message.txt","w"))==NULL) /*推断是可挨启文献*/p3=head;while(p3!=NULL) /*推断循环中断条件*/{fprintf(fp,"%d %s %s %f %s %d ",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*将商品疑息写进文献*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关关文献*/}if(r==2)continue; /*继承循环*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==3) /*建改某商品疑息*/{printf("请输进需要建改的商品编号\n");scanf("%d",&q);while(p3!=NULL) /*推断循环中断条件*/{if((p3->num)==q) /*推断是可为所需要建改的商品*/{printf("请输进商品单价与库存量(如果单价没有变请输进本去的单价)\n");scanf("%f %d",&p3->price,&p3->quantity); /*输进商品代价与库存量*/}p3=p3->next;}if((fp=fopen("goods message.txt","w"))==NULL) /*推断是可挨启文献*/p3=head;while(p3!=NULL) /*推断循环中断条件*/{fprintf(fp,"%d %s %s %f %s %d ",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*将商品疑息写进文献*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关关文献*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==4) /*退出*/break;}printf("**********\n");printf("1 继承建改\n---------\n2 返回\n");printf("**********\n");scanf("%d",&p);if(p==1)continue; /*继承循环*/if(p==2)break; /*跳出循环*/}while(n!=2);fclose(fp); /*关关文献*/}void printf0(struct good *p) /*遍历链表并挨印电器类商品函数*/{struct good *p3; /*定义结构体指针典型*/p3=p;while (p3!=NULL) /*推断遍历链表循环中断条件*/{if(strcmp(p3->kind,c)==0) /*推断商品典型是可为电器典型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出电器类商品疑息*/printf("________________________________________________\n"); }p3=p3->next;}return;}void printf1(struct good *p) /*遍历链表并挨印日用品类商品函数*/ {struct good *p3; /*定义结构体指针典型*/p3=p;while (p3!=NULL) /*推断遍历链表循环中断条件*/{if(strcmp(p3->kind,d)==0) /*推断商品典型是可为日用品典型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出日用品类商品疑息*/ printf("________________________________________________\n"); }p3=p3->next;}return;}void printf2(struct good *p) /*遍历链表并挨印办公用品类商品函数*/ {struct good *p3; /*定义结构体指针典型*/p3=p;while (p3!=NULL) /*推断遍历链表循环中断条件*/{if(strcmp(p3->kind,e)==0) /*推断商品典型是可为办公用品典型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出办公用品类商品疑息*/ printf("________________________________________________\n"); }p3=p3->next;}return;}void printf3(struct good *p) /*遍历链表并挨印食品类商品函数*/{struct good *p3; /*定义结构体指针典型*/p3=p;while (p3!=NULL) /*推断遍历链表循环中断条件*/{if(strcmp(p3->kind,f)==0) /*推断商品典型是可为食品典型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出食品类商品疑息*/printf("________________________________________________\n"); }p3=p3->next;}return;}void shunxudayin(){for(i=0;i<4;i++)g[i]=aver[i]; /*将仄衡价赋给新数组*/for(j=0;j<3;j++) /*将新数组用冒泡排序法排序*/for(i=j+1;i<4;i++){if(g[j]<g[i]){h=g[j];g[j]=g[i];g[i]=h;}}printf("\n****************************\n");printf("商品仄衡代价排序表(从下到矮)\n");printf("****************************\n");printf("________________________________________________\n"); printf("编号\t称呼\t类型\t单价\t单位\t数量\n");printf("________________________________________________\n"); for(j=0;j<4;j++)for(i=0;i<4;i++){if (aver[i]==g[j]) /*推断每类商品仄衡代价的先后程序*/switch(i){case 0:printf0(head); /*调用遍历链表并挨印电器类商品函数*/break;case 1:printf1(head); /*调用遍历链表并挨印日用品类商品函数*/break;case 2:printf2(head);/*调用遍历链表并挨印办公用品类商品函数*/break;case 3:printf3(head); /*调用遍历链表并挨印食品类商品函数*/break;}}}void tongji1(){p1=head;printf("\n************************\n");printf("库存量矮于100的货名及类型\n");printf("************************\n");printf("________________________\n");printf("商品称呼\t商品典型\n");printf("________________________\n");while(p1!=NULL) /*推断遍历链表循环中断条件*/{if(p1->quantity<100) /*推断库存量是可小于100*/{printf("%s\t%s\n",p1->name,p1->kind); /*输出商品称呼及类型*/printf("________________________\n");}p1=p1->next;}}void tongji2(){printf("\n**********************************************\n");printf("商品库存量有2种以上(含2种)矮于100的商品类型:\n");printf("**********************************************\n");printf("________\n");if((a[0]<100)&&(a[0]>=2)) /*推断电器类库存量是可为2种以上(含2种)矮于100*/{printf("电器\n");printf("________\n");}if((a[1]<100)&&(a[1]>=2)) /*推断日用品类库存量是可为2种以上(含2种)矮于100*/{printf("日用品\n");printf("________\n");}if((a[2]<100)&&(a[2]>=2)) /*推断食品类库存量是可为2种以上(含2种)矮于100*/{printf("食品\n");printf("________\n");}if((a[3]<100)&&(a[3]>=2)) /*推断办公用品类库存量是可为2种以上(含2种)矮于100*/{printf("办公用品\n");printf("________\n");}}int main(int argc, char* argv[]){struct good *p1,*p2; /*定义结构体指针典型*/while(1){。
链表的基本操作代码c语言
链表的基本操作代码c语言链表是一种常见的数据结构,其基本操作包括创建、插入、删除和遍历等。
以下是链表的基本操作代码(C语言实现):1. 链表节点的定义cCopy codetypedef struct ListNode { int val; // 节点的值struct ListNode *next; // 指向下一个节点的指针 } ListNode;2. 创建链表cCopy codeListNode* createList(int arr[], int n) { ListNode *head = NULL, *tail = NULL; for (int i = 0; i < n; i++) { ListNode *node = (ListNode *)malloc(sizeof(ListNode)); node->val = arr[i]; node->next = NULL; if (tail == NULL) { head = tail = node; } else { tail->next = node; tail = node; } } return head; }3. 插入节点cCopy codevoid insertNode(ListNode **head, int val, int index) { if (index < 0) { return; } ListNode *node = (ListNode *)malloc(sizeof(ListNode)); node->val = val; node->next = NULL; if (index == 0) { node->next = *head; *head = node; } else { ListNode *prev = *head; for (int i = 0; i < index - 1; i++) { if (prev == NULL) { return; } prev = prev->next; }if (prev == NULL) { return; } node->next = prev->next; prev->next = node; } }4. 删除节点cCopy codevoid deleteNode(ListNode **head, int index) { if (*head == NULL || index < 0) { return; } if (index == 0) { ListNode *node = *head; *head = (*head)->next; free(node); } else { ListNode *prev = *head; for (int i = 0; i < index - 1; i++) { if (prev->next == NULL) { return; } prev = prev->next; } if (prev->next == NULL) { return; } ListNode *node = prev->next; prev->next = node->next; free(node); } }5. 遍历链表cCopy codevoid traverseList(ListNode *head) { while (head != NULL) { printf("%d ", head->val); head = head->next; } printf("\n"); }以上是链表的基本操作代码,可以根据需要进行调整和扩展。
商品管理系统c语言
商品管理系统c语言简介商品管理系统是一个广泛应用于商业领域的软件系统,用于管理商品的库存、销售、采购以及相关的数据统计和报表分析等功能。
本文将从系统设计的角度出发,探讨如何使用C语言实现一个简单的商品管理系统。
系统需求分析在设计商品管理系统之前,首先需要明确系统的功能需求。
根据实际商业场景的特点,我们可以确定以下功能: 1. 商品信息管理:包括商品的基本信息(名称、编号、价格等)以及库存管理(进货、出货、盘点等)。
2. 销售管理:记录商品的销售情况,统计销售额、销售量等数据。
3. 采购管理:记录商品的采购情况,统计采购额、采购量等数据。
4. 数据统计和报表分析:根据销售和采购数据,生成各种报表进行数据分析。
数据结构设计在实现商品管理系统时,需要合理设计数据结构来存储商品的信息和相关操作。
以下是主要的数据结构设计: 1. 商品结构体:包含商品的编号、名称、价格、库存数量等信息。
2. 销售记录结构体:包含销售的商品编号、销售数量、销售日期等信息。
3. 采购记录结构体:包含采购的商品编号、采购数量、采购日期等信息。
4. 统计信息结构体:包含销售额、采购额、库存总量等信息。
系统流程设计商品信息管理流程1.显示主菜单:包含商品信息管理、销售管理、采购管理、数据统计和报表分析四个功能选项。
2.商品信息管理功能:包含商品的新增、删除、修改和查询功能。
1.新增商品:输入商品的编号、名称、价格、库存数量等信息,将商品添加到商品列表中。
2.删除商品:输入要删除的商品编号,从商品列表中删除该商品。
3.修改商品:输入要修改的商品编号,根据提示修改商品的相关信息。
4.查询商品:输入要查询的商品编号或名称,显示商品的详细信息。
3.销售管理功能:包含销售记录的新增和查询功能。
1.新增销售记录:输入销售的商品编号和销售数量等信息,将销售记录添加到销售记录列表中。
2.查询销售记录:输入要查询的销售日期,显示该日期的销售记录。
c语言中linklist的作用
c语言中linklist的作用C语言中LinkList的作用什么是LinkListLinkList(链表)是C语言中用来存储和操作数据的一种数据结构。
它与数组相比,拥有更灵活的插入和删除操作。
链表由节点(Node)组成,每个节点包含一个数据项和一个指向下一个节点的指针。
链表的头节点是链表的起始点,尾节点则指向NULL。
LinkList的作用1.动态内存分配:链表的节点可以动态地分配和释放内存,因此链表可以根据实际需要进行动态的添加和删除操作,不受固定大小的限制。
2.插入和删除操作效率高:由于链表的特性,插入和删除操作只需要修改节点指针的指向,而不需要移动其他节点,因此链表在某些特定场景下可以比数组更高效。
3.实现高级数据结构:链表可以用来实现其他高级数据结构,比如栈(Stack)和队列(Queue),或者作为其他数据结构的底层实现。
4.提供灵活的数据结构设计:链表可以设计成单向链表、双向链表或循环链表,根据实际需求选择合适的链表结构。
LinkList的应用场景链表在许多编程问题中都有着广泛的应用,以下是一些常见的应用场景: - 线性表:链表可以实现线性表,可以用来存储和操作一组有序的数据。
- 多项式运算:链表可以用来存储和运算多项式,实现多项式的相加、相乘等操作。
- 图的表示:链表可以用来表示图的连接关系,比如邻接链表表示法。
- 高级数据结构:链表可以作为实现其他高级数据结构的基础,比如树(Tree)、图(Graph)等。
- 文件操作:链表可以用来实现文件的读取和写入操作,链表可以实现文件的增删改查等功能。
总结链表作为一种灵活和高效的数据结构,广泛应用于C语言的编程中。
通过链表,我们可以动态地分配内存,高效地进行插入和删除操作。
而且,链表还可以作为其他高级数据结构的基础实现,扩展了数据结构的功能和应用场景。
在C语言中,掌握链表的使用方法和原理,对于编写高效的程序和解决复杂的编程问题都有很大的帮助。
C语言链表实现商品库存管理系统
C语⾔链表实现商品库存管理系统本⽂实例为⼤家分享了C语⾔链表实现商品库存管理系统的具体代码,供⼤家参考,具体内容如下代码:12345678910111213141516171819202122 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54#include <stdio.h>#include <stdlib.h>#include <string.h>//定义⼀个商品结构体typedef struct sp{char no[12]; //商品编号char name[40]; //名称int workload; //库存量struct sp *next; //指向下⼀节点的指针} SP;//函数声明放在这⾥void ListCreate(SP *L, int n); //创建商品链表节点void LIstSearch(SP *L); //查找商品信息void ListModify(SP *L); //修改商品信息void ListInsert(SP *L); //插⼊商品信息void ListDelete(SP *L); //删除商品信息void Input(SP *p, int i); //输⼊商品信息void SumSp(SP *L); //统计商品的库存总量void Sort(SP *L); //对每类商品的库存量进⾏排名void Menu(); //考试报名管理系统的菜单//商品库存管理系统的主函数⼊⼝int main(){int item, n; //item⽤于接收输⼊的命令,n⽤于接收输⼊的商品⼈数 SP *L = NULL; //初始化⼀个头节点L = (SP *)malloc(sizeof(SP)); //为头节点开辟内存空间L->next = NULL; //将头节点的指针域置空do{Menu(); //菜单printf("请输⼊相应的数字,进⾏相应的操作:\n");scanf("%d", &item);55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 system("cls");switch(item){case1:printf("请输⼊您要录⼊的商品数⽬:");scanf("%d", &n);ListCreate(L, n);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case2:LIstSearch(L); //查找商品信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case3:ListModify(L); //修改商品库存信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case4:ListDelete(L); //删除商品信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case5:ListInsert(L); //插⼊商品信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case6:SumSp(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case7:Sort(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case0: //退出商品库存管理系统printf("即将退出商品库存管理系统.....");exit(0);default:printf("您输⼊的指令不正确,请重新输⼊"); }printf("\n\n");} while(item);return0;}//创建链表,将新⽣成的节点插⼊到链表的表头void ListCreate(SP *L, int n){int i;for(i = 0; i < n; i++){SP *p;//将新⽣成的节点插⼊到链表中117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 p = NULL;p = (SP *)malloc(sizeof(SP));Input(p, i);p->next = L->next;L->next = p;}printf("录⼊成功!");}//查找商品库存量void LIstSearch(SP *L){char n[40];SP *p = L->next;if(p == NULL)printf("数据为空,⽆法查找!");else{printf("请输⼊您要查找的商品名称:");scanf("%s", n);while(strcmp(p->name, n) != 0){p = p->next;if(p == NULL){printf("没有找到相关信息\n");return;}}printf("%s的库存量为%d\n",p->name,p->workload);}}//修改商品的库存量void ListModify(SP *L){int a;char nam[40];SP *p = L->next;if(p == NULL)printf("数据为空,⽆法修改!");else{printf("请输⼊您修改的商品名称:");scanf("%s",nam);while(strcmp(p->name, nam) != 0){p = p->next;if(p == NULL){printf("没有找到相关信息\n");return;}}printf("请输⼊您修改后的库存量:");scanf("%d",&p->workload);printf("修改成功");}}//删除商品信息void ListDelete(SP *L){char n[40];SP *p = L->next, *pre = L; //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点 if(p == NULL)printf("数据为空,⽆法删除!");else{printf("请输⼊您要删除的商品名称:");scanf("%s", n);while(strcmp(p->name, n) != 0)180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 p = pre->next;if(p == NULL){printf("没有找到相关信息,⽆法删除\n"); return;}}pre->next = p->next;free(p);printf("删除成功");}}//插⼊商品库存的相关信息void ListInsert(SP *L){SP *s = NULL; //⽣成⼀个新节点ss = (SP *)malloc(sizeof(SP));printf("请输⼊商品的商品编号:");scanf("%s", s->no);printf("请输⼊商品的名称:");scanf("%s", s->name);printf("请输⼊商品的库存量:");scanf("%d", &s->workload);s->next = L->next;L->next = s;printf("插⼊成功!");}//统计商品的库存总量void SumSp(SP *L){int sum=0;SP *p=L->next;while(p!=NULL){sum+=p->workload;p=p->next;}printf("商品的库存总量为%d\n",sum);}//对每类商品的库存量进⾏排名void Sort(SP *L){SP *p,*q,*tail,*l;tail=NULL;while((L->next->next) != tail){p = L;q = L->next;while(q->next != tail){if((q->workload) > (q->next->workload)){p->next = q->next;q->next = q->next->next;p->next->next = q;q = p->next;}q = q->next;p = p->next;}tail = q;}printf("商品库存量从⼩到⼤结果如下:\n");l=L->next;while(l!=NULL){if(l->next!=NULL){printf("%s(%d)->",l->name,l->workload); l=l->next;242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293{ printf("%s(%d)",l->name,l->workload); l=l->next;}}}//输⼊商品库存的相关信息void Input(SP *p, int i){ printf("请输⼊第%d 个商品的商品编号:", i + 1);scanf("%s", p->no);printf("请输⼊第%d 个商品的名称:", i + 1); scanf("%s", p->name); printf("请输⼊第%d 个商品的库存量:", i + 1); scanf("%d", &p->workload);}//商品库存管理系统的菜单void Menu(){ printf("\n\n"); printf("\t\t\t===================商品库存管理系统======================\n"); printf("\t\t\t* 作者:XXX 班级:XXXXXXXXXXX 学号:XXXXXXXXXX *\n"); printf("\t\t\t* *\n");printf("\t\t\t* 1>. 录⼊商品库存信息 *\n"); printf("\t\t\t* 2>. 查找某个商品的库存量 *\n"); printf("\t\t\t* 3>. 修改某个商品的库存量 *\n");printf("\t\t\t* 4>. 删除某个商品库存相关信息 *\n");printf("\t\t\t* 5>. 插⼊某个商品的相关信息 *\n");printf("\t\t\t* 6>. 统计商品的库存总量 *\n"); printf("\t\t\t* 7>. 对每类商品的库存量排名 *\n"); printf("\t\t\t* 0>. 退出管理系统 *\n"); printf("\t\t\t* 欢迎使⽤本系统!*\n");printf("\t\t\t========================================================\n");printf("\t\t\t 输⼊选项,按回车进⼊选项: \n");}部分运⾏结果截图以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
c语言中的链表用法
c语言中的链表用法在C语言中,链表是一种常见的数据结构,用于存储一系列数据项,每个数据项称为节点,每个节点包含两个部分:数据和指向下一个节点的指针。
以下是一个简单的链表实现示例:```cinclude <>include <>// 定义链表节点结构体typedef struct Node {int data;struct Node next;} Node;// 创建新节点Node createNode(int data) {Node newNode = (Node)malloc(sizeof(Node));newNode->data = data;newNode->next = NULL;return newNode;}// 在链表末尾添加节点void appendNode(Node head, int data) { Node newNode = createNode(data); if (head == NULL) {head = newNode;return;}Node current = head;while (current->next != NULL) {current = current->next;}current->next = newNode;}// 打印链表void printList(Node head) {while (head != NULL) {printf("%d ", head->data);head = head->next;}printf("\n");}int main() {Node head = NULL; // 链表头指针初始化为NULLappendNode(&head, 1); // 添加节点1appendNode(&head, 2); // 添加节点2appendNode(&head, 3); // 添加节点3printList(head); // 打印链表:1 2 3return 0;}```在这个示例中,我们定义了一个链表节点结构体,其中包含一个整型数据成员和一个指向下一个节点的指针成员。
c语言课程设计超市购物系统
c语言课程设计超市购物系统一、教学目标本课程的目标是使学生掌握C语言编程的基本知识,能够运用C语言设计并实现一个简单的超市购物系统。
在知识目标方面,要求学生掌握C语言的基本语法、数据类型、运算符、控制结构等。
在技能目标方面,要求学生能够熟练使用C语言进行程序设计,具备解决实际问题的能力。
在情感态度价值观目标方面,要求学生培养对编程的兴趣和热情,培养团队合作意识和自主学习能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等。
具体安排如下:1.第一章:C语言概述,介绍C语言的发展历程、特点及应用领域。
2.第二章:基本数据类型和运算符,介绍整型、浮点型、字符型数据及其运算符。
3.第三章:控制结构,介绍顺序结构、选择结构、循环结构。
4.第四章:函数,介绍函数的定义、声明、调用及返回值。
5.第五章:数组和字符串,介绍一维数组、多维数组、字符串的基本操作。
6.第六章:指针,介绍指针的概念、运算及应用。
7.第七章:结构体和联合体,介绍结构体、联合体的定义和应用。
8.第八章:文件操作,介绍文件的基本操作及其应用。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法。
在讲授法中,教师通过讲解、示范等方式传授知识;在案例分析法中,教师通过分析实际案例,引导学生运用所学知识解决问题;在实验法中,学生通过动手实践,加深对知识的理解和运用。
四、教学资源本课程的教学资源包括教材、多媒体资料和实验设备。
教材选用《C程序设计原理与应用》,多媒体资料包括教学PPT、视频教程等,实验设备包括计算机、网络设备等。
这些资源将有助于学生更好地学习C语言,提高编程能力。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
平时表现主要评估学生的课堂参与度、提问回答、团队合作等情况,占总评的30%。
作业主要评估学生的编程能力和理解力,占总评的30%。
考试分为期中考试和期末考试,期中考试占40%,期末考试占60%,考试内容主要包括理论知识及编程实践。
C语言超市购物管理系统报告
1题目描述 (1)2 系统分析 (1)2.1 题目要求 (1)2.2 输入/输出要求 (2)2.3 分析要处理的数据 (2)2.4 分析功能及其具体含义 (2)3 系统设计 (3)3.1 数据定义 (3)3.2 系统功能设计 (3)3.3 函数调用关系 (3)3.4 文件组织结构 (3)3.5设计过程的重点和难点设计过程的重点和难点 (4)4详细设计 (4)4.1流程图 (4)5 系统实现 (5)5.1源程序清单 (5)5.1.1 头文件 (5)5.1.2 主函数 (5)5.1.3 菜单 (10)5.2遇到的问题及解决 (11)5.3重点难点技术分析 (11)6 调试运行 (11)6.1测试和结果 (11)7 系统使用说明 (14)8 结论 (14)8.1课题完成情况说明 (14)8.2系统的亮点 (14)8.3系统的不足 (14)8.4系统可能的改进和扩展 (14)1题目描述假设某超市购物信息主要包括:会员编号,会员名,商品编号,商品名,商品价格,商品数量,商品日期等,本系统应能对这些基本信息进行管理,具有会员信息录入、查看、保存至文件、从文件中读出、增加购买信息,修改购买信息,删除购买信息,按商品项查询。
2 系统分析2.1 题目要求(1) 为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目;(2) 会员购买信息按记录完整地录入、查看、保存至文件、从文件中读出、查看各会员购买信息、增加购买信息,修改购买信息,删除购买信息,按商品项查询。
(3) 要求以上功能分别用函数实现。
并要求用C语言的文件操作语句将以上所有结果保存在文件wuyao.c中。
2.2 输入/输出要求(1) 应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。
进入每个操作后,根据程序的提示输入相应的信息;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
c语言银行管理系统课程设计
c语言银行管理系统课程设计以下是一个简单的C语言银行管理系统的课程设计示例:1. 需求分析:- 用户可以创建账户,包括账户名、账户号码、初始存款等信息。
- 用户可以进行存款、取款和转账操作。
- 用户可以查询账户余额和交易记录。
- 系统管理员可以查看所有账户信息和交易记录。
2. 数据结构设计:- 定义结构体“Account”来表示账户,包括账户名、账户号码、余额等字段。
- 使用数组来存储多个账户。
- 定义结构体“Transaction”来表示交易记录,包括交易类型(存款、取款、转账)、账户号码、交易金额等字段。
- 使用链表或数组来存储交易记录。
3. 用户管理功能设计:- 实现创建账户的功能,包括输入账户信息和生成唯一的账户号码。
- 实现存款、取款和转账功能,包括验证账户存在和余额是否足够,更新账户余额,并记录交易记录。
- 实现查询账户余额和交易记录的功能。
4. 管理员功能设计:- 实现查看所有账户信息和交易记录的功能。
5. 用户界面设计:- 使用菜单来提供用户选择功能的界面。
- 根据用户的选择调用相应功能函数进行交互。
6. 数据存储和读取:- 使用文件来存储账户信息和交易记录,以便在程序关闭后可以保存数据。
- 实现读取文件内容到内存和保存内存数据到文件的功能。
7. 错误处理和异常情况处理:- 对用户输入进行验证和错误处理,如输入非法字符、账户不存在等情况。
- 在程序运行过程中出现异常情况时,进行合理的错误处理和提示。
8. 测试和调试:- 编写测试用例,测试各个功能是否正常工作。
- 进行调试,修复程序中的错误和缺陷。
以上是一个简要的C语言银行管理系统的课程设计示例,你可以根据自己的需求和实际情况进行进一步的扩展和改进。
C语言链表应用-链表处理商品管理系统
C语言链表应用-链表处理商品管理系统#include "stdio.h"#include "malloc.h"#include "stdlib.h"#define MAXSIZE 100#define NULL 0struct sp{int c,p,num;struct sp *next;}S[MAXSIZE];struct sp* lb(struct sp *h,int MAX) //建立链表{h=&S[0];for(int i=1;i<MAX;i++){S[i-1].next=&S[i];}S[MAX-1].next=NULL;return(h);}struct sp* gx(struct sp S[],int C,int M) //更新链表数据{struct sp *pp;pp=S;while(pp->c!=C&&pp->next!=NULL){pp=pp->next;}if(C==pp->c) pp->num-=M;else printf("找不到该商品编号!");return(S);}struct sp* sc(struct sp S[],int C) //删除{struct sp *p1,*p2;p1=S;if(p1->c==C) {S=p1->next;return(S);}while(p1->c!=C&&p1->next!=NULL){p2=p1;p1=p1->next;}if(C==p1->c){if(p1==S)S=p1->next;elsep2->next=p1->next;}elseprintf("找不到该商品编号!");return(S);}struct sp* cr(struct sp S[],struct sp *scr) //插入{struct sp *P0,*P1,*P2;P0=scr;P1=S;if(S==NULL){S=P0;P0->next=NULL;}else{while((P0->c)>(P1->c)&&(P1->next)!=NULL){P2=P1;P1=P1->next;}if((P0->c)<=(P1->c)){if(S==P1) {S=P0;S->next=P1;}else {P2->next=P0;P0->next=P1;}}else{P1->next=P0;P0->next=NULL;}}return(S);}void bl(struct sp* head) //遍历链表{struct sp* q;int w=0,i=0;printf("当前链表为:\n商品编号价格数量\n");q=head;do{printf("%6d %6d %5d\n",q->c,q->p,q->num);w+=(q->p)*(q->num);i++;q=q->next;}while(q!=NULL);printf("商品总类数为:%d\n商品总价值为:%d",i,w);printf("\n");return;}void main(){printf("本程序是链表试验小程序!\n");struct sp *H,*scr;H=(struct sp*)(S);FILE *fp;char str[20];int x=6;do{switch(x){case 1:int a;printf("输入商品总类数:"); //建立链表scanf("%d",&a);H=lb(H,a);printf("输入文件地址:");scanf("%s",str);fp=fopen(str,"r");fscanf(fp,"商品编号:%d %d %d %d %d %d %d\n",&S[0].c,&S[1].c,&S[2].c,&S[3].c,&S[4].c,&S[5].c,&S[6].c); //导入数据fscanf(fp,"单价:%d %d %d %d %d %d %d\n",&S[0].p,&S[1].p,&S[2].p,&S[3].p,&S[4].p,&S[5].p,&S[6].p);fscanf(fp,"数量:%d %d %d %d %d %d %d\n",&S[0].num,&S[1].num,&S[2].num,&S[3].num,&S[4].num,&S[5].num,&S[6].num);fclose(fp);bl(S);break;case 2:int b,e; //售出后更新链表printf("依次输入售出商品的编号和数量:");scanf("%d%d",&b,&e);gx(H,b,e);bl(H);break;case 3:int f;printf("输入要删除的商品编号:"); //删除节点scanf("%d",&f);sc(H,f);bl(H);break;case 4:int g,j,k;scr=(struct sp*)malloc(sizeof(struct sp));printf("依次输入插入商品的编号价格数量:"); //插入scanf("%d%d%d",&g,&j,&k);scr->c=g;scr->p=j;scr->num=k;cr(H,scr);bl(H);break;case 5:printf("\n\n\n");bl(H);}printf("\n1建立商品链表\n2售出后更新链表数据\n3删除商品\n4插入新商品\n5遍历商品信息\n0退出\n输入代码:");scanf("%d",&x);}while(x!=0);return;}。
c语言中操作list的方法
c语言中操作list的方法
在C语言中,操作链表(list)的方法主要包括以下几个方面:
1. 创建链表,首先需要定义一个链表的结构体,包含数据和指
向下一个节点的指针。
然后通过动态内存分配函数(如malloc)来
创建节点,并建立节点之间的关系,形成链表。
2. 插入节点,可以在链表的任意位置插入新的节点。
插入操作
需要修改指针的指向,将新节点插入到指定位置,并调整前后节点
的指针。
3. 删除节点,可以删除链表中的指定节点。
删除操作需要修改
指针的指向,将待删除节点的前后节点连接起来,并释放待删除节
点的内存。
4. 遍历链表,通过遍历链表,可以访问链表中的每个节点,并
对节点进行操作。
可以使用循环来遍历链表,从头节点开始,依次
访问每个节点,直到链表结尾。
5. 查找节点,可以按照指定的条件在链表中查找节点。
可以通
过遍历链表,逐个比较节点的值,找到符合条件的节点。
6. 修改节点,可以修改链表中指定节点的值。
可以通过遍历链表,找到需要修改的节点,然后修改节点的值。
7. 销毁链表,当链表不再使用时,需要释放链表所占用的内存空间。
可以通过遍历链表,释放每个节点的内存,最后释放链表的头节点。
总结起来,操作链表的方法包括创建链表、插入节点、删除节点、遍历链表、查找节点、修改节点和销毁链表。
通过这些方法,可以对链表进行各种操作,实现对数据的存储和处理。
在具体实现过程中,需要注意指针的操作和内存管理,确保链表的正确性和高效性。
购物管理系统c语言课程设计
购物管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在购物管理系统中的应用,掌握基本数据类型、变量、运算符和表达式;2. 学会使用C语言控制结构(如顺序、选择、循环结构),实现购物管理系统的功能模块;3. 掌握数组、函数、指针在购物管理系统中的运用,实现商品信息、用户信息的存储和管理;4. 了解文件操作在购物管理系统中的应用,实现对数据的持久化存储。
技能目标:1. 能够运用C语言编写简单的购物管理系统程序,实现商品浏览、购买、支付等基本功能;2. 学会使用调试工具,分析并解决程序中出现的错误;3. 能够根据实际需求,设计和优化购物管理系统的功能模块,提高程序的可用性和可维护性;4. 培养良好的编程习惯,编写规范、简洁、高效的代码。
情感态度价值观目标:1. 激发学生对C语言编程的兴趣,培养主动学习和解决问题的能力;2. 培养学生的团队协作精神,学会与他人共同分析和解决问题;3. 增强学生的实践能力,认识到编程在实际应用中的重要性;4. 培养学生诚实守信、认真负责的品质,树立正确的价值观。
本课程旨在帮助学生将所学的C语言知识应用于购物管理系统的实际开发中,通过实践提高编程能力,培养良好的编程习惯,同时关注团队协作和价值观的培养,为将来的学习和工作打下坚实基础。
二、教学内容1. C语言基础知识回顾:- 变量、数据类型、常量- 运算符、表达式、语句- 顺序结构程序设计2. 控制结构:- 选择结构(if、switch)- 循环结构(for、while、do-while)3. 函数与模块化设计:- 函数定义、调用、声明- 作用域规则、局部变量、全局变量- 模块化设计理念4. 数组与指针:- 数组的定义、初始化、访问- 指针的概念、操作、应用- 指针与数组的关系5. 文件操作:- 文件打开、关闭、读写- 文件存储格式、数据持久化6. 购物管理系统功能模块设计:- 商品信息管理- 用户信息管理- 购物车功能实现- 订单管理7. 编程规范与调试:- 代码风格、命名规则- 调试技巧、错误处理8. 实践项目:- 搭建购物管理系统框架- 编写各功能模块代码- 系统测试、优化教学内容将按照以上大纲进行安排和进度规划,与课本内容紧密关联,确保学生能够将所学知识应用于实际项目中。
C语言购物卡管理系统(链表)
购物卡管理系统(一)系统主要功能模块:(1)实现系统内制卡、发卡功能。
(2)实现系统内购物卡帐户及相关帐户管理。
(3)实现购物卡交易和合法性检查。
(4)实现购物卡交易积分功能。
(5)实现购物卡报表功能。
(6)数据以文件形式存储。
提示:制卡:指申请一个购物卡,但还没有使用。
发卡:指该卡已经起用。
实现卡交易:指从卡中消费掉一定金额。
(二)题目及要求的分析:根据题目要求,系统应该实现以下功能:(1)制卡:主要是新建出一张购物卡,并输入了顾客部分信息,如姓名、密码等,但卡没有激活,依然不可使用。
(2)发卡:激活新建的购物卡,用户能够使用卡进行各项活动。
(3)消费:进入帐户后,取走少于帐户金额的钱款进行消费,并在帐户少减少相应的金额,增加相应的积分。
(4)存款:进入帐户后,在金额项加上用户要存入的钱款。
(5)报表:显示顾客购物卡上记录的所有信息,除密码外。
(6)存储:购物卡内的信息以文件形式存储。
(7)退出:从系统中退出。
(8)菜单:提供良好的界面,方便用户的操作。
代码:#include <stdio.h>#include<ctype.h> /*调用字符函数*/#include<stdlib.h>#include<conio.h> /*通用输入输出库*/#include<string.h>#include<windows.h>int flag=5;struct card{char name[20];char number[20];float money;char key[10];float jifen;float mid;int power;struct card *next;};save(struct card *head);void list();void jihuo();struct card *chaxun();save(struct card *head){FILE *fp;struct card *q;q=head;if((fp=fopen("e:\\123.txt","ab+"))==NULL) {printf("无法打开\n");exit(0);while(q!=NULL){if(fwrite(q,sizeof(struct card),1,fp)!=1){printf("文件写入错误!");fclose(fp);return (head);}q=q->next;}fclose(fp);}struct card *save1(struct card *head){FILE *fp;struct card *q;q=head;if((fp=fopen("e:\\123.txt","wb"))==NULL) {printf("无法打开\n");exit(0);while(q!=NULL){if(fwrite(q,sizeof(struct card),1,fp)!=1){printf("文件写入错误!");fclose(fp);return (head);}q=q->next;}fclose(fp);}struct card *duqu()//读取数据{struct card *head = NULL;struct card *p1, *p2;FILE *fp;if((fp=fopen("e:\\123.txt","rb+"))==NULL) {printf("打开文件出错\n");exit(0);}while(!feof(fp)){if((p1=(struct card*)malloc(sizeof(struct card)))==NULL) {printf("something is wrong!\n");fclose(fp);exit(0);}if(fread(p1,sizeof(struct card),1,fp)!=1){free(p1);break;}if(head==NULL)head=p2=p1;else{p2->next=p1;p2=p1;}}fclose(fp);return (head);}struct card *createlist(){struct card *head,*p,*q;int i;char num[20];head=(struct card*)malloc(sizeof(struct card));head->next=NULL;head->money=0;head->jifen=0;system("cls");printf("\n\t\t********************注册购物卡*******************\n\n\n");do{printf("\n\n\t请输入要注册的卡号(六位数): ");scanf("%s",head->number);if(strlen(head->number)!=6){system("cls");printf("\n\n\n\n\n\n\n\n\n\n\t\t\t对不起您的输入有误,请重新输入!\n\n");Sleep(1000);system("cls");printf("\n\t\t********************注册购物卡*******************\n\n\n");continue;}printf("\n\n\t请输入您的名字: ");scanf("%s",head->name);printf("\n\n\t请输入您的密码: ");scanf("%s",head->key);head->power=99;}while(strlen(head->number)!=6);p=head;system("cls");printf("\n\t\t********************注册购物卡*******************\n\n\n");printf("您的购物卡为:\n\n");printf("\n\t姓名卡号余额积分\n\n");printf("\t%2s %16s %13.2f %13.2f",p->name,p->number,p->mo ney,p->jifen);getche();p->next=NULL;save(head);printf("\n\n\n\n\n\n\t\t\t");printf("购物卡注册成功!\n\n\n\n\t\t\t\t按任意键返回.....");getche();}void cost(struct card *q){struct card *p,*a;p=duqu();a=p;while(strcmp(q->number,p->number)!=0){p=p->next;}system("cls");printf("\n\t\t********************账户消费*******************\n\n\n");printf("\n\n\n\n\n\n");printf("\t\t\t请输入您的消费金额:");scanf("%f",&p->mid);(p->money)=(p->money)-(p->mid);(p->jifen)=(p->jifen)+(p->mid);printf("\n\n\t\t\t您的余额为:%.2f",p->money);printf("\n\n\n\n\n\t\t\t显示完毕,按任意键返回子菜单.....");getche();p=a;save1(p);}void cunkuan(struct card *q){struct card *p,*a;p=duqu();a=p;while(strcmp(q->number,p->number)!=0){p=p->next;}system("cls");printf("\n\t\t********************账户存款*******************\n\n\n");printf("\n\n\n\n\n\n");printf("\t\t\t请输入您的存款金额:");scanf("%f",&p->mid);(p->money)=(p->mid)+(p->money);printf("\n\n\t\t\t您的余额为:%.2f",p->money);printf("\n\n\n\n\n\t\t\t显示完毕,按任意键返回子菜单.....");getche();p=a;save1(p);}void xiugai(struct card *q){char key[10],num[10];struct card *p,*a;p=duqu();a=p;while(strcmp(q->number,p->number)!=0){p=p->next;}system("cls");printf("\n\t\t********************修改账户密码*******************\n\n\n");printf("\n\n\n\n");printf("\t\t\t请输入您的新密码:");scanf("%s",num);printf("\n\n\t\t\t请再次输入您的密码:");scanf("%s",key);if(strcmp(key,num)!=0){system("cls");printf("\n\t\t********************修改账户密码*******************\n\n\n");printf("\n\n\n\n\n\t\t对不起,两次输入的密码不一样,修改密码失败!");Sleep(1000);system("cls");}if(strcmp(key,num)==0){system("cls");printf("\n\t\t********************修改账户密码*******************\n\n\n");strcpy(p->key,num);printf("\n\n\n\n\n\n\t\t\t修改密码成功!");Sleep(1000);p=a;save1(p);}}void chaxun2(struct card *q){struct card *p,*a;p=duqu();a=p;while(strcmp(q->number,p->number)!=0){p=p->next;}system("cls");printf("\n\t\t********************账户查询*******************\n\n\n");printf("\t您的账户信息为:\n\n\n");printf("\n\t\t姓名卡号余额积分\n\n");printf("\t\t%2s %16s %13.2f %13.2f",p->name,p->number,p->mone y,p->jifen);printf("\n");getch();}struct card *chaxun(){int b,i=0;int flag=9;struct card *head;char num[10],key[10];struct card *p,*head1;head1=duqu();p=head1;system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\t请输入您的卡号(六位数): ");scanf("%s",num);while(p!=NULL){if(strcmp(num,p->number)!=0){p=p->next;if(p==NULL){system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t没有该卡号信息,请重新输入!\n\n");Sleep(1000);system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\t请重新输入卡号(六位数): ");scanf("%s",num);p=head1;}continue;}if((p->power)==99){system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t对不起,该卡未激活,请先激活!");getche();system("cls");main();}if(p->power==100){while(flag==9){printf("\n\n\t请输入密码(六位数): ");scanf("%s",key);if(strcmp(key,p->key)==0){flag=10;}if(strcmp(key,p->key)!=0){system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t对不起,密码输入错误%d 次!",i+1);flag=9;i++;if(i==3){system("cls");printf("\n\n\n\n\n\n\n\t\t\t密码输入错误三次,系统自动返回主菜单!");Sleep(2000);system("cls");return;}}}if(flag==10)break;}}while(1){system("cls");printf("*****************************************\n");printf(" * *\n");printf(" * 账户查询*\n");printf(" * *\n");printf(" * —————————————————— *\n");printf(" * *\n");printf(" * 1:查询*\n");printf(" * *\n");printf(" * 2:存款*\n");printf(" * *\n");printf(" * 3:消费*\n");printf(" * *\n");printf(" * 4:修改密码*\n");printf(" * *\n");printf(" * 5:返回主菜单*\n");printf(" * *\n");printf("*****************************************\n");printf("\n");printf("\t\t请选择操作: ");scanf("%d",&b);switch(b){case 1:chaxun2(p); break;case 2:cunkuan(p);break;case 3:cost(p);break;case 4:xiugai(p);break;case 5:main();default:printf("对不起,您的输入有误,请重新输入!");}}}void jihuo(){char x;char num[10];struct card *p,*head1;head1=duqu();p=head1;system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\t请输入您要激活的卡号(六位数): ");scanf("%s",num);while(p!=NULL){if(strcmp(num,p->number)!=0){p=p->next;}elsebreak;while(p==NULL){system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\n\n\n\n\n\n\t\t\t没有该卡号信息,请重新输入卡号!\n\n");Sleep(1000);system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\t请重新输入您申请的卡号(六位数): ");scanf("%s",num);p=head1;}}system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("您的购物卡为:\n\n");printf("\n\t姓名卡号余额积分\n\n");printf("\t%2s %16s %13.2f %13.2f",p->name,p->number,p->mo ney,p->jifen);printf("\n\n\n\n\n\t\t\t确认激活您的购物卡? \n\n\t\t\t <1> 是<2> 否");printf("\n\n\t\t\t请选择:");scanf(" %c",&x);switch(x){case '1':system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");p->power=100;save1(head1);printf("\n\n\n\n\n\n\n\t\t\t");printf("激活成功,按任意键返回主菜单.....");getche();break;case '2':system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t");printf("您已放弃激活,按任意键返回主菜单.....");getche();break;default:system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t");printf("对不起,您的输入有误,请重新输入!");Sleep(2000);}}void list(){struct card *p1;p1=duqu();system("cls");printf("\n\t\t********************显示购物卡*******************\n\n\n");printf("所有购物卡信息为:\n\n\n");printf("\n\t姓名卡号余额积分\n\n");while(p1!=NULL){printf("\t %2s %16s %14.2f %14.2f",p1->name,p1->number,p1 ->money,p1->jifen);printf("\n");p1=p1->next;}}main(){int a;struct *head;printf("\n\n\n\n\n\n\n\n\t\t\t\t");printf(" 欢迎使用");printf("\n\n");printf("\t ******************购物卡管理系统*******************\n");Sleep(1000);system("cls");while(1){printf("\n");printf("*****************************************\n");printf(" * 购物卡管理系统*\n");printf("*****************************************\n");printf(" * 菜单*\n");printf(" * *\n");printf(" * 1:注册*\n");printf(" * *\n");printf(" * 2:激活*\n");printf(" **\n");printf(" * 3:帐户登录*\n");printf(" * *\n");printf(" * 4:名单*\n");printf(" * *\n");printf(" * 0:退出系统*\n");printf(" * *\n");printf("*****************************************\n");printf("\n");printf("\t\t请选择操作: ");scanf("%d",&a);switch(a){case 1:createlist(head);system("cls");break;case 2:jihuo();system("cls");break;case 3:chaxun();break;case 4:list();printf("\n\n\n\n\t\t\t显示完毕,按任意键返回主菜单....");getche();system("cls");break;case 0:system("cls");printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t");printf(" 感谢您的使用,再见!");printf("\n\n\n\n\n\t\t\t\t\t");Sleep(1000);exit(0);default:system("cls");printf("\n\n\n\t\t\t对不起!您的输入有误!请重新输入。
C语言课程设计-购物卡管理系统
C语言课程设计-购物卡管理系统一、题目要求系统主要功能模块:1,实现系统内制卡,发卡功能。
2,实现系统内购物卡帐户及相关帐户管理。
3,实现购物卡交易和合法性检查。
4,实现购物卡交易积分功能。
5,实现购物卡报表功能。
6,数据以文件形式存储。
提示:制卡:指申请一个购物卡,但还没有使用。
发卡:指该卡已经起用。
实现卡交易:指从卡中消费掉一定金额。
二、需求分析根据题目要求,由于购物卡信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需浏览购物卡的信息,应提供报表、查询等操作;另外还应提供键盘式选择菜单实现功能选择。
三、总体设计根据需求分析,可以将系统分为五大模块:制卡、发卡、登陆、报表、积分。
购物卡管理系统制卡发卡登录模积分报表模块模块块模块模块查询储蓄修改密码消费四、详细设计1、主函数将main()函数体内的界面选择部分语句单独抽取出来作为一独立函数,目的在于系统执行完每部分功能模块后能够方便返回到系统界面。
void menu(){int v,w1;do{printf("\t\t*********************MENU*********************\n\n");printf("\t\t\t\t 1.card-made\n");printf("\t\t\t\t 2.card-life\n");printf("\t\t\t\t 3.card-enter\n");printf("\t\t\t\t 4.card-browse\n");printf("\t\t\t\t 5.exit\n");printf("\n\n\t\t **********************************************\n");printf("Choice your number(1-5):[]\b\b");scanf("%d",&v);if(v<1||v>5){w1=1;getchar();}else w1=0;}while(w1==1);switch(v){case 1:made();break;case 2:life();break;case 3:enter();break;case 4:browse();break;case 5:exit(0);}}2、各功能模块设计(1)制卡模块【数据结构】struct credicard{int number;char name[20];char ID[20];char word[8];int flag;float account;int integal;}card[M];/*card[M]中每个数组元素对应一个运动员信息* / 【程序】void made(){int i;char h[20];do{printf("\n\n\t Input your number:<\t\t\t>\b\b\b\b\b\b\b");scanf("%s",h);if(strlen(h)!=6){printf("\n\n\n\t\t***************Wrong!Inputagain****************\n\n");continue;}for(i=0;i<n;i++)if(strcmp(card[i].ID,h)==0){printf("\n\n\t\t***********The number exist,inputagain************\n\n");break;}}while(((strlen(h))!=6)||strcmp(card[i].ID,h)==0);card[n].number=n;strcpy(card[n].name,"***");strcpy(card[n].ID,h);strcpy(card[n].word,"000000");card[n].flag=0;card[n].account=0.00;card[n].integal=0;printf("\n\n\n\t\t********************The card ismade!**********************\n\n");print_one(n);n++;add();menu();}print_one(n):显示一张卡信息的函数。
C语言销售管理系统(链表)
目录一、题目与要求........................................ 错误!未定义书签。
二、需求分析 (2)三、功能实现设计 (2)四、文件附件 (7)五、设计总结(课程设计心得与体会) (7)六、程序源代码 (8)第1页共12页一、题目与要求:1.1某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。
每个销售员都将当日出售的每种产品各写一张便条交上来。
每张便条内容有1、销售员的代号2、产品的代号3、这种产品当天的销售额1.2每位销售员每天可能上缴0-5张便条。
假设手机到了上个月的所有便条,编写一个处理系统,读取上月的销售情况(自己设定),进行如下处理:1、计算上个月没人每种产品的销售额2、按销售额对销售员进行排序,输出排序结果(销售员代号)3、统计每种产品的总销售额,对这些产品从高到低的顺序输出结果(须输出产品的代号和销售额)4、输出统计报表二、需求分析我的程序将会运用文件系统,love.txt文件内容作为程序的数据(便条)。
程序运行后首先将原始数据读取并保存到程序的结构体数组当中,然后再分文别类的统计数据;接着提供显示、排序等操作;本来应提供键盘式选择菜单实现功能选择,不过由于时间的原因,暂时还不能实现。
三、功能实现设计3.1【头文件和预定义】#include<stdio.h>#include<conio.h>#include<stdlib.h>第2页共12页#include<string.h>3.2【功能函数声明】void detail();voidforeach();void menu();void product();voidreaddata();void seller();void show();void choice();3.3【数据结构】原始数据有销售员代号、产品代号和销售额,所以定义一个全局结构体链表,再定义数组sum用于保存分类后的信息。
C++超市管理系统
华南理工大学广州学院2011-2012学年度第二学期课程名称:数据结构作业题目:超市管理系统专业:网络工程年级:2010级姓名:伍灼兴学号:2010388970031 系统概述本系统是一个超市简单管理系统,以菜单为选择,通过调用相关的函数,实现添加、删除、排列、显示等不同功能,同时,本系统采用“链表”的形式,函数的返回只是一个头结点,通过头结点可以找到所有链表中的信息,只要找到头指针就能进行相应的操作,所以模块化的程序方便以后的添加和删除、查询某些功能;至于排序方面,本系统,采用稳定又快捷的排序方法——冒泡排序,根据联系号码的数字顺序进行从小到大排列;程序中通过system(“cls”)清屏函数实现界面的转换,主函数中的循环保证程序不会退出,方便而美观;同时,还利用了字符串复制函数strcpy,作为一个简单的超市管理管理系统,除了完成以上一些基本输入功能外,还增加了文件的读入和写出功能,增强了程序的实用性。
2 程序概要设计●模块1:函数头文件#include<iostream> //包括cin , cout 函数定义#include<fstream> //包括文本文档的读/写/ 函数定义#include<string> //包括类,对象,数组函数定义●模块2:主函数int main()●模块3:子函数▲struct结构体的数据:void SuperMarket::input()//信息输入void SuperMarket::display()//信息输出▲class类的功能:SuperMessage:: SuperMessage()//无参构造函数SuperMessage::~SuperMessage()//析构函数(释放单链表)void SuperMessage::Save()//保存文件void SuperMessage::BubbleSort()//冒泡排序void SuperMessage::Insert()//插入void SuperMessage::Delete()//删除SuperMarket * SuperMessage::Search(char * goodsname)// 查找void SuperMessage::Change()//修改void SuperMessage::Show()//显示2.1 实现功能●函数头调用系统中的相关函数,以确保程序的运行正常。
购物卡管理系统设计(报告源代码)――C语言.
购物卡管理系统【题目要求】设计购物卡管理系统,系统主要模块:(1 实现系统内制卡、发卡功能;(2 实现系统内账户及相关账户管理;(3 实现卡交易和合法性检查;(4 实现卡交易积分功能;(5 实现卡报表功能;(6 数据以文件形式存储。
【提示】制卡:指申请一张购物卡,但还没有使用。
发卡:该购物卡已经启用。
实现卡交易:指从卡中消费掉一定的金额。
一、系统需求分析根据题目要求, 由于数据要以文件形式存储, 所以应提供文件的输入、输出等操作;在程序中要实现银行卡的各项功能,应提供制卡、发卡、存款、消费、查询账户相关信息、查询账户交易记录、查询全部信息、退出程序等一系列操作;另外还应提供键盘式选择菜单实现功能选择。
二、系统总体设计分析了整个系统之后,根据上面的系统需求分析,可以将这个系统的设计分为如下七大模块:制卡、发卡、存款、消费、查询账户相关信息、查询账户交易记录、查询全部信息。
三、系统详细设计1. 主函数设计主函数的设计比较简介,只包括一个菜单函数,主要实现菜单功能, 提供了菜单输入、模块选择、退出系统等模块的调用。
其中各功能模块用菜单方式选择。
【流程图】1N23 【小结】函数开头有“文件包含”的预处理命令,所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。
C 语言提供了 #include命令用来实现“文件包含”的操作。
在本程序中包含了一下头文件:"string.h" 、 "ctype.h" 、 "stdio.h" ,方便调用库函数实现某些功能。
在程序设计中,只使用一些基本类型(或称简单类型的变量(如整型、实型、字符型变量等和构造类型数据——数组,是远远不够的。
有时候需要将不同类型的数据组合成一个有机的整体,以便于引用。
这些组合在一个整体中的数据是相互联系的。
在这个程序中,定义了一个结构体数组来存放购物卡用户的各种信息,包括账户卡号、户主姓名、账户余额、账户状态、账户积分,结构体如下:struct user{int num;/*账户号码 */char name[20];/*户主名称 */float surplus;/*账户余额 */char state[2];/*账户状态, y :已启用, n :未启用 */int point;/*账户积分 */}u[100];同时在各分函数中,定义了 int 、 float 、 char 等一系列变量类型,用来实现函数功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言购物卡管理系统(链表)购物卡管理系统(一)系统主要功能模块:(1)实现系统内制卡、发卡功能。
(2)实现系统内购物卡帐户及相关帐户管理。
(3)实现购物卡交易和合法性检查。
(4)实现购物卡交易积分功能。
(5)实现购物卡报表功能。
(6)数据以文件形式存储。
提示:制卡:指申请一个购物卡,但还没有使用。
发卡:指该卡已经起用。
实现卡交易:指从卡中消费掉一定金额。
(二)题目及要求的分析:根据题目要求,系统应该实现以下功能:(1)制卡:主要是新建出一张购物卡,并输入了顾客部分信息,如姓名、密码等,但卡没有激活,依然不可使用。
(2)发卡:激活新建的购物卡,用户能够使用卡进行各项活动。
(3)消费:进入帐户后,取走少于帐户金额的钱款进行消费,并在帐户少减少相应的金额,增加相应的积分。
(4)存款:进入帐户后,在金额项加上用户要存入的钱款。
(5)报表:显示顾客购物卡上记录的所有信息,除密码外。
(6)存储:购物卡内的信息以文件形式存储。
(7)退出:从系统中退出。
(8)菜单:提供良好的界面,方便用户的操作。
代码:#include <stdio.h>#include<ctype.h> /*调用字符函数*/#include<stdlib.h>#include<conio.h> /*通用输入输出库*/#include<string.h>#include<windows.h>int flag=5;struct card{char name[20];char number[20];float money;char key[10];float jifen;float mid;int power;struct card *next;};save(struct card *head);void list();void jihuo();struct card *chaxun();save(struct card *head){FILE *fp;struct card *q;q=head;if((fp=fopen("e:\\123.txt","ab+"))==NULL) {printf("无法打开\n");exit(0);}while(q!=NULL){if(fwrite(q,sizeof(struct card),1,fp)!=1){printf("文件写入错误!");fclose(fp);return (head);}q=q->next;}fclose(fp);}struct card *save1(struct card *head){FILE *fp;struct card *q;q=head;if((fp=fopen("e:\\123.txt","wb"))==NULL) {printf("无法打开\n");exit(0);}while(q!=NULL){if(fwrite(q,sizeof(struct card),1,fp)!=1){printf("文件写入错误!");fclose(fp);return (head);}q=q->next;}fclose(fp);}struct card *duqu()//读取数据{struct card *head = NULL;struct card *p1, *p2;FILE *fp;if((fp=fopen("e:\\123.txt","rb+"))==NULL){printf("打开文件出错\n");exit(0);}while(!feof(fp)){if((p1=(struct card*)malloc(sizeof(struct card)))==NULL) {printf("something is wrong!\n");fclose(fp);exit(0);}if(fread(p1,sizeof(struct card),1,fp)!=1){free(p1);break;}if(head==NULL)head=p2=p1;else{p2->next=p1;p2=p1;}}fclose(fp);return (head);}struct card *createlist(){struct card *head,*p,*q;int i;char num[20];head=(struct card*)malloc(sizeof(struct card));head->next=NULL;head->money=0;head->jifen=0;system("cls");printf("\n\t\t********************注册购物卡*******************\n\n\n");do{printf("\n\n\t请输入要注册的卡号(六位数): ");scanf("%s",head->number);if(strlen(head->number)!=6){system("cls");printf("\n\n\n\n\n\n\n\n\n\n\t\t\t对不起您的输入有误,请重新输入!\n\n");Sleep(1000);system("cls");printf("\n\t\t********************注册购物卡*******************\n\n\n");continue;}printf("\n\n\t请输入您的名字: ");scanf("%s",head->name);printf("\n\n\t请输入您的密码: ");scanf("%s",head->key);head->power=99;}while(strlen(head->number)!=6);p=head;system("cls");printf("\n\t\t********************注册购物卡*******************\n\n\n");printf("您的购物卡为:\n\n");printf("\n\t姓名卡号余额积分\n\n");printf("\t%2s %16s %13.2f %13.2f",p->name,p->number,p->mo ney,p->jifen);getche();p->next=NULL;save(head);printf("\n\n\n\n\n\n\t\t\t");printf("购物卡注册成功!\n\n\n\n\t\t\t\t按任意键返回.....");getche();}void cost(struct card *q){struct card *p,*a;p=duqu();a=p;while(strcmp(q->number,p->number)!=0){p=p->next;}system("cls");printf("\n\t\t********************账户消费*******************\n\n\n");printf("\n\n\n\n\n\n");printf("\t\t\t请输入您的消费金额:");scanf("%f",&p->mid);(p->money)=(p->money)-(p->mid);(p->jifen)=(p->jifen)+(p->mid);printf("\n\n\t\t\t您的余额为:%.2f",p->money);printf("\n\n\n\n\n\t\t\t显示完毕,按任意键返回子菜单.....");getche();p=a;save1(p);}void cunkuan(struct card *q)struct card *p,*a;p=duqu();a=p;while(strcmp(q->number,p->number)!=0){p=p->next;}system("cls");printf("\n\t\t********************账户存款*******************\n\n\n");printf("\n\n\n\n\n\n");printf("\t\t\t请输入您的存款金额:");scanf("%f",&p->mid);(p->money)=(p->mid)+(p->money);printf("\n\n\t\t\t您的余额为:%.2f",p->money);printf("\n\n\n\n\n\t\t\t显示完毕,按任意键返回子菜单.....");getche();p=a;save1(p);void xiugai(struct card *q){char key[10],num[10];struct card *p,*a;p=duqu();a=p;while(strcmp(q->number,p->number)!=0){p=p->next;}system("cls");printf("\n\t\t********************修改账户密码*******************\n\n\n");printf("\n\n\n\n");printf("\t\t\t请输入您的新密码:");scanf("%s",num);printf("\n\n\t\t\t请再次输入您的密码:");scanf("%s",key);if(strcmp(key,num)!=0){system("cls");printf("\n\t\t********************修改账户密码*******************\n\n\n");printf("\n\n\n\n\n\t\t对不起,两次输入的密码不一样,修改密码失败!");Sleep(1000);system("cls");}if(strcmp(key,num)==0){system("cls");printf("\n\t\t********************修改账户密码*******************\n\n\n");strcpy(p->key,num);printf("\n\n\n\n\n\n\t\t\t修改密码成功!");Sleep(1000);p=a;save1(p);}void chaxun2(struct card *q){struct card *p,*a;p=duqu();a=p;while(strcmp(q->number,p->number)!=0){p=p->next;}system("cls");printf("\n\t\t********************账户查询*******************\n\n\n");printf("\t您的账户信息为:\n\n\n");printf("\n\t\t姓名卡号余额积分\n\n");printf("\t\t%2s %16s %13.2f %13.2f",p->name,p->number,p->mone y,p->jifen);printf("\n");getch();}struct card *chaxun(){int b,i=0;int flag=9;struct card *head;char num[10],key[10];struct card *p,*head1;head1=duqu();p=head1;system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\t请输入您的卡号(六位数): ");scanf("%s",num);while(p!=NULL){if(strcmp(num,p->number)!=0){p=p->next;if(p==NULL){system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t没有该卡号信息,请重新输入!\n\n");Sleep(1000);system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\t请重新输入卡号(六位数): ");scanf("%s",num);p=head1;}continue;}if((p->power)==99){system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t对不起,该卡未激活,请先激活!");getche();system("cls");main();}if(p->power==100){while(flag==9){printf("\n\n\t请输入密码(六位数): ");scanf("%s",key);if(strcmp(key,p->key)==0){flag=10;}if(strcmp(key,p->key)!=0){system("cls");printf("\n\t\t********************账户登陆*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t对不起,密码输入错误%d次!",i+1);flag=9;i++;if(i==3){system("cls");printf("\n\n\n\n\n\n\n\t\t\t密码输入错误三次,系统自动返回主菜单!");Sleep(2000);system("cls");return;}}}if(flag==10)break;}}while(1){system("cls");printf("*****************************************\n");printf(" * *\n");printf(" * 账户查询*\n");printf(" * *\n");printf(" * —————————————————— *\n");printf(" * *\n");printf(" * 1:查询*\n");printf(" * *\n");printf(" * 2:存款*\n");printf(" * *\n");printf(" * 3:消费*\n");printf(" * *\n");printf(" * 4:修改密码*\n");printf(" * *\n");printf(" * 5:返回主菜单*\n");printf(" * *\n");printf("*****************************************\n");printf("\n");printf("\t\t请选择操作: ");scanf("%d",&b);switch(b){case 1:chaxun2(p); break;case 2:cunkuan(p);break;case 3:cost(p);break;case 4:xiugai(p);break;case 5:main();default:printf("对不起,您的输入有误,请重新输入!");}}}void jihuo(){char x;char num[10];struct card *p,*head1;head1=duqu();p=head1;system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\t请输入您要激活的卡号(六位数): ");scanf("%s",num);while(p!=NULL){if(strcmp(num,p->number)!=0){p=p->next;}elsebreak;while(p==NULL){system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\n\n\n\n\n\n\t\t\t没有该卡号信息,请重新输入卡号!\n\n");Sleep(1000);system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\t请重新输入您申请的卡号(六位数): ");scanf("%s",num);p=head1;}}system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("您的购物卡为:\n\n");printf("\n\t姓名卡号余额积分\n\n");printf("\t%2s %16s %13.2f %13.2f",p->name,p->number,p->mo ney,p->jifen);printf("\n\n\n\n\n\t\t\t确认激活您的购物卡? \n\n\t\t\t <1> 是<2> 否");printf("\n\n\t\t\t请选择:");scanf(" %c",&x);switch(x){case '1':system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");p->power=100;save1(head1);printf("\n\n\n\n\n\n\n\t\t\t");printf("激活成功,按任意键返回主菜单.....");getche();break;case '2':system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t");printf("您已放弃激活,按任意键返回主菜单.....");getche();break;default:system("cls");printf("\n\t\t********************激活购物卡*******************\n\n\n");printf("\n\n\n\n\n\n\n\t\t\t");printf("对不起,您的输入有误,请重新输入!");Sleep(2000);}}void list(){struct card *p1;p1=duqu();system("cls");printf("\n\t\t********************显示购物卡*******************\n\n\n");printf("所有购物卡信息为:\n\n\n");printf("\n\t姓名卡号余额积分\n\n");while(p1!=NULL){printf("\t %2s %16s %14.2f %14.2f",p1->name,p1->number,p1 ->money,p1->jifen);printf("\n");p1=p1->next;}}main(){int a;struct *head;printf("\n\n\n\n\n\n\n\n\t\t\t\t");printf(" 欢迎使用");printf("\n\n");printf("\t ******************购物卡管理系统*******************\n");Sleep(1000);system("cls");while(1){printf("\n");printf("*****************************************\n");printf(" * 购物卡管理系统*\n");printf("*****************************************\n");printf(" * 菜单*\n");printf(" * *\n");printf(" * 1:注册*\n");printf(" * *\n");printf(" * 2:激活*\n");printf(" * *\n");printf(" * 3:帐户登录*\n");printf(" * *\n");printf(" * 4:名单*\n");printf(" * *\n");printf(" * 0:退出系统*\n");printf(" * *\n");printf("*****************************************\n");printf("\n");printf("\t\t请选择操作: ");scanf("%d",&a);switch(a){case 1:createlist(head);system("cls");break;case 2:jihuo();system("cls");break;case 3:chaxun();break;case 4:list();printf("\n\n\n\n\t\t\t显示完毕,按任意键返回主菜单....");getche();system("cls");break;case 0:system("cls");printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t");printf(" 感谢您的使用,再见!");printf("\n\n\n\n\n\t\t\t\t\t");Sleep(1000);exit(0);default:system("cls");printf("\n\n\n\t\t\t对不起!您的输入有误!请重新输入。