c语言图书销售系统(源代码)--精选文档_第1页
c语言图书销售系统(源代码)--精选文档_第2页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <stdio.h>#include <string.h>#include <malloc.h>#include <stdlib.h>#include <time.h>#include <conio.h>#define LEN sizeof(struct book)#define VLEN sizeof(struct vip)#define SLEN sizeof(struct sales)struct vip *vhead=NULL;struct vip *v1,*v2;struct sales *she

2、ad=NULL;struct sales *s1,*s2;int V,S;/*结构体定义*/struct bookchar bnum 12;/*书号*/char bname 41;/*书名*/char author 20;/*作者*/float price;/*书价*/int acount;/*书存在本数*/struct book *next;struct salesfloat count;struct sales *snext;struct vipchar vnum12;char vname41;int level;float persum;float discount;struct vip

3、 *vnext;/*函数声明*/void loadbook();/*自动读入书库信息*/void welcome();/*欢迎界面显示*/void inputbook();/*增加书本信息*/void loadvip();void loadsales(); /*自动录入销售信息*/void daysales(); /*日销售额*/void monthsales(); /*月销售额*/void yearsales(); /*年销售额*/void search();/*查询书数量*/void search_by_bnum();/*通过书号查询*/void search_by_bname();/*通

4、过书名查询*/void search_by_author();/*通过作者查询*/void buy();/*购买书籍*/void list();/*列出书库信息*/void listvip();void listsales(); /*列出销售信息*/void delet();/*删除书目*/void delet_by_bnum();/*通过书号删除*/void delet_by_bname();/*通过书名删除*/void delet_by_author();/*通过作者删除*/void save();/*保存记录*/void redef();/*修改密码*/void bover();/*显示

5、已售完的书*/void buy_by_huiyuan(); /*会员买书*/void buy_by_feihuiyuan(); /*非会员买书*/void exit0();/*退出*/int menu();/*主菜单*/void print2();/*显示查询菜单*/void printdelete();/*显示删除菜单*/struct book *head=NULL,*head2=NULL;/*head和head2分别用于书库的头指针和已购书的头指针*/struct book *p1,*p2,*p3,*p4,*p5,*p6;/*p1、p2、p3用于操作书库图书,p4、p5、p6用于操作已购书

6、*/int save_flag=0;/*图书信息变动标志*/int buy_flag=0;/*买书时,是否调用过查询功能标志*/int shan_flag=0;/*删书时,是否调用过显示已售完书功能标志*/int T=0;/*记录导入的书本数*/char mima11="123456"/*初始密码*/void bookmanage();void salesmanage(); /*销售统计*/int main() /*主函数*/welcome();/*欢迎界面显示*/loadbook();loadsales();loadvip();/*自动导入书库信息*/while(1)sw

7、itch(menu()case 1:system("cls");bookmanage();break;case 2:system("cls");buy();break;case 3:system("cls");listvip();break;case 4:system("cls");salesmanage();break;case 5:system("cls");break;case 0:system("cls");exit0();break;default:printf(&

8、quot;n选择错误,请按主菜单提示输入您的正确选择(08)n");printf("按任意键返回继续:");rewind(stdin);/*清空缓冲区*/getch();return 0;/*菜单*/int menu()int choice;system("cls"); /*系统清屏*/printf("n *主菜单*nn");printf("1.图书管理nn"); printf("2.销售管理nn");printf("3.会员管理nn");printf("

9、4.销售额统计nn");printf("5.说明nn");printf("0.退出nnn");printf("请输入您的选择(08):");rewind(stdin);/*清空缓冲区*/scanf("%d",&choice);return choice;/*返回用户的选择*/void bookmanage() system("cls"); int choice1; do printf(" "); /*显示菜单*/printf(" *图书管理* &q

10、uot;); printf(" ");printf(" ");printf(" 功能选项: n");printf(" 1 : 图书信息录入 n");printf(" 2 : 图书信息浏览 n");printf(" 3 : 图书信息查询 n");printf(" 4 : 图书信息删除 n");printf(" 5 : 图书信息保存 n");printf(" 0 : 返回主界面 n");printf(" &qu

11、ot;);printf("t请选择操作:"); scanf("%d", &choice1); switch (choice1) /*菜单选择*/ case 1 : system("cls");inputbook();break; case 2 : system("cls");list(); break ; case 3 :system("cls");search(); break ; case 4 : system("cls");delet(); break ; ca

12、se 5 : system("cls");save(); break ; case 0 :system("cls");break; while (choice1!=0); printf("n");void welcome() /*欢迎界面显示*/ system("cls");printf("nntt*欢迎使用图书销售管理系统*nn");void loadbook() /*开始导入书库信息*/FILE *fp;struct book *p7;if(fp=fopen("0.txt"

13、;,"r")=NULL) /*打开文件*/printf("nn文件打开失败或文件不存在n");printf("nn按回车键继续:");getchar();return;head=p3=p1=(struct book*)malloc(LEN); /*开辟一个新单元*/p1->next=NULL;p7=(struct book*)malloc(LEN); /*作为一个临时存储空间,避免读取文件最后的回车符*/fscanf(fp,"%s %s %s %f %d",&p7->bnum,&p7-&

14、gt;bname,&p7->author,&p7->price,&p7->acount);while(!feof(fp)T+;*p1=*p7; /*文件没结束就将p7中的信息给p1*/p2=(struct book*)malloc(LEN); /*继续开辟一个新单元,直到文件读完*/p1->next=p2;p3=p1;p1=p2;p1->next=NULL;fscanf(fp,"%s%s%s%f%d",&p7->bnum,&p7->bname,&p7->author,&p

15、7->price,&p7->acount);free(p2); /*释放多申请的一个单元*/p3->next=NULL;printf("nnttt%d项图书信息已经由系统自动载入.nnttt",T);rewind(stdin);/*清空缓冲区*/if(fclose(fp)printf("文件关闭失败!n");exit(0);void salesmanage() system("cls"); int choice4; do printf(" "); /*显示菜单*/printf("

16、 *销售统计* "); printf(" ");printf(" ");printf(" 功能选项: n");printf(" 1 : 日销售额 n");printf(" 2 : 月销售额 n");printf(" 3 : 年销售额 n");printf(" 0 : 返回主界面 n");printf(" ");printf("t请选择操作:"); scanf("%d", &cho

17、ice4); switch (choice4) /*菜单选择*/ case 1 : system("cls");daysales();break; case 2 : system("cls");monthsales(); break ; case 3 :system("cls");yearsales(); break ; case 0 :system("cls");break; while (choice4!=0); printf("n");void loadsales() /*开始导入销售信息

18、*/FILE *vfp;if(vfp=fopen("sales.txt","r")=NULL) /*打开文件*/printf("nnttt销售数据文件打开失败或文件不存在nn");return;shead=s2=s1=(struct sales*)malloc(VLEN);while(!feof(vfp)S+;fscanf(vfp,"%f ",&s2->count);s1=(struct sales*)malloc(VLEN); s2->snext=s1;s2=s1;s1=NULL;s2->

19、;snext=NULL;free(s2);printf("nnttt项销售信息已经由系统自动载入.nnnnttt",S);rewind(stdin);/*清空缓冲区*/if(fclose(vfp)printf("文件关闭失败!n");exit(0);void daysales()void monthsales()void yearsales()void listsales()s2=shead;printf("nntt *当前销售信息*n");printf("nn 销售额 nn");while(s2->coun

20、t!=NULL)printf("%f",s2->count);s2=s2->snext;(s2->snext)=s2=NULL;printf("n");printf("销售信息列出完毕,按回车键返回子菜单:");rewind(stdin);/*清空缓冲区*/getchar();system("cls"); void loadvip() /*开始导入会员信息*/FILE *vfp;if(vfp=fopen("1.txt","r")=NULL) /*打开文件*/

21、printf("nnvip数据文件打开失败或文件不存在n");printf("nn按回车键继续:");getchar();return;vhead=v2=v1=(struct vip*)malloc(VLEN);while(!feof(vfp)V+;fscanf(vfp,"%s %s %d %f %f",&v2->vnum,&v2->vname,&v2->level,&v2->persum,&v2->discount);v1=(struct vip*)malloc(

22、VLEN); v2->vnext=v1;v2=v1;v1=NULL;v2->vnext=NULL;free(v2);printf("nnttt%d项会员信息已经由系统自动载入.nnnnttt按任意键显示主菜单:",V);rewind(stdin);/*清空缓冲区*/getchar();if(fclose(vfp)printf("文件关闭失败!n");exit(0);void listvip()v2=vhead;if(v2=NULL|V=0)/*文件不存在或书库中没书*/printf("nnnntttt当前书库没书!");p

23、rintf("nntt按回车键返回:");rewind(stdin);/*清空缓冲区*/getchar();return;elseprintf("nntt *当前书库信息*n");printf("nn会员号 姓名 等级 会员总消费 会员折扣nn");while(v2->discount!=NULL)printf("%-18s%-10s%-5d %-6.2f %-5fn",v2->vnum,v2->vname,v2->level,v2->persum,v2->discount);v

24、2=v2->vnext;printf("n");printf("会员信息列出完毕,按回车键返回子菜单:");rewind(stdin);/*清空缓冲区*/getchar();system("cls"); void buy() system("cls"); /*系统清屏*/ int choice1; do printf(" "); /*显示菜单*/printf(" *销售管理* "); printf(" ");printf(" ")

25、;printf(" 功能选项: n");printf(" 1 : 会员购买 n");printf(" 2 : 非会员购买 n");printf(" 0 : 返回主界面 n");printf(" ");printf("t请选择操作:"); scanf("%d", &choice1); switch (choice1) /*菜单选择*/ case 1 : system("cls");buy_by_huiyuan();break; c

26、ase 2 : system("cls");buy_by_feihuiyuan(); break ; case 0 :system("cls");break; while (choice1!=0); printf("n");void buy_by_huiyuan()/*会员买书*/ time_t timep;char vipnum6; struct tm *p; time(&timep); p = gmtime(&timep);char bnum11;char ch;int i=0;float sum=0;/*保存所购

27、买书的总费*/v1=vhead;printf("nnnnnnnnnnnttt请输入会员号码:");scanf("%s",vipnum);while(v1!=NULL)if(strcmp(vipnum,v1->vnum)=0)break;else v1=v1->vnext;if(v1=NULL)printf("对不起,你所输入的会员号不存在");if(p1=NULL|T=0)/*文件不存在或书库中没书*/printf("nnnnnnnnnntttt当前书库没书!");printf("nntttt

28、按任意键返回:");rewind(stdin);/*清空缓冲区*/getch();return;p5=p4=head2=(struct book*)malloc(LEN);p4->next=NULL;system("cls");printf("nntt收费标准:一级会员打9折 二级会员打8折nnttt三级会员打7折 四级会员打6折 ");doprintf("nn请输入所需购买的书的书号(图书编号):");/*书号唯一*/rewind(stdin);/*清空缓冲区*/gets(bnum);p1=head;while(p1

29、!=NULL)if(strcmp(p1->bnum,bnum)=0)break;else p1=p1->next;if(p1=NULL)system("cls");printf("nnnnnnnnnnt 没有找到该书信息,可能书号输入有误,是否再次输入书号?nn");printf("nnttt Y.是 N.否");rewind(stdin);/*清空缓冲区*/ch=getchar();if(ch='y'|ch='Y')system("cls");buy_flag=1;/*

30、防止在此函数中调用时,search()函数执行了清屏*/search();/*调用查询,通过其他途径确定书号*/while(1)printf("nnttt提示:若没有您要找的书,可按0结束!");printf("nntttt请重新输入书号:");rewind(stdin);/*清空缓冲区*/gets(bnum);if(strcmp(bnum,"0")=0) break;/*没有需要的书,结束输入书号*/p1=head;while(p1!=NULL)if(strcmp(p1->bnum,bnum)=0) break;else p1

31、=p1->next;if(p1!=NULL) break;system("cls");if(p1!=NULL) if(p1->acount=0) printf("nntttt该书已售完!");while(p1!=NULL)if(strcmp(p1->bnum,bnum)=0)/*有相同书号,循环提前结束*/break;else p1=p1->next;if(p1!=NULL&&p1->acount!=0)*p4=*p1;sum=sum+p4->price;p5=(struct book*)malloc(

32、LEN);p4->next=p5;p6=p4;p4=p5;p4->next=NULL;i+;/*记录买的本数i,*/p1->acount=p1->acount-1;/*减去售过的书(本数)*/p4=head2;system("cls");printf("nnt*当前已选购书状态*");printf("nn书号 书名作者 售价 数量 总费nn");while(p4->next!=NULL)/*显示已买过的书*/printf("%-15s%-25s%-15s %.2f %d %.2fn",

33、p4->bnum,p4->bname,p4->author,p4->price,p4->acount,sum);p4=p4->next;printf("nntt 提示:可按N结束购书,按任意键继续购书:");rewind(stdin);/*清空缓冲区*/ch=getchar();system("cls");while(ch!='n'&&ch!='N');/*结束购书*/free(p4);p5->next=NULL;if(head2->next=NULL) pr

34、intf("nnnnnnnnnntttt您当前没有购书!nn");elseprintf("nnnnnnnnnnttt 确认购买这%d本书吗?n",i);printf("nnttt 按任意键确认,按N撤销购书:");/*不想购买时,亦可撤销*/rewind(stdin);/*清空缓冲区*/ch=getchar();if(ch='n'|ch='N')for(p4=head2;p4!=NULL;p4=p4->next)for(p1=head;p1!=NULL;p1=p1->next)if(strc

35、mp(p1->bnum,p4->bnum)=0)p1->acount=p1->acount+1; /*书未销售,本数加上*/printf("nntttt 撤销完毕!");elseprintf("nnttt您所购买的书的总费(打折前)为%.2fnn",sum);printf("nnttt你的会员等级为%d级,可以享受%.1f折.nn",v1->level,(v1->discount)*10);printf("购买书本的折后价为%.2f.nn",(v1->discount)*s

36、um);save_flag=1;/*书库信息变动标志*/printf("%d.%d.%dn", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday);rewind(stdin);/*清空缓冲区*/printf("nnttt 按回车键返回主菜单");getchar();void buy_by_feihuiyuan()/*非会员买书*/char bnum11;char ch;int i=0;float sum=0;/*保存所购买书的总费*/p1=head;if(p1=NULL|T=0)/*文件不存在或书

37、库中没书*/printf("nnnnnnnnnntttt当前书库没书!");printf("nntttt按任意键返回:");rewind(stdin);/*清空缓冲区*/getch();return;p5=p4=head2=(struct book*)malloc(LEN);p4->next=NULL;doprintf("nn请输入所需购买的书的书号(图书编号):");/*书号唯一*/rewind(stdin);/*清空缓冲区*/gets(bnum);p1=head;while(p1!=NULL)if(strcmp(p1->

38、;bnum,bnum)=0)break;else p1=p1->next;if(p1=NULL)system("cls");printf("nnnnnnnnnnt 没有找到该书信息,可能书号输入有误,是否再次输入书号?nn");printf("nnttt Y.是 N.否");rewind(stdin);/*清空缓冲区*/ch=getchar();if(ch='y'|ch='Y')system("cls");buy_flag=1;/*防止在此函数中调用时,search()函数执行

39、了清屏*/search();/*调用查询,通过其他途径确定书号*/while(1)printf("nnttt提示:若没有您要找的书,可按0结束!");printf("nntttt请重新输入书号:");rewind(stdin);/*清空缓冲区*/gets(bnum);if(strcmp(bnum,"0")=0) break;/*没有需要的书,结束输入书号*/p1=head;while(p1!=NULL)if(strcmp(p1->bnum,bnum)=0) break;else p1=p1->next;if(p1!=NUL

40、L) break;system("cls");if(p1!=NULL) if(p1->acount=0) printf("nntttt该书已售完!");while(p1!=NULL)if(strcmp(p1->bnum,bnum)=0)/*有相同书号,循环提前结束*/break;else p1=p1->next;if(p1!=NULL&&p1->acount!=0)*p4=*p1;sum=sum+p4->price;p5=(struct book*)malloc(LEN);p4->next=p5;p6=

41、p4;p4=p5;p4->next=NULL;i+;/*记录买的本数i,*/p1->acount=p1->acount-1;/*减去售过的书(本数)*/p4=head2;system("cls");printf("nnt*当前已选购书状态*");printf("nn书号 书名作者 售价 数量 总费nn");while(p4->next!=NULL)/*显示已买过的书*/printf("%-15s%-25s%-15s %.2f %d %.2fn",p4->bnum,p4->bnam

42、e,p4->author,p4->price,p4->acount,sum);p4=p4->next;printf("nntt 提示:可按N结束购书,按任意键继续购书:");rewind(stdin);/*清空缓冲区*/ch=getchar();system("cls");while(ch!='n'&&ch!='N');/*结束购书*/free(p4);p5->next=NULL;if(head2->next=NULL) printf("nnnnnnnnnntt

43、tt您当前没有购书!nn");elseprintf("nnnnnnnnnnttt 确认购买这%d本书吗?n",i);printf("nnttt 按任意键确认,按N撤销购书:");/*不想购买时,亦可撤销*/rewind(stdin);/*清空缓冲区*/ch=getchar();if(ch='n'|ch='N')for(p4=head2;p4!=NULL;p4=p4->next)for(p1=head;p1!=NULL;p1=p1->next)if(strcmp(p1->bnum,p4->b

44、num)=0)p1->acount=p1->acount+1;/*书未销售,本数加上*/printf("nntttt 撤销完毕!");elseprintf("nnttt您所购买的书的总费为%.2fnn",sum);save_flag=1;/*书库信息变动标志*/rewind(stdin);/*清空缓冲区*/printf("nnttt 按回车键返回主菜单");getchar();void search()/*查询书库信息*/int choice;p1=head;if(p1=NULL|T=0)/*文件不存在或书库中没书*/pr

45、intf("nnnntttt当前书库没书!");printf("nntt按任意键返回:");rewind(stdin);/*清空缓冲区*/getch();system("cls");return;while(1)printf("n *查询方式*nn");printf("1.通过书号查找nn");printf("2.通过书名查找nn");printf("3.通过作者查找nn");printf("0.退出图书查询nn");printf(&q

46、uot;nn请选择一种查询方式(03):");rewind(stdin);/*清空缓冲区*/scanf("%d",&choice);while(choice<0|choice>3)system("cls");print2();/*调用显示查询方式菜单*/printf("nttt输入错误!nn");printf("ttt请重新输入:");rewind(stdin);/*清空缓冲区*/scanf("%d",&choice);switch(choice)case 1:system("cls");search_by_bnum();break;case 2:system("cls");search_by_bname()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论