| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 548 人关注过本帖
标题:简单的书店图书销售系统求指点
只看楼主 加入收藏
坚强的螺丝
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-13
结帖率:66.67%
收藏
已结贴  问题点数:18 回复次数:1 
简单的书店图书销售系统求指点
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<bknum;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<bknum;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<bknum;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();
}
求指点、优化
搜索更多相关主题的帖子: 条码阅读器 条形码 结构体 键盘 经营 
2014-06-18 10:00
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:18 
只是需要优化吗,程序写的还是可以,注释可以加点

我不是砖家,要努力成为砖家。
2014-06-18 15:21
快速回复:简单的书店图书销售系统求指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069155 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved