版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程序設(shè)計(jì)說明書
(圖書銷售管理系統(tǒng))
圖書銷售系統(tǒng):程序代碼
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
structbook
charISBN[50];//ISBN號
charname[50];〃圖書名稱
floatprice;〃價(jià)格
intstoreO;〃最初書店中的庫
存
intstore;〃當(dāng)前存貨量
intsale;〃銷售量
chardiscount;〃是否促銷
structbook*next;〃單鏈表中指向下
一結(jié)構(gòu)體首地址的指針
);
intn;〃圖書數(shù)量,需要在
錄入時(shí)從文件第一行讀取
staticstructbook*bklist,bk[100];〃圖書單鏈表的首地址,和圖書數(shù)組
intjudge(chara[])//要考慮到輸入非數(shù)字的的影響,若輸入的是正確的非
負(fù)整數(shù)則返回該數(shù),否則返回-L在main函數(shù)中,將輸入容轉(zhuǎn)化為字符串
(
inti,b,trns;
if(a[O]=='O'&&a[l]!='\O')
(
printf("請輸入正整數(shù)或0。");
return-1;
}//I:排出輸入容中第一個(gè)字符為'O',之后還有別的容的情況
for(i=0;a[i]!='\0';i++)
(
b=a[i];
if((b<48)||(b>57))
(
printf(”請輸入正整數(shù)或0o\n\n");
return-1;
}//2:若含數(shù)字外的字符,則返回,說明用戶輸入有
誤
)
甘ns=atoi(a);〃排除了1、2的情況后,將字符串轉(zhuǎn)化為整型數(shù),將該整型數(shù)返
回
returntrns;
)
voidshow(structbook*k)〃用于顯示圖書的相關(guān)信息
(
fprintf(stdout,"%-25s%-10.2f%-5d%-10d%-5c%-30s\n\n",k->ISBN,k->price,k->
store,k->sale,k->discount,k->name);
)
voidordershow(constcharorder[])〃用于提示用戶當(dāng)前所在的命令操作界面
printf("\n\n---------------------------%s---------------------------------\n\n\n",or
der);
)
voidcolumn(void)〃用于顯示圖書信息表格的表頭
(
printf("ISBN號價(jià)格庫存銷售量是否促銷書名\n");
structbook*create(FILE*p)
(
structbook*mylist,*tempnode,*cursor;inti;
mylist=(structbook*)malloc(sizeof(structbook));
if(mylist==NULL)
{printf("errorl");exit(l);)
mylist->next=NULL;
cursor=mylist;
fscanf(p,"%cT,&n);
for(i=0;i<n;i++)
(
tempnode=(structbook*)malloc(sizeof(structbook));
if(tempnode二二NULL)
{printf("errorl");exit(l);}
tempnode->next=NULL;
fscanf(pz"%s%f%d%d%c",tempnode->ISBNl&(tempnode->price)z&(tempnode-
>storeO),&(tempnode->store)/&(tempnode->discount));
fgets(tempnode->name/30,p);
tempnode->sale=tempnode->storeO-tempnode->store;
strcpy(bk[i].ISBN/tempnode->ISBN);strcpy(bk[i].name/tempnode->name);
bk[i].price=tempnode->price;
bk[i].storeO=tempnode->storeO;bk[i].store=tempnode->store;
bk[i].sale=tempnode->sale;
bk[i].discount=tempnode->discount;〃容錄入數(shù)組,數(shù)組是全局的,無需
返回
cursor->next=tempnode;
cursor=tempnode;
)〃創(chuàng)建單鏈表,對數(shù)據(jù)進(jìn)行錄入,同時(shí)錄入數(shù)組
cursor=NULL;tempnode=NULL;
returnmylist;〃返回單鏈表首地址
)
voidfreellist(structbook*head)
(
structbook*ptr;
while(head!=NULL)//遍歷鏈表
(
ptr=head;
head=head->next;//指向下一節(jié)點(diǎn)
ptr->next=NULL;
free(ptr);//釋放結(jié)構(gòu)體
)
)
intsearch(char*1)
(
structbook*booksearch;
for(booksearch=bklist->next;booksearch!=NULL;booksearch=booksearch->next)
if(strcmp(l,booksearch->ISBN)==0)
column();
show(booksearch);
booksearch=NULL;
return0;
)
)
printf("抱歉,沒有找到相應(yīng)的圖書。\n\n");
booksearch=NULL;
return1;
}〃利用單鏈表進(jìn)行ISBN查找
voidkeyword(chara[])
(
inti,j,k;
intlength/lengthi/flag=O/flagl=O,temp/tempO;
length=strlen(a);〃關(guān)鍵詞的長度
flag=O;flagl=O;
column();
for(i=0;i<n;i++)
lengthi=strlen(bk[i].name);
for(j=0;j+length<lengthi;j++)
for(k=0;k<length;k++)
(
temp=a[k];tempO=bk[i].name[j+k];
flag+=(tempO-temp)*(tempO-temp);
)
if(flag==O)
(
flagl++;show(&bk[i]);break;
)
elseflag=O;
)
)
if(flagl==O)printf("抱歉,沒有找到相應(yīng)的圖書。\n\n");
}〃關(guān)鍵詞查找:查找結(jié)果為書名中包含查找容(作為整體)的相應(yīng)書籍的全部容
voidbubblesort(void)
(
inti;
structbook*a,*b,*c;
ordershow(,銷量由高到低排序");
for(i=0;i<n;i++)
for(a=bklist;a->next->next!=NULL;a=a->next)
(
b=a->next;c=b->next->next;
if(b->sale<b->next->sale)
(
a->next=b->next;
a->next-〉next=b;
b->next=c;
)
)
column();
for(c=bklist->next;c!=NULL;c=c->next)
(
show(c);
)
c=NULL;b=NULL;a=NULL;
)〃用單鏈表進(jìn)行冒泡排序,打印出按照銷量由高到低的排行榜
voidselectsort(structbooka[])
intijmin;
structbook*pb[50],*tempb;
ordershow("價(jià)格由低到高排行)
for(i=0;i<n;i++)
pb[i]=&a[i];
for(i=0;i<n;i++)
(
min=i;
for(j=i;j<n;j++)
(
if(pb[min]->price>pb[j]->price)
min=j;
)
tempb=pb[i];pb[i]=pb[min];pb[min]=tempb;
)
column();
for(i=0;i<n;i++)
show(pb[i]);
tempb=NULL;
for(i=0;i<49;i++)
pb[i]=NULL;
)〃對圖書數(shù)組進(jìn)行選擇排序,打印出圖書價(jià)格由低到高的排行榜
voidinsertsort(structbooka[])
intij;
structbook*tempcf*pc[50];
ordershow(”庫存由低到高排行)
for(i=0;i<n;i++)
pc[i]=&a[i];
for(i=l;i<n;i++)
(
tempc=pc[i];
for(j=i-l;(j>=0)&&(tempc->store<pc[j]->store);j-)
pc[j+l]=pc[j];
pc[j+l]=tempc;
)
column();
for(i=0;i<n;i++)
show(pc[i]);
tempc=NULL;
for(i=0;i<49;i++)
pc[i]=NULL;
)〃對圖書數(shù)組進(jìn)行選擇排序,打印出圖書庫存由低到高的排行榜
voidmain()
FILE*p;
inti,op,operat,booknum;
charISBN0[100],buy[100],back[100],str[100];〃從左到右依次為:查詢圖書的ISBN
碼,購買圖書的ISBN碼,退還圖書的ISBN碼,接受用戶輸入的操作命令的字符數(shù)組。
void(*oper[2])(structbooka[]);〃指向函數(shù)的指針,用于控制選擇排序和插入排序
函數(shù)
structbook*bookp;〃用于單鏈表操作的指針
if((p=fopen("圖書.txt","r"))==NULL)〃打開文件,為了防止中途關(guān)閉程序?qū)е挛?/p>
件截為0的情況,首先以可讀式打開
(
printf("文件打開失敗!\n");return;
)〃判斷文件是否打開成功
bklist=create(p);〃創(chuàng)建了一個(gè)單鏈表,對磁盤文件進(jìn)行存儲(chǔ)
rewind(p);〃文件指針返回到文件開頭,便于之后的操作
/〃〃〃/〃/〃/〃〃〃/〃/〃/〃〃初始選擇模式〃〃/〃/〃〃〃/〃/〃/〃〃〃/〃/〃/〃/〃//
while(l)
(
printf("\n你好,歡迎使用圖書銷售管理系統(tǒng),請選擇您想要進(jìn)行的操作\n\n圖書查
詢請按1;圖書排行請按2;圖書購買請按3;退貨請按4;\n\n退出程序請按0或者直接
按回車鍵。\n\n輸入數(shù)字后以回車鍵結(jié)束\n");
fflush(stdin);gets(str);
op=judge(str);
if(op==-l)
continue;〃如果有非數(shù)字字符,繼續(xù)循環(huán),重新輸入
if(op==0)〃輸入0或者直接按回車時(shí),op=0,結(jié)束程序
(
printf("\n\n感您的使用!\n\n\n");break;
)〃程序出口
if((op!=l)&&(op!=2)&&(op!=3)&&(op!=4)&&(op!=0))〃輸入整數(shù)要為
0,1,2,3,4中的一個(gè)
(
printf("輸入操作有誤,請輸入0-4的某一個(gè)數(shù)字,以回車鍵結(jié)束\n\n");
continue;
)〃用于處理用戶輸入中可能出現(xiàn)的錯(cuò)誤,這一部分可以實(shí)現(xiàn)的是:當(dāng)
用戶只有輸入0,123,4中的一個(gè)數(shù)字再回車或者直接回車時(shí),才可以跳出循環(huán)
///〃〃/〃/〃//〃/〃/〃/〃〃〃/〃/圖書查詢〃//〃〃///〃〃/〃/〃/〃/〃〃〃//〃〃//〃/〃/〃//
while(op==l)
(
ordershow("圖書查詢");
printf(”請輸入圖書的ISBN號(若查詢所有圖書信息請按0,若使用關(guān)鍵詞查
找請按l)\n輸入完成后以回車鍵結(jié)束。\n");
fflush(stdin);gets(ISBNO);〃進(jìn)行圖書查詢的操
作
if(strcmp(ISBNO,"O")==O)
ordershow("所有圖書信息)
column();
for(i=0;i<n;i++)
show(&bk[i]);
)〃輸出全部圖書信息
elseif(strcmp(ISBN0,"1")==0)
(
ordershow("關(guān)鍵詞查詢");
printf(”請輸入關(guān)鍵詞:(直接按回車鍵可查詢所有圖書)\n");
fflush(stdin);gets(str);
keyword(str);〃進(jìn)行關(guān)鍵詞查詢
)〃輸入?;騎時(shí),程序認(rèn)為是進(jìn)行全部圖書查詢或關(guān)鍵詞查
詢
else
(
ordershow("ISBN查找");
search(ISBNO);//ISBN查詢
while(l)
printf("繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入
數(shù)字后以回車鍵結(jié)束。\n");
fflush(stdin);gets(str);
operat=judge(str);
if(((operat-l)==0)||(operat==O))break;
printf(”輸入容有誤\n\n");
〃判斷輸入是否正確,正確輸入后才可以跳出循環(huán)。
if(operat==l)
operat=0;continue;〃繼續(xù)查詢
if(operat==0)break;〃退出查詢
//〃/〃/〃/〃〃〃/〃/〃/〃/〃//〃//排行查詢〃/〃/〃/〃/〃/〃/〃/〃〃/〃/〃//
while(op==2)
ordershow("排行查詢)
printf(”按銷量由高到低排序請按1;按價(jià)格由低到高排序請按2;按庫存
量由低到高排序請按3;\n\n結(jié)束排行查詢請按0或者直接按回車鍵;輸入數(shù)字后以回車
鍵結(jié)束。\n\n");
fflush(stdin);gets(str);
operat=judge(str);
if(operat==-l)continue;
if((operat!=l)&&(operat!=2)&&(operat!=3)&&(operat!=0))
(
printf("輸入操作有誤,請輸入0-3的某一個(gè)整數(shù),輸入數(shù)字后
以回車鍵結(jié)束。\n\n");
continue;
)〃輸入錯(cuò)誤提醒
if(operat==0)break;
if(operat==l)
(
bubblesortO;〃冒泡排序
)
else
(
oper[0]=selectsort;
oper[l]=insertsort;〃利用指向函數(shù)的
指針控制
oper[operat-2](bk);
)
while(l)
printf("繼續(xù)排行查詢請按1;結(jié)束排行查詢請按0或者直接按
回車鍵。輸入數(shù)字后以回車鍵結(jié)束\n");
fflush(stdin);gets(str);
operat=judge(str);
if(operat==-l)continue;
if(((operat-l)==0)||(operat==0))break;
printf("輸入容有誤,請輸入0-1的某一個(gè)整數(shù),輸入數(shù)字后以
回車鍵結(jié)束。\n\n");
)〃判斷輸入是否正確,正確輸入后才可以跳出此循環(huán)。
if(operat==l)continue;〃繼續(xù)查詢排行
榜
if(operat==0)break;〃結(jié)束查詢排行
榜
}
///〃/〃/〃/〃/〃/〃〃〃〃/〃/〃購買圖書////〃/〃/〃/〃/〃/〃/〃/〃/〃/〃/〃//
while(op==3)
(
ordershow("購買圖書");
printf("請輸入您需要購買圖書的ISBN號,以回車鍵結(jié)束;結(jié)束購
買請輸入0,以回車結(jié)束。\n");
fflush(stdin);gets(buy);
if(strcmp(buy,"O")==O)break;
for(i=0;i<n;i++)
(
if(strcmp(bk[i].ISBN,buy)==O)break;
)〃判斷判斷存書的ISBN碼中是否與有輸入的ISBN碼
相同的
if(i==n)
(
printf("您所查找的圖書不存在,請重新輸入
\n\n");continue;
)〃沒有則1=11,重新輸入
if(i<n)
(
column();
show(&bk[i]);〃有該圖書則將該圖書的信息打印在屏幕
上
while(l)
(
printf("繼續(xù)購買請輸入1,返回上一界面請輸入
0或者直接按回車鍵,以回車鍵結(jié)束\n");
fflush(stdin);gets(str);
operat=judge(str);
if(operat==-l)continue;
if(operat!=l&&operat!=0)
(
printf("請輸入0-1的數(shù)字以回車鍵結(jié)
束\n\n");
continue;〃輸入錯(cuò)誤容的提示
)
elsebreak;
)
if(operat==0)continue;〃返回購買圖書的ISBN輸入
界面
)
while(l)
(
if(bk[i].store==0)
(
printf("圖書已售空,請購買其他排行靠前的圖書\n\n");break;
)〃圖書售空提示
if(bk[i].store<4)〃圖書余量較少的提示
printf("此圖書庫存不超過3本,請盡快購買\n\n");
printf("請輸入您需要購買的數(shù)量(請輸入正整數(shù),若不購買輸入0或者直接按回車鍵)\n");
fflush(stdin);gets(str);
booknum=judge(str);
if(booknum==-l)continue;〃防止輸入了字母或其他符號被強(qiáng)制轉(zhuǎn)化為整型數(shù)而引發(fā)
的錯(cuò)誤
if(bk[i].store<booknum)
(
printf("此圖書庫存不足,圖書庫存%d本
\n\n請重新輸入購買數(shù)量\n",bk[i].store);
continue;〃圖書庫存不足的提示
)
bk[i].sale+=booknum;
bk[i].store-=booknum;〃對數(shù)組中數(shù)據(jù)的更改
for(bookp=bklist->next;bookp!=NULL;bookp=bookp->next)
(
if(strcmp(buy,bookp->ISBN)==0)
(
bookp->sale+=booknum;
bookp->store-=booknum;
)
)〃對單鏈表中圖書數(shù)據(jù)的更改
printf("已完成操作!\n\n");break;
)
)
//〃/〃/〃/〃〃〃/〃/〃/〃退還圖書〃/〃〃/〃/〃〃〃/〃/〃/〃/〃/〃/〃〃/〃/〃/〃/〃/
while(op==4)
(
ordershow("退還圖書");
printf(”請輸入您需要退還圖書的ISBN號,以回車鍵結(jié)束;結(jié)束退
還請輸入0,以回車結(jié)束。\n");
fflush(stdin);gets(back);
if(strcmp(back,"O")==O)break;
for(i=0;i<n;i++)
(
if(strcmp(bk[i].ISBN,back)==O)break;
)
if(i==n)
(
printf("您所退還的圖書不存在,請重新輸入
\n\n");continue;
)
if(i<n)
show(&bk[i]);
while(l)
printf。是否需要重新查詢?繼續(xù)退還請輸入1,
返回上一界面請輸入0或者直接按回車鍵,以回車鍵結(jié)束\n)
fflush(stdin);gets(str);
operat=judge(str);
if(operat==-l)continue;
if(operat!=l&&operat!=0)
printf(”請輸入0-1中的某一整數(shù),以回
車鍵結(jié)束\n\n)
continue;
)
elsebreak;
)
if(operat==0)continue;
)
while(l)
printf("請輸入您需要退還的數(shù)量(請輸入正整數(shù),
若不退還輸入0或者直接按回車鍵,以回車鍵結(jié)束)\n");
fflush(stdin);gets(str);
booknum=judge(str);
if(booknum==-l)continue;〃退還圖書的以
上程序與購買圖書的對應(yīng)程序相似,故不詳述
if(bk[i].sale-booknum<0)
(
printf("退貨數(shù)量應(yīng)在0和%d之間,請仔
細(xì)檢查數(shù)量。\n\n",bk[i].sale);continue;
)〃如果顧客的退貨數(shù)量超過了銷售量,那么顧客可能弄錯(cuò)了退貨數(shù)量(有可能把不是
本書店賣出的書退還了)
bk[i].sale-=booknum;
bk[i].store+=booknum;
for(bookp=bklist->next;bookp!=NULL;bookp=bookp->next)
(
if(strcmp(back,bookp->ISBN)==0)
(
bookp->sale-=booknum;
bookp->store+=booknum;
)
)〃更改數(shù)組和單鏈表中的相應(yīng)數(shù)據(jù)
printf("已完成操作!\n\n");break;
)
)
)〃從這里跳出循環(huán),開始保存數(shù)據(jù)
fclose(p);p=NULL;〃關(guān)閉文件。由于最初文件是以可讀式打開的,不能更改容
if((p=fopen("圖書.txt","w"))==NULL)
(
printf("文件打開失敗!\n");return;
)〃以可寫的式打開文件
fprintf(p,"%d\n",n);〃首先在第一行錄入圖書數(shù)量
for(i=0;i<n;i++)
fprintf(p,"%s%,2f%d%d%c%s",bk[i].ISBN,bk[i].price,bk[i].storeO,bk[i].store,bk
[i].discount,bk[i].name);
rewind(p);〃錄入每一本圖書的相關(guān)信息,將指針指向文件開頭
fclose(p);p=NULL;〃關(guān)閉文件,文件指針指空
freellist(bklist);〃將單鏈表的指針賦空并釋放單鏈表中的存
oper[0]=NULL;oper[l]=NULL;〃將指向函數(shù)的指針賦空
一、概述
本程序?yàn)閳D書銷售管理系統(tǒng),實(shí)現(xiàn)圖書的查找、排序、購買、退貨等功能,并將數(shù)據(jù)存
入磁盤文件中保存。
本程序?yàn)閃in32開發(fā)的控制臺(tái)應(yīng)用程序,在VisualStdio2012下完成。本程序的特
點(diǎn)是功能完整、界面友好(請?jiān)谶\(yùn)行程序時(shí)將窗口寬度調(diào)節(jié)到至少160\防錯(cuò)誤功能較完
姜
[=10
二、程序設(shè)計(jì)思路
本圖書銷售管理系統(tǒng)主要完成的功能有:
1、圖書查詢
1.1ISBN查詢1.2關(guān)鍵詞查詢1.3所有圖書信息查詢
2、排行查詢
2.1銷量排行2.2庫存排行2.3價(jià)格排行
3、圖書購買
3.1ISBN檢索圖書3.2購買圖書的信息顯示和購買確認(rèn)3.3購買數(shù)據(jù)存入
4、圖書退還
4.1購買圖書的信息顯示和購買確認(rèn)4.2購買數(shù)據(jù)存入
為實(shí)現(xiàn)這些功能,本程序一共編寫了11個(gè)函數(shù)分別實(shí)現(xiàn)上述功能。如下:
函數(shù)名功能
judge判斷輸入容是否為0或者正整數(shù);是則返回該正整數(shù),否則返回-1
show顯示圖書所有信息
ordershow對界面進(jìn)行分欄;使界面清晰友好;提示用戶當(dāng)前所在的操作界面
column顯示圖書信息的表頭欄
create創(chuàng)建儲(chǔ)存圖書信息的單鏈表,同時(shí)將圖書信息儲(chǔ)存在另一結(jié)構(gòu)體數(shù)組中
freellist釋放單鏈表的存,指針賦空
search利用單鏈表進(jìn)行ISBN查找圖書;找到則輸出圖書信息,否則給出提示
keyword關(guān)鍵詞查詢:顯示書名完整包含關(guān)鍵詞的圖書信息
bubblesort利用單鏈表進(jìn)行冒泡排序,使銷量由高到低排序顯示
selectsort利用數(shù)組進(jìn)行選擇排序,使價(jià)格由低到高排行顯示
insertsort利用數(shù)組進(jìn)行插入排序,使庫存由低到高排行顯示
將程序進(jìn)行模塊化處理是十分有益的。模塊化后,程序顯得更加清晰;出錯(cuò)后可以分塊
解決"更于多次實(shí)現(xiàn)同一功能。
本程序?qū)Υ疟P數(shù)據(jù)的讀取和儲(chǔ)存是利用了鏈表和結(jié)構(gòu)體數(shù)組的。在創(chuàng)建鏈表的同時(shí)對全
局的數(shù)組變量賦值。在實(shí)現(xiàn)功能時(shí),部分功能是對鏈表進(jìn)行操作,部分功能時(shí)對數(shù)組進(jìn)行操
作。在購買和退還操作時(shí),鏈表和數(shù)組數(shù)據(jù)的更改是同時(shí)的。最后讀取數(shù)組的信息進(jìn)入文件,
保存到磁盤中
實(shí)現(xiàn)這一系統(tǒng),除了對功能的實(shí)現(xiàn)和對數(shù)據(jù)的讀取、更改、儲(chǔ)存外,對錯(cuò)誤的提醒和隱
患的避免也是十分重要的。本系統(tǒng)中有對文件打開錯(cuò)誤的提醒,對動(dòng)態(tài)空間的釋放和指針的
賦空。本程序中對操作容正誤的判斷是這樣進(jìn)行的:為了避免用戶輸入容中存在空格引起錯(cuò)
誤,本程序使用while循環(huán),利用fflush(sdtin);gets(charaD?對所有數(shù)據(jù)進(jìn)行讀取的。這
樣消除了緩沖區(qū)的回車,并將用戶輸入的一行所有容讀入(用scanf就會(huì)在出現(xiàn)空格之后停
止),并用judge函數(shù)進(jìn)行判斷。將0或正整數(shù)正確輸出,并將含有其他任無關(guān)字符的輸入
視為錯(cuò)誤,輸出-1(但是當(dāng)直接回車時(shí),judge函數(shù)會(huì)輸出0X這樣就可以實(shí)現(xiàn)只對用戶
的正確容進(jìn)行讀取后退出循環(huán);對錯(cuò)誤容給出提示,并利用while循環(huán)返回上一操作界面。
由于不同的功能的實(shí)現(xiàn)需要排除用戶可能輸入的不同錯(cuò)誤,所以main函數(shù)中的大量容對用
戶輸入容的正確讀入和錯(cuò)誤提醒。
此外,本程序在開始打開文件”圖書.txt"時(shí),是以可讀式打開的。以防止原始數(shù)據(jù)由
于程序的意外關(guān)閉而丟失。在程序末尾,在關(guān)閉文件后重新以可寫式打開文件,并對數(shù)據(jù)重
新讀入。這樣可以防止大量圖書信息丟失。
當(dāng)然,本程序還有一些缺陷。由于所開的字符串?dāng)?shù)組的大小限制,用戶輸入容不能超過
100個(gè)字符,否則程序出現(xiàn)錯(cuò)誤。此外,若在程序運(yùn)行中途關(guān)閉程序,則購買和退還圖書的
信息會(huì)全部丟失。改進(jìn)的式是將程序的讀取放在每一次購買和退貨操作之后進(jìn)行。
三、變量說明
變量意義
FILE*p指向磁盤文件的指針
structbook*bookpmain函數(shù)中用于單鏈表操作的指針
intn圖書種類數(shù)
structbook*bklist儲(chǔ)存圖書信息的單鏈表首地址
structbookbk[100]儲(chǔ)存圖書信息的數(shù)組
intop主操作變量(控制進(jìn)入某一主要功能)
intoperat次操作變量(控制主要功能下的次要功能)
intbooknumber購買或者退還的圖書數(shù)量
inti計(jì)數(shù)使用
charISBNO[lOO]查詢圖書的ISBN號
charbuy[100]購買圖書的ISBN號
charback[100]退還圖書的ISBN號
charstr[100]臨時(shí)儲(chǔ)存用戶輸入信息的字符數(shù)組
void(*oper[2])(structbooka[])排序操作時(shí)使用的指向函數(shù)的指針數(shù)組
四、流程圖
見文件"程序流程圖jpg”,由于流程圖較大,放于word中難以清晰顯示,造成不便
請見諒。
五、測試數(shù)據(jù)
加粗黑體為輸入的測試數(shù)據(jù),宋體為程序顯示容,正體為本人添加的注釋。
以下是程序測試容和相應(yīng)的注釋:
你好,歡迎使用圖書銷售管理系統(tǒng),請選擇您想要進(jìn)行的操作
圖書查詢請按1;圖書排行請按2;圖書購買請按3;退貨請按4;
退出程序請按0或者直接按回車鍵。
輸入數(shù)字后以回車鍵結(jié)束
12323〃輸入錯(cuò)誤信息
請輸入正整數(shù)或0。
你好,歡迎使用圖書銷售管理系統(tǒng),請選擇您想要進(jìn)行的操作
圖書查詢請按1;圖書排行請按2;圖書購買請按3;退貨請按4;
退出程序請按0或者直接按回車鍵。
輸入數(shù)字后以回車鍵結(jié)束
1
------------------------圖書查詢-----------------------------
請輸入圖書的ISBN號(若查詢所有圖書信息請按0,若使用關(guān)鍵詞查找請按1)
輸入完成后以回車鍵結(jié)束。
1123〃直接用scant就會(huì)進(jìn)入關(guān)鍵詞查
找,
而本程序在輸入后可以識(shí)別錯(cuò)誤
---------------------------ISBN查找----------------------------
抱歉,沒有找到相應(yīng)的圖書。
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
w23d2d2311〃輸入錯(cuò)誤
請輸入正整數(shù)或0。
輸入容有誤
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
1
------------------------圖書查詢-----------------------------
請輸入圖書的ISBN號(若查詢所有圖書信息請按0,若使用關(guān)鍵詞查找請按1)
輸入完成后以回車鍵結(jié)束。
0〃查詢所有圖書
------------------------所有圖書信息----------------------------
ISBN號價(jià)格庫存銷售量是否促銷書名
978-7-302-16568-229.80982Y簡明物理化學(xué)
978-7-04-024384-017.39355N計(jì)算機(jī)文化基礎(chǔ)
720-8-02-364615-015.00050N鄧小平傳
711-3-01-061004-514.00470Y科學(xué)革命的結(jié)構(gòu)
978-7-302-16434-239.8028N大學(xué)化學(xué)
978-7-04-02111-018.39391N程序設(shè)計(jì)基礎(chǔ)
720-8-02-12345-017.00446N毛澤東傳
711-3-01-061224-524.001210Y科學(xué)革命
978-7-302-16128-239.80595N物理化學(xué)
978-7-04-022224-017.39319N計(jì)算機(jī)
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
12ww〃輸入錯(cuò)誤
請輸入正整數(shù)或0。
輸入容有誤
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
1
------------------------圖書查詢-----------------------------
請輸入圖書的ISBN號(若查詢所有圖書信息請按0,若使用關(guān)鍵詞查找請按1)
輸入完成后以回車鍵結(jié)束。
711-3-01-061224-5//ISBN查詢
---------------------------ISBN查找----------------------------
ISBN號價(jià)格庫存銷售量是否促銷書名
711-3-01-061224-524.001210Y科學(xué)革命
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
wsn1〃輸入錯(cuò)誤
請輸入正整數(shù)或0。
輸入容有誤
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
1
------------------------圖書查詢-----------------------------
請輸入圖書的ISBN號(若查詢所有圖書信息請按0,若使用關(guān)鍵詞查找請按1)
輸入完成后以回車鍵結(jié)束。
1
------------------------關(guān)鍵詞查詢-----------------------------
請輸入關(guān)鍵詞:(直接按回車鍵可查詢所有圖書)
傳〃以"傳"作為關(guān)鍵詞查詢
ISBN號價(jià)格庫存銷售量是否促銷書名
720-8-02-364615-015.00050N鄧小平傳
720-8-02-12345-017.00446N毛澤東傳
〃得到上述包含"傳"的兩本書
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
1
------------------------圖書查詢-----------------------------
請輸入圖書的ISBN號(若查詢所有圖書信息請按0,若使用關(guān)鍵詞查找請按1)
輸入完成后以回車鍵結(jié)束。
1
------------------------關(guān)鍵詞查詢----------------------------
請輸入關(guān)鍵詞:(直接按回車鍵可查詢所有圖書)
明物〃只要是輸入字符串包含在書名中的書都符合要求
ISBN號價(jià)格庫存銷售量是否促銷書名
978-7-302-16568-229.80982Y簡明物理化學(xué)
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
1
------------------------圖書查詢-----------------------------
請輸入圖書的ISBN號(若查詢所有圖書信息請按0,若使用關(guān)鍵詞查找請按1)
輸入完成后以回車鍵結(jié)束。
1
------------------------關(guān)鍵詞查詢----------------------------
請輸入關(guān)鍵詞:(直接按回車鍵可查詢所有圖書)
是hZiwyh1〃輸入沒有的關(guān)鍵詞
ISBN號價(jià)格庫存銷售量是否促銷書名
抱歉,沒有找到相應(yīng)的圖書。
繼續(xù)查詢請按1;結(jié)束查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束。
0〃退出查詢
你好,歡迎使用圖書銷售管理系統(tǒng),請選擇您想要進(jìn)行的操作
圖書查詢請按1;圖書排行請按2;圖書購買請按3;退貨請按4;
退出程序請按0或者直接按回車鍵。
輸入數(shù)字后以回車鍵結(jié)束
2〃進(jìn)入排行
------------------------排行查詢----------------------------
按銷量由高到低排序請按1;按價(jià)格由低到高排序請按2;按庫存量由低到高排序請按3;
結(jié)束排行查詢請按0或者直接按回車鍵;輸入數(shù)字后以回車鍵結(jié)束。
1230〃輸入錯(cuò)誤
請輸入正整數(shù)或0。
------------------------排行查詢----------------------------
按銷量由高到低排序請按1;按價(jià)格由低到高排序請按2;按庫存量由低到高排序請按3;
結(jié)束排行查詢請按0或者直接按回車鍵;輸入數(shù)字后以回車鍵結(jié)束。
1〃銷量排行
------------------------銷量由高至!J低排序----------------------------
ISBN號價(jià)格庫存銷售量是否促銷書名
978-7-302-16128-239.80595N物理化學(xué)
720-8-02-364615-015.00050N鄧小平傳
720-8-02-12345-017.00446N毛澤東傳
711-3-01-061224-524.001210Y科學(xué)革命
978-7-04-022224-017.39319N計(jì)算機(jī)
978-7-302-16434-239.8028N大學(xué)化學(xué)
978-7-04-024384-017.39355N計(jì)算機(jī)文化基礎(chǔ)
978-7-302-16568-229.80982Y簡明物理化學(xué)
978-7-04-02111-018.39391N程序設(shè)計(jì)基礎(chǔ)
711-3-01-061004-514.00470Y科學(xué)革命的結(jié)構(gòu)
繼續(xù)排行查詢請按1;結(jié)束排行查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束
12wqs〃輸入錯(cuò)誤
請輸入正整數(shù)或0。
繼續(xù)排行查詢請按1;結(jié)束排行查詢請按0或者直接按回車鍵。輸入數(shù)字后以回車鍵結(jié)束
1
------------------------排行查詢----------------------------
按銷量由高到低排序請按1;按價(jià)格由低到高排序請按2;按庫存量由低到高排序請按3;
結(jié)束排行查詢請按0或者直接按回車鍵;輸入數(shù)字后以回車鍵結(jié)束。
2〃價(jià)格排行
------------------------價(jià)格由低到高排行----------------------------
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 21年環(huán)境影響評價(jià)工程師考試真題7章
- 2021-2022學(xué)年吉林省高中學(xué)校物理高一下期末復(fù)習(xí)檢測試題含解析
- 2021-2022學(xué)年湖南省永州市祁陽縣第一中學(xué)物理高一下期末綜合測試模擬試題含解析
- 2021-2022學(xué)年湖南明德中學(xué)物理高一第二學(xué)期期末監(jiān)測模擬試題含解析
- 福建省龍巖市第四中學(xué)2023-2024學(xué)年高三上學(xué)期第一次質(zhì)量檢測數(shù)學(xué)試題(無答案)
- 外研新版七年級下冊《Module 10 A holiday journey Unit 3 Language in use》同步練習(xí)卷
- 外研新版八年級下冊《完閱專項(xiàng)中考特訓(xùn)》同步練習(xí)卷
- 人教新版九年級下冊《第12章 化學(xué)與生活》單元測試卷(三)
- 地理中考人教版模擬題庫
- 人教版鴻門宴教學(xué)設(shè)計(jì)教學(xué)反思
- 朋友借車免責(zé)協(xié)議
- IT行業(yè)檔案管理制度的軟件開發(fā)與源代碼管理
- 寵物露營項(xiàng)目創(chuàng)業(yè)計(jì)劃書
- 有中國特色的社會(huì)主義道路教案及反思
- 石英砂 二氧化硅含量的測定 重量法
- 實(shí)驗(yàn)室安全教育:規(guī)范操作確保實(shí)驗(yàn)安全
- 消費(fèi)者行為學(xué)案例匯編
- 企業(yè)執(zhí)行力與員工責(zé)任心培訓(xùn)
- 角的平分線 單元作業(yè)設(shè)計(jì)
- 招標(biāo)代理機(jī)構(gòu)服務(wù)投標(biāo)方案
- 四年級上冊書法教學(xué)設(shè)計(jì)-5.王字旁|北師大版
評論
0/150
提交評論