這是一個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語言的基礎知識