C语言编程图书销售系统,简单的书店图书销售系统求指点

本文档描述了一个简单的书店图书销售系统的功能需求和设计,包括图书入库、销售、库存查询、删除、数据保存和备份等功能。系统使用结构体存储图书信息,并通过键盘输入模拟条码阅读器。图书信息包括书号、书名、作者、单价和库存。系统还提供了友好的用户界面和数据文件的读写操作。此外,文档提供了具体的函数原型,如图书入库、销售、列表展示等,以及文件结构的说明。
摘要由CSDN通过智能技术生成

已结贴√

问题点数:18 回复次数:1

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

简单的书店图书销售系统求指点

1. 功能(需求)分析

书店为了能实现日常的经营,经常涉及到到事物及应该具有的功能是:图书入库(进书采购时)、图书销售、查看图书的库存情况(清单)、图书删除、数据保存、数据备份等功能。

在现实中的商店,商品都具有一个条形码,用来唯一识别商品种类。这是一个重要的数据信息,对于图书来说,就是ISBN号,现实商店中都用条码阅读器来阅读,本实验中条件所限,使用键盘输入书号来模拟条码阅读器。

2. 系统设计

2.0 涉及到的数据结构

    图书信息数据类型,采用结构体,包含了书号、书名、作者、单价、库存数量等核心信息:

typedef struct

{char bkno[10];        /*书号*/

char bkname[20];        /*书名*/

char author[10];        /*作者*/

float price;             /*单价*/

int num;                /*库存数量(单位:册)*/

} BOOK;

    最大数组长度,实验中设置为1000;

#define MAXNUM 1000

    图书书库,用BOOK类型的数组bk保存,每个数组单元代表一种图书,退出系统时应该保存在文件中,为全局数组:   BOOK bk[MANUM];

    图书种类数量,为全局变量,退出系统时应该保存在文件中:

int BKNUM =0;  /*不同图书的数量,初始值为0*/

2.1 图书进库:

采购时,读取条形码(ISBN号),如果该书已经存在(书号已经在数据库中了),直接显示该图书信息,输入数量后,修改书库中的图书数量;如果书号不在书库,则录入该图书详细信息,并添加信息到书库bk数组。

相关函数原型:void bookin()

2.2 图书销售:

如果顾客将购买某本书,营业员读取条形码(ISBN号),系统会告知该书是否在库存清单中,如果不在,显示适当的提示信息;如果在,系统显示该书的详细信息并询问所需的册数。如果库存书的册数不足,显示相应的销售失败的提示信息;册数足够则显示这些书的总价格,此时销售成功,在书库中的册数减去销售的册数。

相关函数原型:void booksail ()

2.3 图书列表:

显示库存中现有的图书,每20行暂停。

相关函数原型:void booklist()

2.4 打开和保存数据文件:

所有图书相关信息都可以保存在磁盘文件(saledata.txt)上,程序开始后,先从数据文件读取数据(到数组),以数组为中心进行图书进、销等操作;所有操作结束后,退出程序时必须把数组数据保存回磁盘文件,并把原数据文件作为备份文件saledata.bak。

相关函数原型:void rdata(),从文件读取数据到bk数组。

void wdata()  保存bk数组的数据到文件,同时备份旧文件。

2.5 友好的界面:

要求有友好的操作界面,以上功能都能在界面中以适当的形式体现并方便地操作。

相关函数原型:  int showsel():清屏并显示功能选项。

2.6 文件结构:

前两字节存放记录个数(即不同书的数量BKNUM),这两个字节之后的内容是每个不同的书具体信息记录(即用来存放bk数组的所有有效数据)

2.7 可以自由发挥,实现其他相关功能,比如图书查询等。(该部分请根据自己的设计进行完善)

——---------------------------------------------------------------------------------------------------------------------

程序如下:

#include "stdio.h"

int bknum;

typedef struct

{

char bkno[10];        /*书号*/

char bkname[20];        /*书名*/

char author[10];        /*作者*/

float price;             /*单价*/

int num;                /*数量(单位:册)*/

} BOOK;

BOOK bk[1000];

rdata()

{

FILE *fp;

if ((fp=fopen("c:\\bkstore\\bookdata.txt","rb"))==NULL)

{printf("Can not open the file!\n");exit(0);}

fread(&bknum,sizeof(int),1,fp);

fread(bk,sizeof(BOOK),bknum,fp);

fclose(fp);

}

wdata()

{

FILE *fp;

if ((fp=fopen("c:\\bkstore\\bookdata.txt","wb"))==NULL)

{printf("Can not open the file!\n");exit(0);}

fwrite(&bknum,sizeof(int),1,fp);

fwrite(bk,sizeof(BOOK),bknum,fp);

fclose(fp);

}

bklist()

{int i;

clrscr();

printf("%-10s%-20s%-10s%-7.2f%5d\n","BKNO","BKName","Author","Price","Num");

printf("---------------------------------------------------------\n");

for(i=0;i

printf("%-10s%-20s%-10s%-7.2f%5d\n",

bk[i].bkno,bk[i].bkname,bk[i].author,bk[i].price,bk[i].num);

getch();

}

bkin()

{BOOK input;

int i,j,k=0;

char ISBN[10];

clrscr();

scanf("%s",ISBN);

for(i=0;i

if(strcmp(bk[i].bkno,ISBN)==0)

{printf("%-10s%-20s%-10s%-7.2f%5d\n", bk[i].bkno,bk[i].bkname,bk[i].author,bk[i].price,bk[i].num);

printf("Please input the datas of the book:\n");

scanf("%s,%s,%s,%f,%d",input.bkno,input.bkname,&input.author,&input.price,&input.num);

bk[i].num+=input.num;

k=1;}

if(k!=1)

{printf("Please input the datas of the book:\n");

scanf("%s,%s,%s,%f,%d",input.bkno,input.bkname,input.author,&input.price,&input.num);

strcpy(bk[bknum].bkno,input.bkno);

strcpy(bk[bknum].bkname,input.bkname);

strcpy(bk[bknum].author,input.author);

bk[bknum].price=input.price;

bk[bknum].num=input.num;

bknum++;}

flushall();getch();

}

bksell()

{char ISBN[10];

int i,j,k=0;

float w;

clrscr();

printf("Input the tiaoxingma of the book:\n");

scanf("%s",&ISBN);

for(i=0;i

if(strcmp(ISBN,bk[i].bkno)==0)

{printf("%s,%s,%s,%f,%d\n",bk[i].bkno,bk[i].bkname,bk[i].author,bk[i].price,bk[i].num);

printf("Please input the numbers of the book:\n");

scanf("%d",&j);

if(j<=bk[i].num)

{w=j*bk[i].price;

printf("the all books' price is:%f\n",w);}

else

printf("it is fail\n");

k=1;}

if(k!=1)

printf("Can not find the kind of book\n");

getch();

}

int showsel()

{

int sel;

clrscr();

printf("        _______________________________________\n");

printf("                    0:Exit\n");

printf("                    1:BOOK LIST\n");

printf("                    2:BOOK IN\n");

printf("                    3:BOOK SELL\n");

printf("        _______________________________________\n");

printf("        Please input the selection:");

scanf("%d",&sel);

return sel;

}

main()

{

int sel=-1;

rdata();

sel=showsel();

while(sel!=-1)

{

switch(sel)

{

case 0:break;

case 1:bklist();break;

case 2:bkin();break;

case 3:bksell();break;

}

sel=showsel();

}

getch();

}

求指点、优化

bd422f732da0d58aad080788c60d05be.gif

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值