SQLServer課程設計——圖書館管理系統_第1頁
SQLServer課程設計——圖書館管理系統_第2頁
SQLServer課程設計——圖書館管理系統_第3頁
SQLServer課程設計——圖書館管理系統_第4頁
SQLServer課程設計——圖書館管理系統_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上一、 題目描述本數據庫的名字叫做圖書館管理系統數據庫,主要是用來存儲和修改圖書館中包括圖書、圖書類型、借閱者重要資料。二、 需求分析隨著圖書館規模的不斷擴大,圖書數量也相應的增加,有關圖書的各種信息量也成倍增加,面對著龐大的信息量,傳統的人工方式管理會導致圖書館管理上的混亂,人力與物力過多浪費,圖書館管理費用的增加,從而使圖書館的負擔過重,影響整個圖書館的運作和控制管理,因此,必須制定一套合理、有效,規范和實用的圖書管理系統,對圖書資料進行集中統一的管理。另一方面,IT產業和Internet獲得了飛速發展,計算機應用已滲透到了各個領域,引起信息管理的革命,實現了信息的

2、自動化處理,提高了處理的及時性和正確性。提高圖書管理工作效率,作到信息的規范管理,科學統計和快速查詢,讓圖書館更好的為學校,社會服務。三、 數據庫中各表結構的清單3.1數據庫中各表主要有: 3.1.1圖書表:數據名稱圖書編號圖書類別編號圖書名稱作者價格數量3.1.2圖書類別表:數據名稱圖書類別編號類別描述圖書數量3.1.3借閱表:數據名稱借書證號身份證號姓名性別3.1.4借閱卡表:數據名稱借書證號卡號借閱卡等級借閱數初始登記時間3.2數據間的聯系:1.圖書表-圖書類型表 2.借閱者表借閱者身份表 3.圖書表-借閱者表3.3數據操作:添加、刪減元組、修改相應屬性的數據。3. 4字段定義 表名 主

3、鍵 字段名 字段類型 字段大小 字段格式 查閱類型 1. 出版社 出版社ID 出版社ID 文本 50 文本框 名稱 文本 50 文本框 2. 借閱者 借閱號 借閱號 數字 長整型 文本框 姓名 文本 8 文本框 通信地址 文本 50 文本框 電話 數字 長整型 文本框 3. 圖書 圖書編號 圖書編號 文本 50 文本框 分類號 文本 50 組合框 書名 文本 50 文本框 出版社ID 文本 50 文本框 作者 文本 8 文本框 單價 貨幣 貨幣 數量 數字 長整型 文本框 4. 圖書分類 分類號 分類號 文本 50 文本框 分類名稱 文本 50 文本框 5. 借書記錄 借閱號 借閱號 數字 長

4、整型 組合框 圖書編號 圖書編號 文本 50 組合框 借閱日期 日期/時間 短日期 應還日期 日期/時間 短日期 已還 文本 50 文本框 6. 還書記錄 借閱號 借閱號 數字 長整型 組合框 圖書編號 圖書編號 文本 50 組合框 還書日期 日期/時間 短日期 四源程序代碼:#include #include #include #include #include #define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0struct student /*定義學生類型,用于存放借出

5、的書籍*/ int carnum; char lendbook10; student1000;struct employ /*定義職工類型*/ int employnum; char employname15; int employage; char employsex2; char employleve10; long int employtage; employ50;struct book /*定義書的類型*/ int booknum; char bookname10; char bookcreat10; int turefalse; /*用于借書和還書模塊判斷一本書是否借出的條件*/ b

6、ook1000;struct car /*借書卡的數據類型*/ int carnum; char studentname10; int studentclass; car100;huanbook() /*還書函數*/ FILE *fp,*fp2; /*定義兩個文件指針,fp2用于修改數據時設立臨時文件用,防止數據遭破壞*/ int i,n; int carnum; char lendbook10; printf(請你輸入你的卡號n); scanf(%d,&carnum); fp=fopen(car.txt,r); /*讀取卡號記錄*/ for(i=0;fread(&cari,sizeof(st

7、ruct car),1,fp)!=0;i+) /*for循環判斷卡號是否存在*/ if(cari.carnum=carnum) /*卡號存在,進入下一循環*/ n=i; fclose(fp); printf(請輸入你要還的書的名字n); scanf(%s,lendbook); fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) /*判斷是否借閱了輸入的書*/ if(strcmp(studenti.lendbook,lendbook)=0) /*借閱了該書,進入下一循環,否則出錯顯

8、示*/ fclose(fp); fp=fopen(record.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0) continue; /*刪除還掉的書的借書記錄*/ fwrite(&studenti,sizeof(struct student),1,fp2); /*寫入原來沒還的書的記錄*/ fclose(fp); fclose(fp2); fp=fopen(record.txt,

9、w); fp2=fopen(bookl.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp2)!=0;i+) fwrite(&studenti,sizeof(struct student),1,fp); /*將借書記錄信息寫回*/ fclose(fp); fclose(fp2); fopen(bookl.txt,w); /*清臨時文件的記錄*/ fclose(fp2); fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(struc

10、t book),1,fp)!=0;i+) /*將書的記錄寫入臨時文件,防止因為修改信息破壞以前的記錄*/ if(i=n) booki.turefalse=1; fwrite(&booki,sizeof(struct book),1,fp2); /*將還的書的原來狀態設為無人借閱的*/ continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct

11、 book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); /*將臨時文件寫回*/ fclose(fp); fclose(fp2); fopen(bookl.txt,w); /*清臨時文件*/ fclose(fp2); printf(還書完畢,按任意鍵返回n); getch(); return 1; printf(你沒有借這樣的書,任意鍵返回n); /*出錯提示*/ fclose(fp); getch(); return 0; printf(系統沒這樣的卡,和管理員聯系,按任意鍵返回n); /*出錯提示*/ fclose(fp);

12、 getch(); findbook() FILE *fp; char bookname10; int ture,i; fp=fopen(book.txt,r); printf(請輸入你要查找的書名n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookname,booki.bookname)=0) if(booki.turefalse=1) printf(這本書的詳細資料是:%d %s %s 此書現在無人借閱n按任意鍵返回n,booki.booknum,booki.

13、bookname,booki.bookcreat); else printf(這本書已經有人借出n);fclose(fp);return 0; fclose(fp); return FALSE; printf(沒有你要查詢的書籍n); fclose(fp); return FALSE; findbook1() FILE *fp; char bookcreat10; int ture,i; fp=fopen(book.txt,r); printf(請輸入你要查找的作者名n); scanf(%s,bookcreat); for(i=0;fread(&booki,sizeof(struct book

14、),1,fp)!=0;i+) if(strcmp(bookcreat,booki.bookcreat)=0) if(booki.turefalse=1) printf(這本書的詳細資料是:%d %s %s 此書現在無人借閱n按任意鍵返回n,booki.booknum,booki.bookname,booki.bookcreat); else printf(這本書已經有人借出n);fclose(fp);return 0; fclose(fp); return FALSE; printf(沒有你要查詢的書籍n); fclose(fp); return FALSE; lendcount() FILE

15、 *fp; int i,n=0; fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) printf(卡號:%d 借出的書籍:%s n,studenti.carnum,studenti.lendbook); n=n+1; fclose(fp); printf(目前共有%d本書借出n,n); printf(按任意鍵n); getch();return n; chabook() char ch5; do printf(-歡迎進入圖書查詢系統!-n); printf( 1:n); pri

16、ntf( 2:n); printf( 0:n); printf(請輸入0-2,其他輸入非法!n); scanf(%s,&ch5); switch(ch5) case 1:findbook();getch();break; case 2:findbook1();getch();break; case 0:break; default:printf(無此操作n);getch();break; while(ch5!=0);return FALSE; lendbook() FILE *fp,*fp2; int i,n; int carnum; printf(請你輸入你的卡號n); scanf(%d,&

17、carnum); fp=fopen(car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum=carnum) n=i; fclose(fp); printf(請輸入你要借閱的書的名字n); scanf(%s,studentn.lendbook); fp=fopen(book.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(booki.bookname,studentn.lendbook)=0) if(

18、booki.turefalse=0) printf(對不起,此書有人借出,請借其他書n);fclose(fp);getch();return; else fclose(fp); fp=fopen(record.txt,a+); studentn.carnum=carnum; fwrite(&studentn,sizeof(struct student),1,fp); fclose(fp); fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(

19、strcmp(booki.bookname,studentn.lendbook)=0) booki.turefalse=0; fwrite(&booki,sizeof(struct book),1,fp2); continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,siz

20、eof(struct book),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); printf(借書完畢,按任意鍵返回n); getch(); return; printf(不存在這樣的書,任意鍵返回n); fclose(fp); getch(); return; printf(你的卡號不存在,請申請新卡,按任意鍵返回n); fclose(fp); getch(); carcount() FILE *fp; int i,n=0; fp=fopen(car.txt,r); for(i=0;fread(&cari,s

21、izeof(struct car),1,fp)!=0;i+) printf(第%d張卡n,i+1,cari.carnum,cari.studentname,cari.studentclass); n=n+1; fclose(fp); printf(目前共有%d本書n,n); printf(按任意鍵n); getch(); delcar() FILE *fp,*fp2; int i; int carnum; char choice; fp=fopen(car.txt,r); fp2=fopen(bookl.txt,w); printf(請輸入你要刪除的卡號n); printf(如果你輸入的卡號存

22、在,系統自動刪除該信息!如果不存在,系統不做任何改動n); scanf(%d,&carnum); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum!=carnum) fwrite(&cari,sizeof(struct car),1,fp2); fclose(fp); fclose(fp2); printf(是否真的要刪除該卡?刪除后該書籍的所有信息將無法恢復Y/Nn); scanf(%s,&choice); if(choice=y|choice=Y) fp=fopen(car.txt,w); fp2=fope

23、n(bookl.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp2)!=0;i+) fwrite(&cari,sizeof(struct car),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(按任意鍵返回n); getch(); return; else printf(按任意鍵返回n); getch(); return; addcar() FILE *fp; int i=0; fp=fopen(car.txt,a+); printf(

24、請你輸入卡號n); scanf(%d,&cari.carnum); printf(請你輸入學生姓名n); scanf(%s,cari.studentname); printf(請你輸入班級n); scanf(%d,&cari.studentclass); fwrite(&cari,sizeof(struct car),1,fp); fclose(fp); printf(輸入完畢,任意鍵返回n); getch(); changemploy() FILE *fp,*fp2; char employname10,choice;int i; fp=fopen(employ.txt,r); fp2=fo

25、pen(bookl.txt,w); printf(請你輸入要修改的職工的名字n); scanf(%s,employname); for(i=0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) if(strcmp(employi.employname,employname)=0) printf(你所要修改的職工的資料如下,請選擇你要修改的內容n); printf(n,employi.employnum,employi.employname,employi.employage,employi.employsex,employi.employlev

26、e,employi.employtage); printf(2:修改職工名n); printf(3:修改職工年齡n); printf(4:修改職工工資n); printf(5:修改職工學歷n); printf(請輸入1-5:); scanf(%s,&choice); switch(choice) case 1: printf(請輸入新的職工號n); scanf(%d,&employi.employnum); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 2: printf(請輸入新的職工姓名n); scanf(%s,empl

27、oyi.employname); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 3: printf(請輸入新的年齡n); scanf(%d,&employi.employage); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 4: printf(請輸入新的職工工資n); scanf(%d,&employi.employtage); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 5: p

28、rintf(請輸入新的職工學歷n); scanf(%s,employi.employleve); fwrite(&employi,sizeof(struct employ),1,fp2); default:printf(沒有這樣的操作);break; continue; fwrite(&employi,sizeof(struct employ),1,fp2); fclose(fp); fclose(fp2); fp=fopen(employ.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&employi,sizeof(struct employ),

29、1,fp2)!=0;i+) fwrite(&employi,sizeof(struct employ),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(按任意鍵返回n); getchar(); return; delemploy() FILE *fp,*fp2; int i; char employname10,choice; fp=fopen(employ.txt,r); fp2=fopen(bookl.txt,w); printf(請輸入你要刪除的職工名n); printf(如果你輸入的

30、職工存在,系統自動刪除該信息!如果不存在,系統不做任何改動n); scanf(%s,employname); for(i=0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) if(strcmp(employname,employi.employname)!=0) fwrite(&employi,sizeof(struct employ),1,fp2); fclose(fp); fclose(fp2); printf(是否真的要刪除該職工信息?刪除后的所有信息將無法恢復Y/Nn); scanf(%s,&choice); if(choice=y|

31、choice=Y) fp=fopen(employ.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&employi,sizeof(struct employ),1,fp2)!=0;i+) fwrite(&employi,sizeof(struct employ),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(按任意鍵返回n); getch(); return TRUE; else printf(按任意鍵返回n); getch(); return

32、 FALSE; employcount() FILE *fp; int i,n=0; fp=fopen(employ.txt,r); for(i=0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) printf(第%d職工的信息如下:nn,n+1,employi.employnum,employi.employname,employi.employage,employi.employsex,employi.employleve,employi.employtage); n+; fclose(fp); printf(目前共有%d個職工n,n);

33、 printf(按任意鍵返回n); addemploy() FILE *fp; char choice=y; int i=1; fp=fopen(employ.txt,a+); while(choice=y|choice=Y) printf(請你輸入職工號碼n); scanf(%d,&employi.employnum); printf(請你輸入職工名n); scanf(%s,employi.employname); printf(請輸入職工年齡n); scanf(%d,&employi.employage); printf(請你輸入性別n); scanf(%s,employi.employs

34、ex); printf(請你輸入職工的學歷水平n); scanf(%s,employi.employleve); printf(請輸入職工的工資n); scanf(%d,&employi.employtage); fwrite(&employi,sizeof(struct employ),1,fp); printf(是否要輸入下個職工信息?n); scanf(%s,&choice); printf(按任意鍵返回n); fclose(fp); addbook()FILE *fp;int i=0;char choice=y;fp=fopen(book.txt,a+);while(choice=y|

35、choice=Y) printf(請你輸入第%d本書的序號n,i+1); scanf(%d,&booki.booknum); printf(請你輸入書名n); scanf(%s,booki.bookname); printf(請你輸入書的作者n); scanf(%s,booki.bookcreat); printf(請設為1或0,1代表書還沒人借,0表示書已經借出,設其他值,程序運行時無法得出正常結果n); printf(請你設定書的狀態n); scanf(%d,&booki.turefalse); fwrite(&booki,sizeof(struct book),1,fp); printf

36、(是否要輸入下本書n); scanf(%s,&choice); fclose(fp); bookcount() FILE *fp; int i,n=0; fp=fopen(book.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(booki.booknum!=0&strlen(booki.bookname)!=0&strlen(booki.bookcreat)!=0) printf(第%d本書n,i+1,booki.booknum,booki.bookname,booki.bookcreat,booki.ture

37、false); n=n+1; fclose(fp); printf(目前共有%d本書n,n); printf(按任意鍵n); delbook() FILE *fp,*fp2; int i; char bookname10,choice; fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); printf(請輸入你要刪除的書名n); printf(如果你輸入的書名存在,系統自動刪除該信息!如果不存在,系統不做任何改動n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=

38、0;i+) if(strcmp(bookname,booki.bookname)!=0) fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); printf(是否真的要刪除該書籍?刪除后該書籍的所有信息將無法恢復Y/Nn); scanf(%s,&choice); if(choice=y|choice=Y) fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct boo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論