圖書管理系統(tǒng)課程設(shè)計(jì)c語言_第1頁
圖書管理系統(tǒng)課程設(shè)計(jì)c語言_第2頁
圖書管理系統(tǒng)課程設(shè)計(jì)c語言_第3頁
圖書管理系統(tǒng)課程設(shè)計(jì)c語言_第4頁
圖書管理系統(tǒng)課程設(shè)計(jì)c語言_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上*大學(xué)實(shí)踐報(bào)告姓名性別學(xué)號分院專業(yè)計(jì)算機(jī)類實(shí)踐單位實(shí)踐崗位崗位 實(shí)習(xí)時(shí)間崗位崗位(一)實(shí)踐主要內(nèi)容及進(jìn)程先根據(jù)要求建立主函數(shù)的菜單,其總體結(jié)構(gòu)為:int main()int m=0; do printf("tn");printf("t n"); printf("t 圖書借閱管理系統(tǒng) n");printf("tn");printf("tn"); printf("t 1【借閱資料管理 】 n");printf("t 2【借閱管理 】 n&quo

2、t;); printf("t 3【讀者管理 】 n");printf("t 4【統(tǒng)計(jì)分析 】 n");printf("t 5【參數(shù)設(shè)置 】 n");printf("t 0【退出 】 n");printf("t 【請輸入0-7:】 n"); printf("tn"); scanf("%d",&m); switch(m)/用swich-case語句:用于枚舉選擇 case 1:menu_book();break; case 2: Display_mai

3、n_menu();break;case 3: user_menu();break;case 4: count_menu();break;case 5: printf("請?jiān)O(shè)置一天的罰款金額:"); scanf("%f",&moneys);printf("設(shè)置成功!n");/退出break;case 6:exit(0); while(1);return 0;再根據(jù)沒個(gè)選項(xiàng)來設(shè)計(jì)頭文件分別為user.h book.h record.h其中book.h(借閱資料管理)聲明和結(jié)構(gòu)為#include<stdio.h>#inc

4、lude<string.h>/字符串頭文件#include <stdlib.h>/exit函數(shù)的頭文件,用于程序退出功能#define N 100 struct book char ISBN20; /*圖書編號*/ char bookName20;/*書名*/ char auther20;/*作者姓名*/ char publish20;/出版社 char date20;/*出版時(shí)間*/ char type20;/類別 float price;/*價(jià)格*/ int total;/*總庫存量*/ int now;/*現(xiàn)在庫存量*/ int jie; /*已借出*/BookN

5、;int number=0;void menu();void Input_book();/*錄入圖書編號信息*/void Delete_book();/*刪除信息函數(shù)*/void Modification_book();/*修改信息*/void Search_book();/*按條件查詢*/void title_book();/*圖書信息輸出標(biāo)題*/void print_book(struct book b);/*打印某一本書的*/int Judge();/*判斷輸入是否繼續(xù)的函數(shù)*/void menu_book()/菜單函數(shù)聲明int m; do printf(" *借閱資料管理菜

6、單* n"); printf(" 1 增加信息 n");printf(" 2 修改信息 n");printf(" 3 刪除信息 n");printf(" 4 查詢信息 n");printf(" 5 返回主材單 n");printf(" 請選擇1/2/3/4/5 : n");scanf("%d",&m); switch(m)/用swich-case語句:用于枚舉選擇 case 1: Input_book();break; case 2: M

7、odification_book();break;case 3: Delete_book();break;case 4: Search_book();break;case 5: ;break; default: printf("請輸入正確的按鍵!n");break; while(m!=5);/使用do-while語句:用于控制條件record.h聲明與結(jié)構(gòu)為:#include<stdio.h>#include<string.h>/字符串頭文件#include <stdlib.h>/exit函數(shù)的頭文件,用于程序退出功能#include&l

8、t;time.h>/獲取當(dāng)前系統(tǒng)時(shí)間#define MAX 100 /定義學(xué)生的人數(shù)最多為100struct date/定義日期結(jié)構(gòu)體int year;/年份int month;/月份int day;/日;struct recordchar card20;/借書證號char ISBN20;/書號 為13位國際編碼 char name20;/書名 float maoney;/金額 struct date senddate;/*借書時(shí)間*/struct date backdate;/*還書時(shí)間*/float fine; /*罰款金額*/int state;/*表示借書狀態(tài),0表示借,1表示還

9、*/ recordsMAX;int r_num=0;/*全局變量表示結(jié)構(gòu)體中的圖書數(shù)量*/ float moneys=0;/*以下是函數(shù)聲明部分*/void list();/*顯示所有圖書信息*/void borrowing_books();/借書void bookreturn();/還書void search_by_date();/查詢?nèi)掌趘oid del();/刪除void del_by_year();/刪除過期數(shù)據(jù)void search_by_card();/以下四個(gè)函數(shù)是計(jì)算時(shí)間函數(shù)int counterdays1(int year,int month,int day,int year

10、1,int month1,int day1);/求某時(shí)間距離今天有多少天int counterdays(int year,int month,int day);/求某時(shí)間距離今天有多少天int eachyeartotal(int year,int month,int day);void getTime(int *year,int *month,int *day);void countByYear();void Display_main_menu();/顯示主菜單void Display_main_menu()/菜單函數(shù)聲明 int m; do printf("tn");pr

11、intf("t n"); printf("t 借閱管理 n");printf("tn");printf("tn"); printf("t 1【借書 】 n");printf("t 2【還書 】 n");printf("t 3【續(xù)借 】 n");printf("t 0【返回主菜單 】 n");printf("t 【請輸入0-3:】 n"); printf("tn"); scanf("%d&

12、quot;,&m); switch(m)/用swich-case語句:用于枚舉選擇 case 1:borrowing_books();/借書break; case 2: bookreturn();/還書break;case 3: search_by_card();/查詢借書信息break;case 0: break; default: printf("請輸入正確的按鍵!n");break; while(m!=0);/使用do-while語句:用于控制條件user.h全部內(nèi)容為#include<stdio.h>#include<string.h>

13、;#include<stdlib.h>/讀者管理/struct userint label;/0是老師 1是學(xué)生char card20;/借書證號 char name20;/姓名 char infor20;/老師是所屬學(xué)院 char num20;/老師 工號 學(xué)生是學(xué)號 int number;/借書量 int days;/借書天數(shù) int statue;/0表示可用 1表示掛失 u100;int Day2=0,Num2=0;int u_num=0; void title_user(struct user us);void print_user(struct user us);voi

14、d insert_user()/*錄入信息*/int flag=0,j=0,t;/表示此次錄入的人數(shù)printf("t*讀者信息錄入*n");printf(" 1*教師 2*學(xué)生");scanf("%d",&t); uu_num.label=t-1; printf("借書證號 :");scanf("%s",uu_num.card);printf("姓名:");scanf("%s",uu_);printf("所屬學(xué)院:&qu

15、ot;);scanf("%s",uu_r);printf("學(xué)號:");scanf("%s",uu_num.num);uu_num.statue=0;uu_num.number=Numt-1;uu_num.days=Dayt-1; u_num+;printf("新增信息成功!n");void guashi_user()int flag=0,i;char no20;printf("ttt*掛失*n"); printf("借書證號:");scanf("%

16、s",no);for(i=0;i<u_num;i+)if(strcmp(ui.card,no)=0)ui.statue=1; printf("掛失成功!n");flag=1;break;if(flag=0)printf("無記錄!n");void zhuxiao_user()/*注銷信息函數(shù)*/int flag=1,i,a; int k=0; char information20; printf("輸入借書證進(jìn)行查詢注銷: n"); scanf("%s,",information); for(i=0

17、;i<u_num;i+) if(strcmp(information,ui.card)=0) flag=0;for( a=i;a<u_num;a+)ua=ua+1;u_num-; printf("注銷成功!n"); break; if(flag=1)printf("無記錄!n"); void Search_user()int i;char infor20;printf("請輸入工號或?qū)W號查詢:n");scanf("%s",infor);for(i=0;i<u_num;i+)if(strcmp(ui

18、.num,infor)=0) title_user(ui); print_user(ui);system("pause"); void title_user(struct user us) if(us.label=1) printf(" 借書證 姓名 所屬學(xué)院 工號 是否掛失n"); else printf(" 借書證 姓名 所屬班級 學(xué)號 是否掛失n");void print_user(struct user us) printf("%10s %10s %10s %10s %5dn",us.card,us.nam

19、e,r,us.num,us.statue); void setLever()printf("教師等級設(shè)置:n");printf("-n");printf("請輸入教師可借數(shù)量:");scanf("%d",&Num0);printf("請輸入教師可借天數(shù):");scanf("%d",&Day0);printf("學(xué)生等級設(shè)置:n");printf("-n");printf("請輸入學(xué)生可借數(shù)量:&q

20、uot;);scanf("%d",&Num1);printf("請輸入學(xué)生可借天數(shù):");scanf("%d",&Day1);void user_menu()int m;do printf(" *讀者管理* n"); printf(" 1 等級設(shè)置 n");printf(" 2 信息錄入 n");printf(" 3 掛失 n");printf(" 4 注銷 n");printf(" 5 查詢 n")

21、;printf(" 0 返回上一級菜單 n");scanf("%d",&m); switch(m)case 1: setLever(); break; case 2: insert_user();break;case 3: guashi_user();break;case 4: zhuxiao_user();break;case 5: Search_user();break;case 0: ;break;while (m!=0);(二)主要收獲與體會學(xué)會了用dowhile(m!=n)來控制菜單和返回掌握了對較為復(fù)雜的程序的基本架構(gòu),對更難更復(fù)雜的

22、程序更有信心與耐心去完成。對全局變量有了更深的認(rèn)識而不是僅僅知道全局變量怎么用,知道了為什么什么時(shí)候需要用全局變量學(xué)會了運(yùn)用網(wǎng)絡(luò)去尋找所碰到的問題的解決方案,在網(wǎng)上學(xué)習(xí)自己所需要的知識。如學(xué)習(xí)如何time.h里的函數(shù):#include<time.h>/獲取當(dāng)前系統(tǒng)時(shí)間int counterdays1(int year,int month,int day,int year1,int month1,int day1);/求某時(shí)間距離今天有多少天int counterdays(int year,int month,int day);/求某時(shí)間距離今天有多少天int eachyeartot

23、al(int year,int month,int day);void getTime(int *year,int *month,int *day);void countByYear(); void countByYear() int i,j,k=0,flag;float fine6=0; int year6=0;int count6=0;for(i=0;i<r_num;i+)flag=0;for(j=0;j<k;j+)if(recordsi.senddate.year=yearj)if(recordsi.state=0&&counterdays(recordsi.

24、senddate.year,recordsi.senddate.month,recordsi.senddate.day)>30)finej=finej+(float)(counterdays(recordsi.senddate.year,recordsi.senddate.month,recordsi.senddate.day)-30)*0.2;else if(recordsi.state=1)finej=finej+recordsi.fine;countj+;flag=1;if(flag=0)yeark=recordsi.senddate.year;countk=1;if(record

25、si.state=0&&counterdays(recordsi.senddate.year,recordsi.senddate.month,recordsi.senddate.day)>30)finek=(float )(counterdays(recordsi.senddate.year,recordsi.senddate.month,recordsi.senddate.day)-30)*0.2;else if(recordsi.state=1)finek=recordsi.fine; k+;printf("年份 未還書量 總罰款金額n");for

26、(i=0;i<k;i+) printf("%-14d %-10d %8.1fn",yeari,counti,finei); void getTime(int *year,int *month,int *day)/獲取當(dāng)前系統(tǒng)時(shí)間time_t nowtime; struct tm *timeinfo; nowtime = time(NULL); timeinfo = localtime(&nowtime);*year=timeinfo->tm_year+1900; *month=timeinfo->tm_mon+1;*day=timeinfo->

27、;tm_mday;int isleap(int year)/判斷閏年if(year%4=0&&year%100!=0|year%400=0)return 1;else return 0;int maxDay(int year,int month)int a=31,28,31,30,31,30,31,31,30,31,30,31;if(isleap(year)a1=29;return amonth-1;int eachyeartotal(int year,int month,int day)int i,sum=0;for(i=1;i<month;i+)sum+=maxDay

28、(year,i);sum+=day;/printf("%d-%d-%d :%dn",year,month,day,sum);return sum;int counterdays1(int year,int month,int day,int year1,int month1,int day1)/求某時(shí)間距離今天有多少天int days0,days1,days;days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);days1=(year1-1)*365+(ye

29、ar1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1);days=abs(days0-days1);return days;int counterdays(int year,int month,int day)/求某時(shí)間距離今天有多少天int year1,days0,days1,month1,days,day1;time_t nowtime; struct tm *timeinfo; nowtime = time(NULL); timeinfo = localtime(&nowtime);year1=t

30、imeinfo->tm_year+1900; month1=timeinfo->tm_mon+1;day1=timeinfo->tm_mday;days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1);days=abs(days0-days1);return days;在過程中鍛煉

31、了耐心。在程序的實(shí)驗(yàn)過程中碰到了許多問題,正是因?yàn)樵诰幊虝r(shí)打了備注,所以在出現(xiàn)問題是能及時(shí)找到問題的位置,由此知道了編程所加的十分重要的,它不是麻煩而是幫助我們快速完成程序的工具。(3) 對實(shí)踐單位的建議對任務(wù)要有合理的分配,圖書管理系統(tǒng)在所有題目中是較為復(fù)雜難度較大的題目,希望給了難題的同時(shí)也應(yīng)分配較為優(yōu)秀的組員。(4) 實(shí)踐成果(一)實(shí)踐主要內(nèi)容及進(jìn)程先根據(jù)要求建立主函數(shù)的菜單,其總體結(jié)構(gòu)為:int main()int m=0; do printf("tn");printf("t n"); printf("t 圖書借閱管理系統(tǒng) n"

32、;);printf("tn");printf("tn"); printf("t 1【借閱資料管理 】 n");printf("t 2【借閱管理 】 n"); printf("t 3【讀者管理 】 n");printf("t 4【統(tǒng)計(jì)分析 】 n");printf("t 5【參數(shù)設(shè)置 】 n");printf("t 0【退出 】 n");printf("t 【請輸入0-7:】 n"); printf("tn&

33、quot;); scanf("%d",&m); switch(m)/用swich-case語句:用于枚舉選擇 case 1:menu_book();break; case 2: Display_main_menu();break;case 3: user_menu();break;case 4: count_menu();break;case 5: printf("請?jiān)O(shè)置一天的罰款金額:"); scanf("%f",&moneys);printf("設(shè)置成功!n");/退出break;case 6:

34、exit(0); while(1);return 0;再根據(jù)沒個(gè)選項(xiàng)來設(shè)計(jì)頭文件分別為user.h book.h record.h其中book.h(借閱資料管理)聲明和結(jié)構(gòu)為#include<stdio.h>#include<string.h>/字符串頭文件#include <stdlib.h>/exit函數(shù)的頭文件,用于程序退出功能#define N 100 struct book char ISBN20; /*圖書編號*/ char bookName20;/*書名*/ char auther20;/*作者姓名*/ char publish20;/出版社

35、char date20;/*出版時(shí)間*/ char type20;/類別 float price;/*價(jià)格*/ int total;/*總庫存量*/ int now;/*現(xiàn)在庫存量*/ int jie; /*已借出*/BookN;int number=0;void menu();void Input_book();/*錄入圖書編號信息*/void Delete_book();/*刪除信息函數(shù)*/void Modification_book();/*修改信息*/void Search_book();/*按條件查詢*/void title_book();/*圖書信息輸出標(biāo)題*/void print

36、_book(struct book b);/*打印某一本書的*/int Judge();/*判斷輸入是否繼續(xù)的函數(shù)*/void menu_book()/菜單函數(shù)聲明int m; do printf(" *借閱資料管理菜單* n"); printf(" 1 增加信息 n");printf(" 2 修改信息 n");printf(" 3 刪除信息 n");printf(" 4 查詢信息 n");printf(" 5 返回主材單 n");printf(" 請選擇1/2/3

37、/4/5 : n");scanf("%d",&m); switch(m)/用swich-case語句:用于枚舉選擇 case 1: Input_book();break; case 2: Modification_book();break;case 3: Delete_book();break;case 4: Search_book();break;case 5: ;break; default: printf("請輸入正確的按鍵!n");break; while(m!=5);/使用do-while語句:用于控制條件record.h聲明

38、與結(jié)構(gòu)為:#include<stdio.h>#include<string.h>/字符串頭文件#include <stdlib.h>/exit函數(shù)的頭文件,用于程序退出功能#include<time.h>/獲取當(dāng)前系統(tǒng)時(shí)間#define MAX 100 /定義學(xué)生的人數(shù)最多為100struct date/定義日期結(jié)構(gòu)體int year;/年份int month;/月份int day;/日;struct recordchar card20;/借書證號char ISBN20;/書號 為13位國際編碼 char name20;/書名 float mao

39、ney;/金額 struct date senddate;/*借書時(shí)間*/struct date backdate;/*還書時(shí)間*/float fine; /*罰款金額*/int state;/*表示借書狀態(tài),0表示借,1表示還*/ recordsMAX;int r_num=0;/*全局變量表示結(jié)構(gòu)體中的圖書數(shù)量*/ float moneys=0;/*以下是函數(shù)聲明部分*/void list();/*顯示所有圖書信息*/void borrowing_books();/借書void bookreturn();/還書void search_by_date();/查詢?nèi)掌趘oid del();/刪除

40、void del_by_year();/刪除過期數(shù)據(jù)void search_by_card();/以下四個(gè)函數(shù)是計(jì)算時(shí)間函數(shù)int counterdays1(int year,int month,int day,int year1,int month1,int day1);/求某時(shí)間距離今天有多少天int counterdays(int year,int month,int day);/求某時(shí)間距離今天有多少天int eachyeartotal(int year,int month,int day);void getTime(int *year,int *month,int *day);voi

41、d countByYear();void Display_main_menu();/顯示主菜單void Display_main_menu()/菜單函數(shù)聲明 int m; do printf("tn");printf("t n"); printf("t 借閱管理 n");printf("tn");printf("tn"); printf("t 1【借書 】 n");printf("t 2【還書 】 n");printf("t 3【續(xù)借 】 n&q

42、uot;);printf("t 0【返回主菜單 】 n");printf("t 【請輸入0-3:】 n"); printf("tn"); scanf("%d",&m); switch(m)/用swich-case語句:用于枚舉選擇 case 1:borrowing_books();/借書break; case 2: bookreturn();/還書break;case 3: search_by_card();/查詢借書信息break;case 0: break; default: printf("

43、請輸入正確的按鍵!n");break; while(m!=0);/使用do-while語句:用于控制條件user.h全部內(nèi)容為#include<stdio.h>#include<string.h>#include<stdlib.h>/讀者管理/struct userint label;/0是老師 1是學(xué)生char card20;/借書證號 char name20;/姓名 char infor20;/老師是所屬學(xué)院 char num20;/老師 工號 學(xué)生是學(xué)號 int number;/借書量 int days;/借書天數(shù) int statue;/0

44、表示可用 1表示掛失 u100;int Day2=0,Num2=0;int u_num=0; void title_user(struct user us);void print_user(struct user us);void insert_user()/*錄入信息*/int flag=0,j=0,t;/表示此次錄入的人數(shù)printf("t*讀者信息錄入*n");printf(" 1*教師 2*學(xué)生");scanf("%d",&t); uu_num.label=t-1; printf("借書證號 :");scanf("%s",uu_num.card);printf("姓名:");scanf("%s",uu_);printf("所屬學(xué)院:");scanf("%s",uu_r);printf("學(xué)號:");scanf("%s",uu_num.num);uu_num.statue=0;uu_num.number=Numt-1;uu_num.day

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論