書店管理系統---不完善

這是一個C語言寫的書店管理系統

主要缺點:0,不能保存數據,每次重新運行,數據會刷新;

    1,收銀時會發生問題



#include "stdio.h"
#include "stdlib.h"
#include "string.h"


struct book{
char isdn[10];
char name[10];
char author[10];
char press[20];
int price;
int num;
}bookRecord[100];




//選擇操作
int operate;




//書類的總量
int count = 0;


//採購管理
void add(){

   /*
   int i;


   for( i = 0;i<=1;i++){
        printf("\t\t\t輸入條碼:");
scanf("%s",bookRecord[i].isdn);


printf("\t\t\t輸入名稱:");
scanf("%s",bookRecord[i].name);


printf("\t\t\t輸入作者:");
scanf("%s",bookRecord[i].author);


printf("\t\t\t輸入出版社:");
scanf("%s",bookRecord[i].press);


printf("\t\t\t輸入價格:");
scanf("%d",&bookRecord[i].price);


printf("\t\t\t輸入數量:");
scanf("%d",&bookRecord[i].num);
}
*/


for (;;) 
{

char exit;
int i = count;


int j = 0;


//書存在時的退出標誌
int flage = 0;


printf("\t\t\t輸入條碼:");
scanf("%s",bookRecord[i].isdn);


//查找該書是否存在
/*
** 先必須有一本書,所以j = 1;此時count=0;因此不進行判斷,之後count自增,開始判斷
*/
for ( j = 1; j < count+1; j++ ) {

int add = 0;


//判斷時從bookRecord[0]開始
//當isbn相同時,表示同一類書籍
if ( strcmp( bookRecord[j-1].isdn , bookRecord[i].isdn) == 0 )
{
flage = 1;
printf("\t\t\t作者:%s\n",bookRecord[j-1].author );
printf("\t\t\t出版社:%s\n",bookRecord[j-1].press );
/*
if ( strcmp( bookRecord[j-1].press , bookRecord[i].press) == 0 )
{
flage = 1;
printf("\t\t\t條碼:%s\n",bookRecord[j-1].isdn );
printf("\t\t\t作者:%s\n",bookRecord[j-1].author );
printf("\t\t\t價格:%d\n",bookRecord[j-1].price );


//輸入數量
printf("\t\t\t輸入出版社:");

//修改出版社
scanf("%d",&bookRecord[j-1].press);


break;
}
*/


printf("\t\t\t價格:%d\n",bookRecord[j-1].price );


//輸入數量
printf("\t\t\t輸入數量:");
//scanf("%d",&bookRecord[j-1].num);
scanf("%d",&add);
//求和
bookRecord[j-1].num += add;
break;
}
}


if (flage==1) {
break;
}



//如果有這本書直接顯示名稱,作者,出版社,並提示輸入


printf("\t\t\t輸入名稱:");
scanf("%s",bookRecord[i].name);


printf("\t\t\t輸入作者:");
scanf("%s",bookRecord[i].author);


printf("\t\t\t輸入出版社:");
scanf("%s",bookRecord[i].press);


printf("\t\t\t輸入價格:");
scanf("%d",&bookRecord[i].price);






printf("\t\t\t輸入數量:");
scanf("%d",&bookRecord[i].num);


count++;


printf("\t\t\t輸入n結束輸入:");





//清空輸入緩衝區
fflush(stdin);
exit = getchar();


if (exit == 'n' || exit == 'N' ) {
break;
}
}


}


//顯示
void show(){
int i;
printf("\t\t條碼\t名稱\t作者\t出版社\t價格\t庫存\n");
printf("\t\t----------------------------------------\n");
    for(i = 0;i<count;i++){
       printf("\t\t%s\t%s\t%s\t%s\t%d\t%d\n",bookRecord[i].isdn,bookRecord[i].name,
bookRecord[i].author,bookRecord[i].press,bookRecord[i].price,bookRecord[i].num);
}
}




//查詢書籍
//查詢界面菜單
void findmenue() {
printf("\t\t*************************************\n");
printf("\t\t\t歡迎進入查詢系統\n");
printf("\t\t\t請輸入下列選項中的一種:\n");
printf("\t\t\t1.條碼\n");
printf("\t\t\t2.名稱\n");
printf("\t\t\t3.作者\n");
printf("\t\t\t4.出版社\n");
//printf("\t\t\t5.價格");
printf("\t\t*************************************\n");
}


void find() {


char input[10];
int j;
int flage;
//清屏
//while (1) {
system("cls");
findmenue();


printf("\t\t\t您的輸入:");
scanf("%s",input);
//printf("%s",input);
printf("\t\t條碼\t名稱\t作者\t出版社\t價格\t庫存\n");
for ( j = 1; j < count+1; j++ ) {


//判斷時從bookRecord[0]開始
/************不完善的解決方法*************************


if ( ( strcmp( bookRecord[j-1].isdn , input ) == 0 ) || ( strcmp( bookRecord[j-1].name , input ) == 0 ) || 
( strcmp( bookRecord[j-1].author , input ) == 0 )|| ( strcmp( bookRecord[j-1].press , input ) == 0 )) {
printf("\t\t條碼\t\t名稱\t\t作者\t\t出版社\t\t價格\t\t庫存\n");
printf("\t\t----------------------------------------\n");
printf("\t\t%s\t%s\t%s\t%s\t%d\t%d\n",bookRecord[j-1].isdn,bookRecord[j-1].name,bookRecord[j-1].author,
bookRecord[j-1].press,bookRecord[j-1].price,bookRecord[j-1].num);
}


************/


if ( ( strstr( bookRecord[j-1].isdn , input ) != NULL ) || ( strstr( bookRecord[j-1].name , input ) != NULL ) || 
( strstr( bookRecord[j-1].author , input ) != NULL )|| ( strstr( bookRecord[j-1].press , input ) != NULL )) {
printf("\t\t------------------------------------------\n");
printf("\t\t%s\t%s\t%s\t%s\t%d\t%d\n",bookRecord[j-1].isdn,bookRecord[j-1].name,bookRecord[j-1].author,
bookRecord[j-1].press,bookRecord[j-1].price,bookRecord[j-1].num);
}


}
// }


}
//編輯


//編輯界面菜單
void modifymenue() {
system("cls");
printf("\t\t*************************************\n");
printf("\t\t\t歡迎進入編輯系統\n");
// printf("\t\t*************************************\n");
// printf("\t\t\t輸入圖書的信息:\n");
printf("\t\t*************************************\n");


}


void modify(){
char modifyIsbn[10];
int j;
int modifyFlage = 0;
modifymenue();


printf("\t\t\t輸入書籍條碼:");
fflush(stdin);
scanf( "%s", modifyIsbn);


for ( j = 1; j < count+1; j++ ) {
if ( strcmp( bookRecord[j-1].isdn, modifyIsbn) == 0 ) {


printf("\t\t條碼\t名稱\t作者\t出版社\t價格\t庫存\n");
printf("\t\t%s\t%s\t%s\t%s\t%d\t%d\n",bookRecord[j-1].isdn,bookRecord[j-1].name,bookRecord[j-1].author,
bookRecord[j-1].press,bookRecord[j-1].price,bookRecord[j-1].num);


printf("\t\t\t輸入書籍的名稱:");
fflush(stdin);
scanf( "\t\t\t%s", bookRecord[j-1].name );


printf("\t\t\t輸入書籍的作者:");
fflush(stdin);
scanf( "%s", bookRecord[j-1].author );


printf("\t\t\t輸入書籍的出版社:");
fflush(stdin);
scanf( "%s", bookRecord[j-1].press );


printf("\t\t\t輸入書籍的價格:");
fflush(stdin);
scanf( "%d", &bookRecord[j-1].price );


printf("\t\t\t輸入書籍的庫存:");
fflush(stdin);
scanf( "%d", &bookRecord[j-1].num );

modifyFlage = 1;
}


if (modifyFlage == 1) {
break;
}
}




}


//收銀
//收銀界面菜單*
void saleMenue() 
{
printf("\t\t*************************************\n");
printf("\t\t\t歡迎進入收銀系統\n");
printf("\t\t*************************************\n");

}


void sale(){
int saleFlage=0;
char saleInput[10];
int i,j;
//商品的下標
int goodsIndex[10];


int index = 0;
//每種商品的數量
int goodsNumber[10];


char exitSale;
//合計
int sum = 0;


//實收現金
int cash = 0;
saleMenue();


while ( 1 ) {


printf("\t\t\t請輸入條碼:");
fflush(stdin);
scanf("%s",saleInput);


for ( j = 0; j < count; j++ ) {


if (strcmp (bookRecord[j].isdn, saleInput) == 0 ) {

saleFlage = 1;
goodsIndex[index] = j;
printf("%d", goodsIndex[index] );
printf("\t\t\t請輸入數量:");
scanf("%d", &goodsNumber[index] );

//判斷庫存量
if ( goodsNumber[index] > bookRecord[j].num ) {
goodsNumber[index] = bookRecord[j].num;
printf("\t\t\t請查詢存量!%d");
modify();


}




printf("%d", goodsNumber[index] );
//num++;
index++;
}
}


printf("\t\t\t輸入n結束輸入:");
//清空輸入緩衝區
fflush(stdin);
exitSale = getchar();


if (exitSale == 'n' || exitSale == 'N' ) {
break;
}


}





//找到,開始計算
if (saleFlage == 1) {
//計算總價額
printf("\t\t條碼\t名稱\t價格\t數量\t金額\n");
printf("\t\t----------------------------------------\n");
for ( i = 0; i < index; i++ ) {
sum += ( bookRecord[goodsIndex[i]].price * goodsNumber[i] );
   printf("\t\t%s\t%s\t%d\t%d\t%d\n",bookRecord[i].isdn,bookRecord[i].name,bookRecord[i].price, goodsNumber[i], ( bookRecord[goodsIndex[i]].price * goodsNumber[i] ));
//printf("\t\t\t應付金額:%d * %d\n", bookRecord[i].price, goodsNumber[i], ( bookRecord[goodsIndex[i]].price * goodsNumber[i] ) );
}


printf("\t\t\t合計:%d\n", sum );


printf("\t\t\t實收現金:");
scanf("%d", &cash);
fflush(stdin);
printf("\t\t\t找零:%d\n", (cash-sum) );




//收錢後更新倉庫
for ( i = 0; i < index; i++ ) {
bookRecord[goodsIndex[i]].num -= goodsNumber[i];
}

}




}




void menu(){
printf("\t\t*************************************\n");
printf("\t\t*                                   *\n");
printf("\t\t*         書店業務管理系統          *\n");
printf("\t\t*                                   *\n");
printf("\t\t*************************************\n");
printf("\t\t\t1.採購管理\n");
printf("\t\t\t2.顯示書籍\n");
printf("\t\t\t3.查詢書籍\n");
printf("\t\t\t4.修改書籍\n");
printf("\t\t\t5.收銀\n");
printf("\t\t\t6.退出系統\n");
printf("\t\t*************************************\n");
printf("\t\t\t請選擇操作:");
scanf("%d",&operate);
}




void main(){
while(1){
//清屏
system("cls");
        menu();
if(operate == 6){
break;
}
switch(operate){
case 1:add();break;
case 2:show();break;
case 3:find();break;
case 4:modify();break;
case 5:sale();break;


}
printf("\t\t\t按回車鍵返回主菜單:");
//清空輸入緩衝區
fflush(stdin);
/*
           接收鍵盤的輸入,返回從鍵盤接收的字符
  scanf("%c",)
        */
getchar();
}


這是一個C語言小項目,主要是練習C語言的基礎知識

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章