版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、#include #include #include#pragma comment(lib, winmm.lib)#include/?/HANDLE hConsole;/*全局變量*/Music#define MMM e:Music#define MP3 .mp3/結(jié)構(gòu)體中分量數(shù)組#define MAXTITL 20#define MAXAUTL 20#define MAXCATE 20#define MAXTIME 20#define MAXHOUS 20#define MAXID 20#define MAXDAY 20#define MAXMUSI 20#define MAX 20 /各分
2、量長度中的最大值/文件名#define FILENAME e:bookinformation.txt /全部圖書信息#define FILEBOOKIN e:bookin.txt /入庫圖書信息#define FILEBOOKOUT e:bookout.txt/出庫圖書信息/子函數(shù)聲明void music1( char *); /打開關(guān)聯(lián)音樂void closemusic1( char *); /關(guān)閉關(guān)聯(lián)音樂int Return(); /返回上一菜單int insert_record( char *fileName, void *newRecord, int recordLength );/存
3、盤/*錄入圖書信息*/int inputId( char *stringId); /ID錄入int inputTitle( char *stringTitle ); /書名錄入int inputAuthor( char *stringAuthor ); /作者錄入int inputCate( char *stringCate ); /書籍類型錄入int inputTime( char *stringTime ); /出版社錄入int inputHouse( char *stringHOUS ); /出版時間錄入int findRecord_bk_Id( char *fileName, char
4、 *bk_title, struct book *bk ); /以Id為關(guān)鍵字在bookinformation文件中查找是否已存在相關(guān)信息/*修改圖書信息*/void edit_record(); /修改(主)int updata_record( char *fileName, char *newRecord, int recordNo, int recordLength ); /修改(子):將修改過的信息寫入文件int T_Edit( char *stringTitle ); /輸入要修改信息的的書的名字,并在文件中查找是否已存在該書的相關(guān)信息int edit_Title( char *se
5、arcTitle, char *alter, int RecNo ); /修改書名int edit_Author( char *searcTitle, char *alter, int RecNo ); /修改作者int edit_Cate( char *searcTitle, char *alter, int RecNo ); /修改分類int edit_House( char *searcTitle, char *alter, int RecNo ); /修改出版社int edit_Time( char *searcTitle, char *alter, int RecNo ); /修改出
6、版日期/*刪除圖書信息*/void dele_main();/刪除的主函數(shù)int T_Dele( char *stringTitle ); /輸入要刪除信息的的書的名字,并在文件中查找是否已存在該書的相關(guān)信息int delete_record( char *fileName, int recordNo, int recordLength ); /刪除的子函數(shù),將要刪除的信息刪除掉/*查詢圖書信息*/查詢主函數(shù)void search_main(); void searchBook(); /以 書 名 為關(guān)鍵字查詢 void searchAuthor(); /以 作 者 為關(guān)鍵字查詢 void s
7、earchCate(); /以 類 型 為關(guān)鍵字查詢 void searchHouse(); /以 出版社 為關(guān)鍵字查詢 void searchId(); /以 I D 為關(guān)鍵字查詢 int getid( char *fileName, char *bk_id, struct book *bk ); /查詢 I D 是否在文件中是否已經(jīng)存在int gettitle( char *fileName, char *bk_title, struct book *bk ); /查詢 書 名 是否在文件中是否已經(jīng)存在int getauthor( char *fileName, char *bk_auth
8、or, struct book *bk, int booknumber ); /查詢 作 者 是否在文件中是否已經(jīng)存在int getcategorie( char *fileName, char *bk_categorie, struct book *bk ); /查詢 類 型 是否在文件中是否已經(jīng)存在int gethouse( char *fileName, char *bk_house, struct book *bk ); /查詢 出版社 是否在文件中是否已經(jīng)存在/*流水賬*/流水賬主函數(shù)void water_main();void bookIn(); /書籍入庫void bookOut
9、(); /書籍出庫int inputDay( char *stringDay); /日期錄入/流水查詢主函數(shù)void search_watermain();int search_wId(); /以 I D 為關(guān)鍵字查詢int search_wDay(); /以 日期 為關(guān)鍵字查詢int findRecord_w_Id( char *fileName, char *w_id, struct water *w ); /以Id為關(guān)鍵字在出入庫文件中查找是否已存在相關(guān)信息int findRecord_w_Day( char *fileName, char *w_Day, struct water *w
10、 ); /以Day為關(guān)鍵字在出入庫文件中查找是否已存在相關(guān)信息/*錄入結(jié)構(gòu)體*/struct book /圖書信息char idMAXID;char titleMAXTITL;char authorMAXAUTL;char categorieMAXCATE;char timeMAXTIME;int stock;char houseMAXHOUS;char musicMAXMUSI;struct water /流水賬char dayMAXDAY;char IdMAXID;char titleEnterMAXTITL;int InOut; /入(出)庫量;/定位void gotoxy(int x,
11、 int y) COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(hConsole, coord); /111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111/1111111111111111111111111111111111111111111111111111111111111111111111111111111111
12、11111111111111111111111111111111111111111111/ID錄入int inputId( char *stringId )int iFlag = 0;while( 1 )if( *stringId = q )iFlag = 999;break;else if( strlen( stringId ) 0 & strlen( stringId ) 0 & strlen( stringTitle ) 0 & strlen( stringAuthor ) 0 & strlen( stringCate ) 0 & strlen( stringHouse ) 0 & st
13、rlen( stringTime ) 0 & strlen( stringMusic ) = MAXMUSI )iFlag = 1;break;elsebreak;return( iFlag );/存盤/* 自己編寫的插入新記錄的通用函數(shù)* 函數(shù)名:insert_record()* 輸入?yún)?shù):* char *fileName 文件名* char *newRecord 要修改記錄的內(nèi)容* int recordLength 單個記錄的長度* 返回值:修改記錄成功,返回 0;失敗,返回 -1。*/int insert_record( char *fileName, void *newRecord,
14、int recordLength )int iret = 0, flag = 0;FILE *fp;/調(diào)用標準函數(shù),打開文件if( ( fp = fopen( fileName, a+ ) ) = NULL )printf( Open File %s Error, fileName );flag = -1;return( flag );/調(diào)用標準函數(shù),將結(jié)構(gòu)體中的變量,寫入文件iret = fwrite( newRecord, recordLength, 1, fp );if( iret = 0 )printf( Insert File error. ErrorCode %d filename
15、%s, iret, fileName );flag = -1;fclose( fp );return( flag );fclose( fp );return( 0 );/錄入主函數(shù)void addbook()int iRet = 0 ;int iFlag = 0;char choice2;struct book bk;system(cls);while( 1 )memset( &bk, 0x00, sizeof( struct book ) );printf(返回至菜單(q));printf (n請輸入ID:);do /ID錄入*scanf(%s, bk.id);iRet = inputId(
16、 bk.id ); /判斷Id錄入是否成功if( iRet = 1 )printf(合格!n);break;else if( iRet = 999 )break;elseprintf(輸入錯誤,請重新輸入:);while( iRet != 1 );if( iRet = 999 )system(cls);break; /ID錄入結(jié)束*printf (n請輸入書名:); /書名錄入*do scanf(%s, bk.title);iRet = inputTitle( bk.title ); /判斷書名錄入是否成功if( iRet = 1 )printf(合格!n);break;else if( iR
17、et = 999 )break;elseprintf(輸入錯誤,請重新輸入:);while( iRet != 1 );if( iRet = 999 )system(cls);break; /書名錄入結(jié)束* printf (n請輸入作者:); /作者錄入*doscanf(%s, bk.author);iRet = inputAuthor( bk.author ); /判斷作者錄入是否成功if( iRet = 1 )printf(合格!n);break;else if( iRet = 999 )break;elseprintf(輸入錯誤,請重新輸入:);while( iRet != 1 );if(
18、 iRet = 999 )system(cls);break; /作者錄入結(jié)束*printf (n請輸入書籍種類:); /種類錄入*do scanf(%s, bk.categorie);iRet = inputCate( bk.categorie ); /判斷種類錄入是否成功if( iRet = 1 )printf(合格!n);break;else if( iRet = 999 )break;elseprintf(輸入錯誤,請重新輸入:);while( iRet != 1 );if( iRet = 999 )system(cls);break; /種類錄入結(jié)束*printf (n請輸入書的出版
19、時間:); /出版時間錄入*do scanf(%s, bk.time);iRet = inputTime( bk.time ); /判斷出版時間錄入是否成功if( iRet = 1 )printf(合格!n);break;else if( iRet = 999 )break;elseprintf(輸入錯誤,請重新輸入:);while( iRet != 1 );if( iRet = 999 )system(cls);break; /出版時間錄入結(jié)束*printf (n請輸入書的出版社:); /出版社錄入*do scanf(%s, bk.house);iRet = inputHouse( bk.h
20、ouse ); /判斷出版社錄入是否成功if( iRet = 1 )printf(合格!n);break;else if( iRet = 999 )break;elseprintf(輸入錯誤,請重新輸入:);while( iRet != 1 );if( iRet = 999 )system(cls);break; /出版社錄入結(jié)束*printf (n請輸入書的庫存:); /庫存錄入*scanf(%d, &bk.stock);printf(n是否要(添加相關(guān)音頻Y/N):);while(1)scanf(%s, &choice);if( choice1 =0)if( choice0 !=Y & c
21、hoice0 !=y & choice0 !=N & choice0 !=n)printf( 輸入錯誤,請輸入 Y 或者 N !n);continue;else if( choice0 = N | choice0 = n)break;else if( choice0 = Y | choice0 = y)iFlag = 1;break;elseprintf( 輸入錯誤,請輸入 Y 或者 N !n);while( iFlag = 1 )printf (n請輸入書的相關(guān)音頻:); /相關(guān)音頻錄入*do scanf(%s, bk.music);iRet = inputMusic( bk.music )
22、; /判斷相關(guān)音頻錄入是否成功if( iRet = 1 )printf(合格!n);break;else if( iRet = 999 )break;elseprintf(輸入錯誤,請重新輸入:);while( iRet != 1 );if( iRet = 999 | iRet = 1 )break; /出版音頻錄入結(jié)束*if( iRet = 999 )system(cls);break;insert_record( FILENAME, &bk, sizeof( struct book ) );/存盤printf(n已存盤!);iFlag = Return( );if( iFlag != 1
23、)system(cls);break;system(cls);/1結(jié)束/2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222int findRecord_bk( char *fileName, char *bk_id, struct book *bk ) int i = 1, iret = 0, flag = 0; FILE *fp; / system( cls ); /調(diào)用標準函數(shù),以讀方式,
24、打開文件 if( ( fp = fopen( fileName, r ) ) = NULL )printf( Open File %s Error, fileName );return( -1 ); do /調(diào)用標準函數(shù),從文件中按記錄讀入到結(jié)構(gòu)體中 iret = fread( bk, sizeof( struct book ), 1, fp ); if( iret id, bk_id, MAXID) = 0 ) flag = 1; break; i+; while( !feof( fp ) ); /調(diào)用標準函數(shù),關(guān)閉文件 fclose( fp );if( flag = 1)return( i
25、 );elsereturn( 0 );/修改-void bookdate()int iRet = 0;int iFlag = 1;char iMenuId2;system(cls);/得到當前標準輸出句柄 hConsole = GetStdHandle(STD_OUTPUT_HANDLE); /菜單程序while( 1 )system( cls );gotoxy( 15, 5 );printf(*歡迎來到書籍信息管理系統(tǒng)*);gotoxy( 30, 8 );printf(1-圖書信息修改);gotoxy( 30, 9 );printf(2-圖書信息刪除);gotoxy( 30, 10 );pr
26、intf(3-返回上一菜單);gotoxy( 20, 15 );printf(輸入您的選擇: );scanf(%s,iMenuId );if( iMenuId1 = 0 ) iRet = 1;if( iRet = 1 )switch( iMenuId0 )case 1 :edit_record(); /*進入子系統(tǒng)-圖書信息修改*/continue;case 2 :dele_main(); /*進入子系統(tǒng)-信息刪除*/ continue;case 3 :system(cls);break; /*退出系統(tǒng)*/default :iFlag = 0;system(cls);gotoxy( 20, 1
27、3 );printf(輸入超出菜單選擇范圍n);continue;break;else if( iRet = 0 | iFlag = 0 )system(cls);gotoxy( 20, 13 );printf(輸入超出菜單選擇范圍n);/修改文件int updata_record( char *fileName, char *newRecord, int recordNo, int recordLength )int iret = 0, flag = 0;long position = 0L;FILE *fp;/第一步:調(diào)用標準函數(shù):打開文件。注意打開文件形式要用“r+b”, 這樣才能在程序
28、中移動文件指針if( ( fp = fopen( fileName, r+b ) ) = NULL )printf( Open File %s Error, fileName );flag = -1;return( flag );/第二步:計算要修改記錄的首地址position = ( recordNo - 1 ) * recordLength;/第三步:移動文件指針到要修改記錄的首地址iret = fseek( fp, position, 0 );/第四步:調(diào)用標準函數(shù):將傳入本函數(shù)結(jié)構(gòu)體中的要修改的數(shù)據(jù),寫入文件中iret = fwrite( newRecord, recordLength
29、, 1, fp );if( iret = 0 )printf( nUpdata File iret%d %s Errorn, iret, fileName );flag = -1;elseflag = 1;/第五步:關(guān)閉文件fclose( fp );return( flag );/自己編寫的修改信息的主控函數(shù)void edit_record() int RecNo=0, iFlag = 0;char searcIdMAXID+2;char alterMAX+2;/給已定義的結(jié)構(gòu)體,分配內(nèi)存空間struct book bk;system(cls);doRecNo = T_Edit( searcI
30、d );if( RecNo = 999)break;if( RecNo = 0 )continue;findRecord_bk( FILENAME, searcId, &bk ); /讀取文件信息gotoxy( 1, 3 );printf(原信息:);gotoxy( 1, 5 );printf( I D:%s , bk.id);gotoxy( 1, 6 );printf( 書 名:%s , bk.title);gotoxy( 1, 7 );printf( 作 者:%s , bk.author);gotoxy( 1, 8 );printf( 分 類:%s , bk.categorie);goto
31、xy( 1, 9 );printf( 出 版 社:%s , bk.house);gotoxy( 1, 10 );printf( 出版日期:%s , bk.time);gotoxy( 1, 11 );printf( 庫 存:%d , bk.stock);gotoxy( 40, 3 );printf(修改(不修改,請輸入q):); gotoxy( 40, 5 ); printf( I D:%s , bk.id);gotoxy( 40, 6 );printf( 書 名:);gotoxy( 40, 7 );printf( 作 者:);gotoxy( 40, 8 );printf( 分 類:);goto
32、xy( 40, 9 );printf( 出 版 社:);gotoxy( 40, 10 );printf( 出版日期:);gotoxy( 40, 11 );printf( 庫 存:%d , bk.stock);do /修改書名*gotoxy( 53, 6 );scanf( %s, alter);iFlag = edit_Title( searcId, alter, RecNo );if( iFlag = 0 ) gotoxy( 36, 6 );printf(錯誤!請重輸書名: );continue;if( iFlag = 999)gotoxy( 36, 6 );printf( 書 名: );break;elsegotoxy( 36, 6 );printf( 書 名:);break;while( iFlag = 0 ); /書名修改完成*do /修改作者*gotoxy( 53, 7 );scanf( %s, alter);iFlag = edit_Author( searcId, alter, RecNo );if( iFlag = 0 ) gotoxy( 36, 7 );printf(錯誤!請重輸作者: );continue;if( iFlag = 999)gotoxy( 36, 7 );pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 張家口學(xué)院《基礎(chǔ)護理學(xué)實訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年版消防工程技術(shù)創(chuàng)新與應(yīng)用分包合同3篇
- 云南水利水電職業(yè)學(xué)院《小學(xué)課件制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南農(nóng)業(yè)職業(yè)技術(shù)學(xué)院《流行合唱與指揮藝術(shù)(3)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年綠色食品生產(chǎn)基地合作開發(fā)與供應(yīng)鏈管理合同3篇
- 二零二五版美容美發(fā)行業(yè)綠色生產(chǎn)與可持續(xù)發(fā)展合同4篇
- 二零二五版美容院員工培訓(xùn)及服務(wù)合同4篇
- 2025年度個人向企業(yè)發(fā)放的信用借款合同范本3篇
- 2025年度個人醫(yī)療貸款擔保合同4篇
- 掛靠汽車租賃合同
- 漆畫漆藝 第三章
- CB/T 615-1995船底吸入格柵
- 光伏逆變器一課件
- 貨物供應(yīng)、運輸、包裝說明方案
- (完整版)英語高頻詞匯800詞
- 《基礎(chǔ)馬來語》課程標準(高職)
- IEC61850研討交流之四-服務(wù)影射
- 《兒科學(xué)》新生兒窒息課件
- 材料力學(xué)壓桿穩(wěn)定
- 人教版小升初英語知識點匯總
- 靜態(tài)爆破專項施工方案
評論
0/150
提交評論