日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

C语言课设——图书信息管理系统

發布時間:2024/1/1 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言课设——图书信息管理系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其實這個題目要實現的功能比較清晰,主要就是文件和鏈表的操作以及基于這兩個基礎上的填刪改查等功能,當然也可以添加一些個性化的功能,比如按照圖書的檢索量來對庫存的圖書進行熱度的排序。

以下是我的這個圖書管理系統的功能圖以及菜單之間的調用情況(兩張圖基本一樣,第二張圖顯示了菜單的調用信息)

?

?

附上源碼,有好的建議歡迎各位指正!

第二部分的代碼是一個頭文件,里邊包含了我需要用的的頭文件以及三大部分關鍵函數的函數體,第一個是創建鏈表存入數據并返回頭指針,第二個是將鏈表放入相應的文件,第三個是將數據從文件中取出并形成新的鏈表。(Book,Administrator,Reader三個結構體各有一套函數)

在實際編程的過程中碰到一些問題,和大家分享一下:

1、讀者,管理員,書籍三者基礎數據(至少100條)的錄入,最初我采用的方法是只用一個函數將創建鏈表節點以及將節點數據存入文件,后來在編寫其他功能時由于多次用到將鏈表數據從文件取出建立鏈表以及將修改后的鏈表數據存回文件的操作,我就將原來的一個函數拆分成三個相對獨立的函數,分別是Create創建基礎數據的鏈表并返回頭指針,Save將鏈表數據存入相應文件(參數為鏈表頭指針),List將數據從文件中取出放在新建立的鏈表并返回鏈表的頭指針;

2、在寫到讀者借書還書的功能時,由于牽涉到要修改讀者的相關信息,你們就會涉及到登錄操作,當因為我的登錄函數沒有返回值(void),因此如果要完整的實現整個功能的話就需要將登錄程序原封不動的再寫一遍,因此我直接將登錄程序的返回值寫成struct Reader/Administrator *p類型,將登錄者本人的節點的頭指針返回,這樣可以再借書還書程序中直接調用。這樣還有一個好處,就是模擬了登錄的真實過程:登陸后可以直接對個人的數據進行操作和保存,不用每次都要輸入用戶名和密碼進行匹配,使程序邏輯更流暢;

3、我在遍歷鏈表打印不管是讀者亦或是書籍信息的時候會多輸出一行亂碼數據,然后我就在List函數的while循環那里設置斷點查看循環的情況,后來發現循環比我預想的多進行了一次,導致在文件數據已經全部儲存到鏈表之后又多創建了一個節點,然而該節點李并未存入任何實質性的數據。在深究為什么會多出一次循環的時候我發現自己似乎對文件位置標記的理解并不是很清楚,我的while循環的條件是(!feof(fp)),我最初認為當我創建完最后一個節點并將文件數據存進去之后由于此時文件位置標記已經移到了最后所以會少執行一次“將最后兩個節點鏈起來”的操作,因此我在循環中加了一個if語句,即if(feof(fp)),之后將執行那個被跳過的操作。由于前面已經證實循環在文件到達末尾之后似乎還會在進行一次循環,所以if語句就顯得沒有必要,因此我在去掉if語句之后果然輸出正常。但這不禁讓我更加疑問,文件位置標記在執行完一次fread后到底如何移動?

4、我在輸出的過程中也遇到了segmentation fault也就是段錯誤,在查找了相關博客之后我發現自己段錯誤的原因是指針訪問了非法內存,具體到我的程序中就是我在遍歷鏈表的過程中讓指針多向后移動了一個位置,但那個位置指向的內容是不可預知的,因此就出錯了。后來我發現在遍歷鏈表的過程中用一個指針反而比兩個指針更簡潔有效,因此我就將遍歷鏈表的那個循環改成了while(p!=NULL){…p = p->next};修改完之后沒有再出現段錯誤;

5、在打印讀者、管理員、和書籍相關信息時的排版問題,由于這些字符串的長度各不相同,因此在打印時容易出現錯位的現象;解決辦法:對于長度較短的讀者和管理員的相關數據采用\t進行修正,對于書名和作者名比較長的書籍數據來說采用指定域寬的方式進行對齊,如%25s

#include"Create & Save.h"void menu1(); void menu2(); void menu3(); void menu4(); void menu5(struct Administrator *p); void menu6(); void menu7(struct Reader *p); void menu8(); void menu9(); void menu10(); void reader_Register(); //讀者注冊 void administrator_Register(); //管理員注冊 struct Reader *reader_Log(); //讀者登錄 struct Administrator *administrator_Log(); //管理員登錄 void reader_Change(struct Reader *p); //讀者信息修改 void administrator_Change(struct Administrator *p); //管理員信息修改 void book_Research(); //圖書查詢 void book_Add(); //圖書添加 void book_Delete(); //圖書刪除 void book_Change(); //圖書信息修改 void reader_Print(); //讀者信息一覽表 void administrator_Print(); //管理員信息一覽表 void book_TopN(int N); //圖書Top(按照檢索量排名) void reader_bPrint(struct Reader *p); //讀者借閱信息一覽表 void reader_Borrow(struct Reader *p); //借閱功能 void reader_Return(struct Reader *p); //還書功能int N1=125; //圖書數量 int N2=125; //讀者數量 int N3=20; //管理員數量int main() {// printf("錄入書籍數據(書名 ISBN號 作者 庫存量 余量 檢索量)\n");// struct Book *head3;// head3 = book_Create(N1);// book_Save(head3);// printf("錄入管理員數據(用戶名 密碼)\n");// struct Administrator *head2;// head2 = administrator_Create(N3);// administrator_Save(head2);// printf("錄入讀者數據(用戶名 密碼 借閱本數 書名 ISBN 作者 庫存 余量 檢索量)\n");// struct Reader *head1;// head1 = reader_Create(N2);// reader_Save(head1);// printf("\n3s后跳轉至主菜單\n");// Sleep(3000);menu1();system("pause");return 0; }void menu1() {system("cls");int i;printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.登錄系統\t\t\t**\n");printf("\n**\t\t\t2.圖書系統\t\t\t**\n");printf("\n**\t\t\t3.退出系統\t\t\t**\n");printf("\n**********************************************************\n\n");printf("請選擇功能:");scanf("%d",&i);switch(i) {case 1: menu2();//登陸系統break;case 2: menu8();//圖書信息break;case 3: //退出系統default: {printf("\n退出成功!\n");} break;} }void menu2() {system("cls");int i;printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.用戶登錄\t\t\t**\n");printf("\n**\t\t\t2.用戶注冊\t\t\t**\n");printf("\n**\t\t\t3.讀者信息一覽表\t\t**\n");printf("\n**\t\t\t4.管理員信息一覽表\t\t**\n");printf("\n**\t\t\t5.返回上一級\t\t\t**\n");printf("\n**\t\t\t6.退出系統\t\t\t**\n");printf("\n**********************************************************\n\n");printf("請選擇功能:");scanf("%d",&i);switch(i){case 1: menu3();//用戶登錄break;case 2: menu4();//用戶注冊break;case 3: {system("cls");reader_Print();printf("\n按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu2();}} //讀者信息一覽表break;case 4: {system("cls");administrator_Print();printf("\n按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu2();}} //管理員信息一覽表break;case 5: menu1();//返回上一級break;case 6: //退出系統default: {printf("\n退出成功!\n");}break;} }void menu3() {system("cls");int i;printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.讀者登錄\t\t\t**\n");printf("\n**\t\t\t2.管理員登錄\t\t\t**\n");printf("\n**\t\t\t3.返回上一級\t\t\t**\n");printf("\n**\t\t\t4.退出系統\t\t\t**\n");printf("\n**********************************************************\n\n");printf("請選擇功能:");scanf("%d",&i);switch(i) {case 1: {struct Reader *p = reader_Log();printf("3s后將自動跳轉至讀者功能頁面...\n");Sleep(3000);menu7(p);}break;case 2: {struct Administrator *p1 = administrator_Log();printf("3s后將自動跳轉至管理員功能頁面...\n");Sleep(3000);menu5(p1);}//管理員相關break;case 3: menu2();//返回上一級break;case 4: //退出系統default: {printf("\n退出成功!\n");}break;} } void menu4() {system("cls");int i;printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.讀者注冊\t\t\t**\n");printf("\n**\t\t\t2.管理員注冊\t\t\t**\n");printf("\n**\t\t\t3.返回上一級\t\t\t**\n");printf("\n**\t\t\t4.退出系統\t\t\t**\n");printf("\n**********************************************************\n");printf("\n請選擇功能:");scanf("%d",&i);switch(i) {case 1: {reader_Register();printf("3s后將自動跳轉至登錄頁面...\n");Sleep(3000);struct Reader *p = reader_Log();menu7(p);}//讀者相關break;case 2: {administrator_Register();printf("3s后將自動跳轉至登錄頁面...\n");Sleep(3000);struct Administrator *p1 = administrator_Log();menu5(p1);}//管理員相關break;case 3: menu2();//返回上一級break;case 4: //退出系統default:{printf("\n退出成功!\n");} break;} } void menu5(struct Administrator *p) {system("cls");int i;printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.圖書添加\t\t\t**\n");printf("\n**\t\t\t2.圖書刪除\t\t\t**\n");printf("\n**\t\t\t3.圖書信息修改\t\t\t**\n");printf("\n**\t\t\t4.修改個人信息\t\t\t**\n");printf("\n**\t\t\t5.返回上一級\t\t\t**\n");printf("\n**\t\t\t6.退出系統\t\t\t**\n");printf("\n**********************************************************\n");printf("\n請選擇功能:");scanf("%d",&i);switch(i) {case 1: { //圖書添加book_Add();printf("\n請按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu5(p);}}break;case 2: {book_Delete();printf("\n請按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu5(p);}} //圖書刪除break;case 3: {menu6();book_Change(p);printf("\n請按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu5(p);}} //圖書信息修改break;case 4: {menu10();administrator_Change(p);printf("3s后將自動跳轉至登錄頁面,請重新登錄...\n");Sleep(3000);struct Administrator *p1 = administrator_Log();menu5(p1);} //修改個人信息break;case 5: menu3(); //返回上一級break;case 6:default: printf("退出成功!\n");break;} }void menu6() {system("cls");printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.ISBN號修改\t\t\t**\n");printf("\n**\t\t\t2.作者修改\t\t\t**\n");printf("\n**\t\t\t3.庫存量修改\t\t\t**\n");printf("\n**\t\t\t4.余量修改\t\t\t**\n");printf("\n**\t\t\t5.返回上一級\t\t\t**\n");printf("\n**\t\t\t6.退出系統\t\t\t**\n");printf("**********************************************************\n"); }void menu7(struct Reader *p) //讀者功能菜單 {system("cls");int i;printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.圖書借閱\t\t\t**\n");printf("\n**\t\t\t2.圖書歸還\t\t\t**\n");printf("\n**\t\t\t3.查看借閱信息\t\t\t**\n");printf("\n**\t\t\t4.修改個人信息\t\t\t**\n");printf("\n**\t\t\t5.返回上一級\t\t\t**\n");printf("\n**\t\t\t6.退出系統\t\t\t**\n");printf("\n**********************************************************\n");printf("\n請選擇功能:\n");scanf("%d",&i);switch(i){case 1: {reader_Borrow(p);printf("\n請按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu3(); //返回登錄界面借書信息才會更新}} //圖書借閱break;case 2: {reader_Return(p);printf("請按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu3(); //返回登錄界面借書信息才會更新}} //圖書歸還break;case 3: {system("cls");reader_bPrint(p);printf("\n請按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu7(p);}} //查看個人信息case 4: {menu9();reader_Change(p);} //修改個人信息break;case 5: menu3(); //返回上一級break;case 6: //退出系統default: printf("\n退出成功!\n");break;} } void menu8() //圖書系統功能菜單 {system("cls");int i;printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.圖書查詢\t\t\t**\n");printf("\n**\t\t\t2.圖書Top_N\t\t\t**\n");printf("\n**\t\t\t3.返回上一級\t\t\t**\n");printf("\n**\t\t\t4.退出系統\t\t\t**\n");printf("\n**********************************************************\n");printf("\n請選擇功能:\n");scanf("%d",&i);switch(i){case 1: {system("cls");book_Research();printf("\n請按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu8();}} //圖書查詢break;case 2: {system("cls");book_TopN(N1);printf("\n請按ESC鍵返回上一級!\n");char ch;if((ch=getch())==27){menu8();}} //圖書Topbreak;case 3: menu1();break;case 4:default: {printf("\n退出成功!\n");} break;} }void menu9() {system("cls");printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.用戶名修改\t\t\t**\n");printf("\n**\t\t\t2.用戶密碼修改\t\t\t**\n");printf("\n**\t\t\t3.借閱數量修改\t\t\t**\n");printf("\n**\t\t\t4.返回上一級\t\t\t**\n");printf("**********************************************************\n"); }void menu10() {system("cls");printf("**********************************************************\n");printf("**\t\t歡迎使用圖書管理系統V1.1\t\t**\n");printf("**********************************************************\n");printf("\n**\t\t\t1.用戶名修改\t\t\t**\n");printf("\n**\t\t\t2.用戶密碼修改\t\t\t**\n");printf("\n**\t\t\t3.返回上一級\t\t\t**\n");printf("**********************************************************\n"); }void reader_Register() //讀者注冊 {FILE *fp;fp = file_Open("Reader.dat","ab");char password[20];struct Reader reader;printf("請輸入用戶名(長度不超過20個字符):\n");scanf("%s",reader.name);while(1){printf("請輸入用戶密碼(長度不超過20個字符):\n");scanf("%s",reader.password);printf("請確認用戶密碼(長度不超過20個字符):\n");scanf("%s",password);if(strcmp(reader.password,password)!=0){printf("兩次密碼不一致,請重新輸入(長度不超過20個字符):\n");}else break;}reader.count = 0; //首次注冊只用收集用戶名和密碼信息,關于書的信息全是空if(fwrite(&reader,len1,1,fp)!=1){printf("file write error\n");return ;}fclose(fp);N2++;printf("恭喜你,注冊成功!\n"); //開始登錄 }void administrator_Register() //管理員注冊 {FILE *fp;fp = file_Open("Administrator.dat","ab");char password[20];struct Administrator administrator;printf("請輸入用戶名(長度不超過20個字符):\n");scanf("%s",administrator.name);while(1){printf("請輸入用戶密碼(長度不超過20個字符):\n");scanf("%s",administrator.password);printf("請確認用戶密碼(長度不超過20個字符):\n");scanf("%s",password);if(strcmp(administrator.password,password)!=0){printf("兩次密碼不一致,請重新輸入(長度不超過20個字符):\n");}else break;}if(fwrite(&administrator,len2,1,fp)!=1){printf("file write error\n");}fclose(fp); //開始登錄N3++;printf("恭喜你,注冊成功!\n"); }struct Reader *reader_Log() //讀者登錄 需要返回一個Reader結構體指針,以便我接下來借書還書時使用 {struct Reader *head=reader_List("rb"); //將文件數據取出來重新構建鏈表struct Reader *p;struct Reader reader;while(1){int flag=1;printf("請輸入用戶名:\n");scanf("%s",reader.name);printf("請輸入用戶密碼:\n");scanf("%s",reader.password);p = head;while(p!=NULL){if(strcmp(p->name,reader.name)==0){if(strcmp(p->password,reader.password)==0){printf("登錄成功!\n");break;}}if(p !=NULL){p = p->next;}}if(p==NULL){printf("用戶名或密碼錯誤,請重新輸入!\n");flag = 0;}if(flag) break;}return p; }void reader_Change(struct Reader *p) //讀者信息修改 {struct Reader *head = reader_List("rb");struct Reader *p1;p1 = head;while(p1!=NULL){if(strcmp(p1->name,p->name)==0){int i;printf("請選擇相應的修改項:\n");scanf("%d",&i);switch(i){case 1: {printf("請輸入修改后的用戶名:\n");scanf("%s",p1->name);} break;case 2: {printf("請輸入修改后的用戶密碼:\n");scanf("%s",p1->password);} break;case 3: {printf("請輸入修改后的借閱數量:\n");scanf("%d",&p1->count);} break;case 4: menu7(p);//返回上一級 這里在返回時有bug,明天改break;default: break;}reader_Save(head);if(i==1||i==2||i==3){printf("讀者信息修改成功!\n");printf("3s后將自動跳轉至登錄頁面,請重新登錄...\n");Sleep(3000);struct Reader *p2 = reader_Log();menu7(p2);}break;}p1 = p1->next; //簡化遍歷過程,不要用p2指針,容易亂}if(p1==NULL){printf("讀者信息不存在!\n");} }struct Administrator *administrator_Log() //管理員登錄 {struct Administrator *head=administrator_List("rb"); //將文件數據取出來重新構建鏈表struct Administrator *p;struct Administrator administrator;while(1){int flag=1;printf("請輸入用戶名:\n");scanf("%s",administrator.name);printf("請輸入用戶密碼:\n");scanf("%s",administrator.password);p = head;while(p!=NULL){if(strcmp(p->name,administrator.name)==0){if(strcmp(p->password,administrator.password)==0){printf("登錄成功!\n"); //注意break的位置,語句別放錯了break;}}if(p != NULL){p = p->next;}}if(p==NULL){printf("用戶名或密碼錯誤,請重新輸入!\n");flag = 0;}if(flag) break;}return p; }void administrator_Change(struct Administrator *p) //管理員信息修改 {struct Administrator *head = administrator_List("rb");struct Administrator *p1;p1 = head;while(p1!=NULL){if(strcmp(p1->name,p->name)==0){int i;printf("請選擇相應的修改項:\n");scanf("%d",&i);switch(i){case 1: {printf("請輸入修改后的用戶名:\n");scanf("%s",p1->name);} break;case 2: {printf("請輸入修改后的用戶密碼:\n");scanf("%s",p1->password);} break;case 3: menu5(p);break; //返回上一級default: break;} printf("管理員信息修改成功!\n");break;}p1 = p1->next; //簡化遍歷過程,不要用p2指針,容易亂}if(p1==NULL){printf("管理員信息不存在!\n");}administrator_Save(head); }void book_Add() //圖書添加函數 {FILE *fp;fp = file_Open("Book.dat","ab");struct Book book;printf("請輸入圖書名稱:\n");scanf("%s",book.name);printf("請輸入ISBN號:\n");scanf("%s",book.ISBN);printf("請輸入作者:\n");scanf("%s",book.author);printf("請輸入庫存量:\n");scanf("%d",&book.count1);book.count2 = book.count1; //剛添加的書余量等于庫存book.search_Num = 0; //新添加的書檢索量為0N1++;printf("該書已入庫!\n");if(fwrite(&book,len3,1,fp)!=1){printf("file write error!\n");exit(0);}fclose(fp); }void book_Research() //圖書信息查詢函數 {struct Book *head = book_List("rb"); //將文件數據取出來重新構建鏈表struct Book *p;p = head;struct Book book;printf("請輸入ISBN號:\n");scanf("%s",book.ISBN);while(p!=NULL){if(strcmp(p->ISBN,book.ISBN)==0){printf("**************************************************************************************************\n");printf("**\t書名\t\tISBN號\t\t作者\t\t庫存\t\t余量\t\t檢索量\t**\n");printf("**%12s%14s%16s%13d%16d%17d\t**\n",p->name,p->ISBN,p->author,p->count1,p->count2,p->search_Num);//不能用book來輸出,因為book里邊只有書名和ISBN號printf("***************************************************************************************************\n");p->search_Num++;break;}p = p->next;}book_Save(head); //因為檢索量信息有改動,需要重新存儲if(p==NULL){printf("圖書信息不存在!\n");} } void book_Delete() //刪除函數 {struct Book *head = book_List("rb");struct Book *p1,*p2;struct Book book;printf("請輸入要刪除的書籍ISBN號:\n");scanf("%s",book.ISBN);p1 = p2 = head;while(strcmp(book.ISBN,p1->ISBN)!=0 && p1->next!=NULL){p2 = p1;p1 = p1->next;}if(strcmp(book.ISBN,p1->ISBN)==0){if(p1==head){head = p1->next;}else {p2->next = p1->next;free(p1);}} else{printf("輸入信息有誤!\n");}printf("書籍刪除成功!\n");N1--;book_Save(head); }void book_Change(struct Administrator *p1) //書籍信息修改 {struct Book *head = book_List("rb");struct Book *p;struct Book book;printf("請輸入ISBN號:\n");scanf("%s",book.ISBN);p = head;while(p!=NULL){if(strcmp(p->ISBN,book.ISBN)==0){int i;printf("請選擇相應的修改項:\n");scanf("%d",&i);switch(i){case 1: {printf("請輸入修改后的ISBN號:\n");scanf("%s",p->ISBN);} break;case 2: {printf("請輸入修改后的作者名:\n");scanf("%s",p->author);} break;case 3: {printf("請輸入修改后的庫存量:\n");scanf("%d",&p->count1);} break;case 4: {printf("請輸入修改后的余量:\n");scanf("%d",&p->count2);} break;case 5: menu5(p1);break;case 6:default: printf("\n退出成功!\n");break;} printf("圖書信息修改成功!\n");break;}p = p->next; //簡化遍歷過程,不要用p2指針,容易亂}if(p==NULL){printf("圖書信息不存在!\n");}book_Save(head); }void reader_Print() //讀者信息一覽表 {struct Reader *head = reader_List("rb");struct Reader *p;p = head;printf("******************************************************************\n");printf("**\t\t 讀 者 信 息 一 覽 表 \t\t\t**\n");printf("******************************************************************\n");printf("**\t用戶名\t\t密碼\t\t\t借閱數量\t**\n");while(p!=NULL){printf("\n**\t%s\t\t%s\t\t%d\t\t**\n",p->name,p->password,p->count);p = p->next;}printf("******************************************************************\n"); }void administrator_Print() //管理員信息一覽表 {struct Administrator *head = administrator_List("rb");struct Administrator *p;p = head;printf("******************************************************************\n");printf("**\t\t管 理 員 信 息 一 覽 表\t\t\t**\n");printf("******************************************************************\n");printf("\n**\t\t用戶名\t\t\t密碼\t\t\t**\n");while(p!=NULL){printf("\n**\t\t%s\t\t\t%s\t\t**\n",p->name,p->password);p = p->next;}printf("\n******************************************************************\n"); } void book_TopN(int N) //N<=150 但是要把數據全部拿出來,但只輸出前N個 {struct Book *p1,*p2,temp;p1 = p2 = (struct Book*)malloc(len3*N);FILE *fp;fp = file_Open("Book.dat","rb");for(int i=0;i<N;i++){if(fread(p1,len3,1,fp)!=1){printf("file read error!\n");return ;}p1++;}for(int i=0;i<N;i++){ //冒泡排序for(int j=i+1;j<N;j++){if(p2[j].search_Num>p2[i].search_Num){temp = p2[i];p2[i] = p2[j];p2[j] = temp;}}}int n;printf("請輸入Top_n:\n");scanf("%d",&n);printf("******************************************************************************************\n");printf("**\t\t\t\t圖 書 熱 搜 排 名 Top%d\t\t\t\t**\n",n);printf("******************************************************************************************\n");printf("**\t\t書 名\t\t\t\t作 者\t\t\t檢 索 量\t**\n");for(int i=0;i<n;i++){printf("**%23s%27s%25d\t\t**\n",p2[i].name,p2[i].author,p2[i].search_Num);}printf("******************************************************************************************\n");free(p2); }void reader_bPrint(struct Reader *p) //讀者借閱信息一覽 {int count = p->count;struct Book *head = book_List("rb");struct Book *p1;printf("\n***************************************************************************************************\n");printf("**\t\t\t\t讀 者 借 閱 信 息 信 息 一 覽 表\t\t\t\t**\n");printf("***************************************************************************************************\n");printf("**\t書名\t\tISBN號\t\t作者\t\t庫存\t\t余量\t\t檢索量\t**\n\n");for(int i=0;i<count;i++){p1 = head; //還需要重新找出這本書,然后輸出信息while(p1!=NULL){if(strcmp(p1->ISBN,p->books[i].ISBN)==0){printf("**%12s%14s%16s%13d%16d%17d\t**\n",p1->name,p1->ISBN,p1->author,p1->count1,p1->count2,p1->search_Num);break;}p1 = p1->next;}}printf("\n***************************************************************************************************\n"); }void reader_Borrow(struct Reader *p) {struct Book *head = book_List("rb");struct Book *p1;struct Book book;printf("請輸入圖書名稱:\n");scanf("%s",book.name);p1 = head;while(p1!=NULL){if(strcmp(p1->name,book.name)==0){if(p->count==10){printf("借書已達上限!\n");break;}else if (p1->count2==0){printf("該書已全部被借出!\n");break;}else { // 先修改書的信息p1->search_Num++;p1->count2--;break;}}p1 = p1->next;}book_Save(head);//再修改讀者中關于所借書籍的信息struct Reader *head1 = reader_List("rb");struct Reader *p2;p2 = head1;while(p2!=NULL){if(strcmp(p2->name,p->name)==0){strcpy(p2->books[p2->count].name,p1->name);strcpy(p2->books[p2->count].ISBN,p1->ISBN);strcpy(p2->books[p2->count].author,p1->author);p2->books[p2->count].count1=p1->count1;p->books[p->count].count2=p1->count2;p->books[p->count].search_Num=p1->search_Num;p2->count++;break;}p2 = p2->next;}reader_Save(head1); //要把修改后的讀者信息存回文件里邊printf("借書成功\n"); }void reader_Return(struct Reader *p) //還書 {struct Book *head = book_List("rb");struct Book *p1;struct Book book;printf("請輸入圖書名稱:\n");scanf("%s",book.name);p1 = head;while(p1!=NULL){if(strcmp(p1->name,book.name)==0){// 先修改書的信息p1->count2++;break;}p1 = p1->next;}book_Save(head);//再修改人的信息struct Reader *head1 = reader_List("rb"); //要把修改后的讀者信息存回文件里邊struct Reader *p2;p2 = head1;while(p2!=NULL){if(strcmp(p2->name,p->name)==0){p2->count--;break;}p2 = p2->next;}reader_Save(head1);printf("還書成功!\n"); }//v1.0結束基本功能的代碼 //v1.1菜單功能完善,各項功能檢查

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h> #include<conio.h>#define len1 sizeof(struct Reader) #define len2 sizeof(struct Administrator) #define len3 sizeof(struct Book)struct Reader *reader_Create(int N); void reader_Save(struct Reader *head); struct Administrator *administrator_Create(int N); void administrator_Save(struct Administrator *head); struct Book *book_Create(int N); void book_Save(struct Book *head); FILE *file_Open(char fname[],char fopenWay[]); struct Book *book_List(char fopenWay[]); struct Reader *reader_List(char fopenWay[]); struct Administrator *administrator_List(char fopenWay[]);struct Administrator { //管理員char name[20]; //用戶名char password[20]; //登陸密碼struct Administrator *next; //一定要注意administrator的拼寫 };struct Book { //圖書char name[30];char ISBN[20];char author[30];int count1; //庫存總量int count2; //庫存余量int search_Num; //檢索量struct Book *next; };struct Reader { //讀者char name[20]; //用戶名char password[20]; //登陸密碼int count; //已借數量struct Book books[10]; //借書信息,上限是10本 //如果把Book結構體聲明放在Reader后面,程序會報錯struct Reader *next; };struct Reader *reader_Create(int N) {struct Reader *head;struct Reader *p1,*p2;int n=1;p1 = p2 = (struct Reader*)malloc(len1);scanf("%s%s%d",p1->name,p1->password,&p1->count);for(int i=0;i<p1->count;i++){scanf("%s%s%s%d%d%d",p1->books[i].name,p1->books[i].ISBN,p1->books[i].author,&p1->books[i].count1,&p1->books[i].count2,&p1->books[i].search_Num);}head = NULL;while(n<=N){if(n==1){head = p1;}else {p2->next = p1;}p2 = p1;if(n<N){p1 = (struct Reader *)malloc(len1);scanf("%s%s%d",p1->name,p1->password,&p1->count);for(int i=0;i<p1->count;i++){scanf("%s%s%s%d%d%d",p1->books[i].name,p1->books[i].ISBN,p1->books[i].author,&p1->books[i].count1,&p1->books[i].count2,&p1->books[i].search_Num);}}n++;}p2->next = NULL;printf("數據錄入成功!\n");return head; }void reader_Save(struct Reader *head) {FILE *fp;fp = file_Open("Reader.dat","wb");struct Reader *p = head;while(p!=NULL){if(fwrite(p,len1,1,fp)!=1){printf("file write error!\n");return ;}p = p->next;}fclose(fp);printf("恭喜你!讀者數據保存成功!\n"); }struct Administrator *administrator_Create(int N) {struct Administrator *head;struct Administrator *p1,*p2;int n=1;head = NULL;p1 = p2 = (struct Administrator *)malloc(len2);scanf("%s%s",p1->name,p1->password);while(n<=N){if(n==1){head = p1;}else {p2->next = p1;}p2 = p1;if(n<N){p1 = (struct Administrator *)malloc(len2);scanf("%s%s",p1->name,p1->password);}n++; //注意這個n的位置,不能放在上面的if里邊,會引起死循環}p2->next = NULL;printf("數據錄入成功!\n");return head; }void administrator_Save(struct Administrator *head) {FILE *fp;fp = file_Open("Administrator.dat","wb");struct Administrator *p = head;while(p!=NULL){if(fwrite(p,len2,1,fp)!=1){printf("file write error!\n");return ;}p = p->next;}fclose(fp);printf("恭喜你!管理員信息保存成功!\n"); }struct Book *book_Create(int N) {struct Book *head;struct Book *p1,*p2;head = NULL;p1 = (struct Book*)malloc(len3);scanf("%s%s%s%d%d%d",p1->name,p1->ISBN,p1->author,&p1->count1,&p1->count2,&p1->search_Num);int n=1;while(n<=N){if(n==1){head = p1;}else {p2->next = p1;}p2 = p1;if(n<N){p1 = (struct Book*)malloc(len3);scanf("%s%s%s%d%d%d",p1->name,p1->ISBN,p1->author,&p1->count1,&p1->count2,&p1->search_Num);}n++;}p2->next = NULL;printf("數據錄入成功!\n");return head; }void book_Save(struct Book *head) {FILE *fp;fp = file_Open("Book.dat","wb");struct Book *p;p = head;while(p!=NULL){if(fwrite(p,len3,1,fp)!=1){printf("file write error!\n");return ;}p = p->next;}fclose(fp);printf("恭喜你!書籍信息保存成功!\n"); } //漢字無法在cmd終端顯示,但在dev彈出終端中可以顯示FILE *file_Open(char fname[],char fopenWay[])//文件打開函數,相當有用 {FILE *fp;if((fp=fopen(fname,fopenWay))==NULL){printf("cannot open file!\n");return ;}return fp; }struct Book *book_List(char fopenWay[]) {struct Book *head=NULL;struct Book *p1,*p2;FILE *fp;fp = file_Open("Book.dat",fopenWay);p1 = p2 = (struct Book*)malloc(len3);int n=1;fread(p1,len3,1,fp);while(!feof(fp)){ //這里有一個關于文件位置標記的bugif(n==1){head = p1;}else {p2->next = p1;}p2 = p1;p1 = (struct Book*)malloc(len3);fread(p1,len3,1,fp);n++;}fclose(fp);p2->next = NULL;free(p1);return head; }struct Reader *reader_List(char fopenWay[]) {struct Reader *head=NULL;struct Reader *p1,*p2;FILE *fp;fp = file_Open("Reader.dat",fopenWay);p1 = p2 = (struct Reader*)malloc(len1);int n=1;fread(p1,len1,1,fp);while(!feof(fp)){if(n==1){head = p1;}else {p2->next = p1;}p2 = p1;p1 = (struct Reader*)malloc(len1);fread(p1,len1,1,fp);n++;}fclose(fp);p2->next = NULL;free(p1);return head; }struct Administrator *administrator_List(char fopenWay[]) {struct Administrator *head=NULL;struct Administrator *p1,*p2;FILE *fp;fp = file_Open("Administrator.dat",fopenWay);p1 = p2 = (struct Administrator*)malloc(len2);int n=1;fread(p1,len2,1,fp);while(!feof(fp)){if(n==1){head = p1;}else {p2->next = p1;}p2 = p1;p1 = (struct Administrator*)malloc(len2);fread(p1,len2,1,fp);n++;}fclose(fp);p2->next = NULL;free(p1);return head; }

總結

以上是生活随笔為你收集整理的C语言课设——图书信息管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

日韩精品一区二区三区水蜜桃 | 久草在线高清视频 | 最近更新中文字幕 | 色婷婷狠狠18 | 丁香婷婷网 | 99精品视频在线播放观看 | 97在线超碰 | 最近免费观看的电影完整版 | av超碰在线 | 在线观看精品黄av片免费 | 国产成人精品一二三区 | 综合国产视频 | 久久亚洲欧美 | 深爱激情婷婷网 | 国产一二区精品 | 97成人在线免费视频 | 一级精品视频在线观看宜春院 | 欧美一级网站 | 一二三精品视频 | 精品一二三区 | 在线电影播放 | 久草在线资源网 | 久久国产精品久久国产精品 | 正在播放久久 | 精品一区二区三区在线播放 | 午夜精品电影一区二区在线 | 久久系列| 最近中文字幕免费大全 | 在线激情网 | 国产探花视频在线播放 | 美女视频黄免费网站 | 欧美日韩一区二区在线观看 | 激情视频免费观看 | 国外调教视频网站 | 四虎成人av | 国产精品在线看 | 免费看亚洲毛片 | 超碰97国产在线 | 奇米影视在线99精品 | 国产不卡一二三区 | 狠狠干夜夜操 | 久久福利国产 | 久草精品网 | 在线国产能看的 | 一级片视频免费观看 | 免费看黄在线看 | www免费在线观看 | 探花视频免费观看 | 国产在线精品一区二区 | 天天操天天色天天 | 精品国产区在线 | 91人网站 | 午夜私人影院久久久久 | 国产成在线观看免费视频 | 99爱在线 | 色欧美综合| 久久久精品在线观看 | 97精品在线 | 成 人 黄 色 免费播放 | 天天搞天天干天天色 | 91看片淫黄大片一级在线观看 | 激情网五月婷婷 | 国产高清在线视频 | 久久在线一区 | 中文字幕在线视频网站 | 天天艹天天 | 婷婷综合视频 | 欧美极品在线播放 | 亚洲视频精选 | 国产探花 | 免费男女羞羞的视频网站中文字幕 | 91在线麻豆 | 成人午夜精品福利免费 | 天天干天天操天天 | 香蕉影院在线观看 | 久久免费视频这里只有精品 | 91av观看 | 午夜成人影视 | 亚洲黄色免费网站 | 国产尤物在线视频 | 九九精品毛片 | 中文字幕精品一区久久久久 | 精品国产一区二区三区蜜臀 | 久久在线看| 欧美日韩国产亚洲乱码字幕 | 青青河边草免费观看完整版高清 | 天天综合天天综合 | 欧美性生活免费 | 伊人av综合| 天天夜夜操 | 久久久久久久国产精品 | 国产中文字幕大全 | 精品电影一区 | 欧美精品久久久久久久久久 | 国产在线a免费观看 | 久久av网 | 爱爱av网| 久久国产热 | 国产日韩欧美在线观看 | 黄色片网站大全 | 免费一级片在线观看 | 欧美日韩国产一区 | 色综合久久88色综合天天6 | 伊人婷婷 | 国内精品久久久 | 不卡av在线免费观看 | 亚洲精品小区久久久久久 | 欧洲视频一区 | 天无日天天操天天干 | 免费a视频在线 | 国产永久免费观看 | 亚洲精品福利在线观看 | 国产免费人成xvideos视频 | 婷婷 综合 色 | 99精品热 | 日韩免费观看一区二区三区 | 天天·日日日干 | 91av视频免费观看 | 丁香婷婷激情 | 色婷婷免费视频 | 综合网天天色 | 欧美精品v国产精品v日韩精品 | 三级a毛片| 免费美女av| 国内精品久久久久国产 | 国内成人精品视频 | 五月开心激情网 | 色黄www小说 | 国产亚洲激情视频在线 | 91精品久久久久久综合乱菊 | 97超碰在线久草超碰在线观看 | 探花视频免费观看 | 精选久久 | 国产一区视频在线观看免费 | 在线观看色网 | 最新av网址在线 | 国产日韩精品一区二区在线观看播放 | 久草在线高清视频 | 久久精品草| 午夜精品在线看 | 亚洲国产一二三 | 国产在线观看黄 | 麻豆免费在线播放 | 日韩精品专区在线影院重磅 | 日本午夜在线亚洲.国产 | 亚洲精品美女视频 | 国产精品久久久久久久久久ktv | 日韩精品一区电影 | 99精品电影 | 国产精品自在欧美一区 | 国产精品免费久久久久久久久久中文 | 91夫妻视频 | 婷婷久久综合网 | 日日干狠狠操 | 国产 成人 久久 | 亚洲视频www | 欧美视频在线观看免费网址 | 国产精品久久久久久久久久久久久久 | 天天干天天拍天天操天天拍 | 久久免费视频7 | 久久综合日 | 久久www免费人成看片高清 | 男女精品久久 | 日韩高清二区 | 玖玖在线资源 | 亚洲美女免费精品视频在线观看 | 久久亚洲成人网 | 国产91精品看黄网站 | 免费观看v片在线观看 | 成人欧美一区二区三区在线观看 | 亚洲精品午夜久久久 | 精品在线观看一区二区三区 | 99久久精品久久久久久动态片 | 日日夜夜精品免费视频 | 免费在线观看午夜视频 | 久久97久久| 国产99自拍 | 天天色天天操综合 | 日韩aa视频| 日韩videos高潮hd | 中文字幕大全 | 国产视频 亚洲视频 | 亚洲精品高清视频在线观看 | 久草综合在线 | 日韩免费一二三区 | 视频一区视频二区在线观看 | 日韩大片在线 | 日韩精品视频免费专区在线播放 | 91天堂影院 | 激情av网址| 337p日本欧洲亚洲大胆裸体艺术 | 最新在线你懂的 | 亚洲 欧洲 国产 日本 综合 | 成人av电影在线 | 久久午夜精品影院一区 | 国产私拍在线 | 成人亚洲精品久久久久 | 91视频黄色 | 成人av在线电影 | 国产精品视频地址 | 在线观看亚洲国产精品 | 人人狠 | 男女激情免费网站 | 国产高清av | 久久在线视频在线 | 欧美日本三级 | 99久热在线精品视频成人一区 | 公开超碰在线 | 天天操天天怕 | 超碰97在线资源站 | 国产一级电影 | 国产精品麻豆免费版 | 精品欧美乱码久久久久久 | 在线免费视频你懂的 | 国产精品午夜在线 | 中文字幕黄色网址 | 国产精品精品久久久 | 亚洲 欧美 国产 va在线影院 | 日韩极品视频在线观看 | 五月婷婷导航 | 五月天激情在线 | 久草视频网 | 精品一区二区影视 | 亚洲精品视频在 | 久久福利剧场 | 久久99久久精品 | 日韩美女黄色片 | 精品国产成人av | 免费影视大全推荐 | 国产在线2020 | 狠狠躁日日躁夜夜躁av | 91视频91色| 91免费版成人 | 涩涩网站在线观看 | 五月激情综合婷婷 | 久久久久久久久久国产精品 | 香蕉蜜桃视频 | 97超碰在线播放 | 色综合久久久久综合体桃花网 | 久久99国产精品二区护士 | 九九九九热精品免费视频点播观看 | 精品自拍网 | 国产91综合一区在线观看 | 日韩免费不卡av | 九九精品久久久 | 天天草天天色 | 国产精品久久伊人 | 亚洲一一在线 | 在线免费黄色av | 免费a视频 | 亚洲网久久 | 99久高清在线观看视频99精品热在线观看视频 | 91尤物国产尤物福利在线播放 | 国产精品毛片一区二区 | 国产精品久久久久久久电影 | 天天爱天天操天天爽 | 色播亚洲婷婷 | 久久久久久中文字幕 | 亚洲精品在线观看网站 | 免费高清无人区完整版 | 日本久久99 | 97视频免费| 亚洲免费婷婷 | 99re亚洲国产精品 | 久久综合免费视频 | 中文字幕一区在线 | 五月激情综合婷婷 | 免费在线播放视频 | 欧美一级日韩免费不卡 | 国产精品不卡视频 | 91 在线视频| 久久久久久久久福利 | 国产精品久久久 | 高潮久久久 | 伊甸园av在线 | 日韩av视屏在线观看 | 日韩中文久久 | 中文有码在线 | 日韩av五月天 | 91九色国产蝌蚪 | 中文字幕一区二区三区四区久久 | 国产aaa毛片| 国产一级一片免费播放放 | 欧美日韩啪啪 | 亚洲黄色av | 国产大陆亚洲精品国产 | 国内成人综合 | 午夜精品一区二区三区视频免费看 | 国产精品一区二区三区观看 | 国产中文字幕视频 | 91探花国产综合在线精品 | 欧洲一区二区在线观看 | 精品国产视频在线观看 | 国产精品麻豆三级一区视频 | 国产人成免费视频 | 911久久香蕉国产线看观看 | 中文字幕九九 | 免费在线激情视频 | 日韩欧美一区二区三区视频 | 美女久久久 | 天天射天天色天天干 | 久久综合中文色婷婷 | 精品国产理论 | 国产三级av在线 | 欧美一级免费高清 | 精品国产大片 | 久久视频国产精品免费视频在线 | 婷婷av电影 | 国产亚洲精品久久久久久久久久 | 91黄色影视| 久草久热 | av大片免费在线观看 | 中文字幕在线免费观看视频 | 久久国产精品久久精品国产演员表 | 中文字幕在线免费播放 | 久久免费视频在线观看6 | 夜夜操天天 | 国产成人三级一区二区在线观看一 | 国产亚洲精品久久久久久移动网络 | 啪啪激情网 | 激情婷婷色 | 视频一区二区精品 | 成年人视频在线观看免费 | 欧美大码xxxx | 在线观看久草 | 久久精品欧美日韩精品 | 国产精品美女久久久久久久 | 国内精品中文字幕 | 欧美91精品久久久久国产性生爱 | 九九爱免费视频 | 狠狠综合 | 日本在线观看一区二区 | 日本乱码在线 | 久久av一区二区三区亚洲 | 亚洲丝袜一区二区 | 中文字幕在线播放av | 91自拍91| 91在线亚洲 | 日韩欧美一区二区在线 | 国产高清av免费在线观看 | 超碰人在线 | 中文字幕电影网 | 久久黄色片 | 久久草| 免费a级大片 | 99福利影院| 久久精品国产免费 | 久久 一区 | 91天天视频 | 日韩在线一区二区免费 | av免费网站在线观看 | 国产高清免费在线观看 | 国产打女人屁股调教97 | 成人精品福利 | 91免费国产在线观看 | 青青草国产成人99久久 | 男女拍拍免费视频 | 五月综合激情 | 国产精品一区二区三区在线免费观看 | 日韩精品一区二区三区在线播放 | 精品久久久久久一区二区里番 | 在线免费视频a | 久二影院 | 久久在现视频 | 日韩亚洲在线视频 | 波多野结衣小视频 | 2018好看的中文在线观看 | 成人亚洲网 | 91精品欧美一区二区三区 | 色在线中文字幕 | 日本久久片 | 亚洲一级久久 | 丁香六月婷婷综合 | 亚洲激情免费 | 久久精品日产第一区二区三区乱码 | 精品国产一区二区三区男人吃奶 | 国产精品一区二区免费视频 | 1024在线看片 | 国产无区一区二区三麻豆 | 少妇av片 | 欧美久久影院 | 久久精品亚洲综合专区 | 91亚洲精品久久久蜜桃 | 免费观看的av| 青青草在久久免费久久免费 | 久草视频首页 | 欧美极品久久 | 亚洲黄色在线观看 | 精品久久久久国产免费第一页 | 国产精品乱看 | 久久艹在线观看 | 亚洲专区在线视频 | 久久国产精品一二三区 | 成人aaa毛片 | 福利二区视频 | 2024av | 91一区啪爱嗯打偷拍欧美 | 国产a级免费 | 日日成人网 | 国产精品手机在线观看 | 久久草在线视频国产 | 欧美日韩一区二区在线观看 | 精品免费一区二区三区 | 人人看人人爱 | 黄色av免费在线 | 黄色高清视频在线观看 | 97人人射 | 亚洲精品综合一区二区 | 亚洲第一av在线播放 | 九九久久久久久久久激情 | 久久天堂亚洲 | 一区二区三区在线观看 | 97操操| 久久国产精品99久久久久久丝袜 | 精品久久久久久久久久 | 黄色免费观看视频 | 国产成人福利在线观看 | 色网站国产精品 | 国产精品久久久久久爽爽爽 | 国产精品一区二区三区久久 | 99热在线观看免费 | 国产午夜精品久久久久久久久久 | 日韩av成人在线观看 | 美女黄久久 | 久久精品欧美 | 国产精品视频内 | 在线观看免费视频你懂的 | 不卡电影免费在线播放一区 | 亚洲情婷婷 | 在线成人一区二区 | 亚洲永久字幕 | 丁香久久| 91精品日韩 | 欧美久久成人 | 国产青草视频在线观看 | 黄色在线免费观看网址 | 久久精品久久精品久久 | 日韩高清一区二区 | 日韩有码在线播放 | a视频免费在线观看 | 日韩成人在线免费观看 | 国产一区二区三区高清播放 | 国产日产在线观看 | 99国产在线视频 | 伊人天堂av | 青青草视频精品 | 丁香婷婷综合激情 | 久久综合影视 | 91精品免费视频 | 波多野结衣一区 | 亚洲电影毛片 | 一区二区三区福利 | 亚洲另类xxxx | 在线观看成年人 | 91av99| 久久综合九色欧美综合狠狠 | 国产精品中文字幕av | 一本一本久久a久久精品综合妖精 | 久久久久久国产精品亚洲78 | 欧美日韩国产高清视频 | 激情五月婷婷综合 | 在线观看av大片 | 久久久久中文 | 日韩美女一级片 | 精品国产成人av在线免 | 午夜精品一区二区三区在线观看 | 欧美视频日韩 | 92av视频| 久久九九久久九九 | 日韩精品不卡在线 | 国产美女永久免费 | 天天操夜夜爱 | 亚洲电影一级黄 | 蜜桃视频日本 | 在线影院 国内精品 | 日本爱爱免费视频 | 激情欧美丁香 | 欧美另类tv | 日韩a在线播放 | 黄网站色成年免费观看 | 在线视频 精品 | 亚洲精品网址在线观看 | 狠狠色丁香久久婷婷综 | 国产在线p | 亚洲国产午夜精品 | 超碰97成人 | 国产va饥渴难耐女保洁员在线观看 | 天天看天天干天天操 | 美国av片在线观看 | 99在线国产 | 日本精品中文字幕在线观看 | 天天操夜| 亚洲综合视频在线 | 亚洲精品国产精品乱码在线观看 | 九九免费在线视频 | av免费在线观 | 亚洲一区二区三区四区精品 | 97爱| 免费网址你懂的 | www.夜夜操 | 成人xxxx| 91精品国产高清自在线观看 | 国产精品免费高清 | 又黄又爽又刺激 | 伊人热| 久久综合视频网 | 999在线精品 | 国产精品中文 | 日韩av福利在线 | 日本久久久久久科技有限公司 | 国产91综合一区在线观看 | 丁香网五月天 | 天天艹天天操 | 91精品蜜桃 | av三级av | 国产精品6999成人免费视频 | 日本久久综合视频 | 国产精品久久久av | 日韩精品久久中文字幕 | 日本久久免费电影 | 欧美在线视频一区二区三区 | 69av国产| 久久久久久久国产精品影院 | 国产91对白在线播 | 正在播放一区 | 久草在线中文888 | a视频在线观看 | 九九九九九精品 | 黄色字幕网 | 亚洲欧美精品在线 | 狠狠干激情 | 亚洲成人在线免费 | 国产亚洲精品久久久久久网站 | 在线观看蜜桃视频 | 色视频成人在线观看免 | av中文字幕日韩 | 日韩在线中文字幕视频 | 国产r级在线观看 | 狠狠色丁香婷婷综合最新地址 | 国产精品综合在线观看 | 婷婷六月网| 欧美综合在线观看 | 国产中文a | 操碰av | 在线小视频国产 | 久久天堂影院 | 天天操天天操天天操天天操天天操 | 精品一区二区在线播放 | 天天爽天天搞 | 欧美另类交在线观看 | 欧美亚洲成人xxx | 国产精品久久久久久久久久ktv | 91一区啪爱嗯打偷拍欧美 | 中文久草| 在线观看免费日韩 | 热久久最新地址 | 日韩av手机在线看 | av免费在线网 | 日日干天天 | 亚洲欧美日韩一区二区三区在线观看 | 999国内精品永久免费视频 | 天天插日日操 | 久久久久久国产精品亚洲78 | 在线播放国产一区二区三区 | www.夜夜草| 日韩三级精品 | 国产精品久免费的黄网站 | 日本黄色免费播放 | 丁香六月激情 | 亚洲日韩中文字幕在线播放 | 7777精品伊人久久久大香线蕉 | 久久五月婷婷丁香 | 人人舔人人 | 91成人精品一区在线播放 | 欧美日韩另类在线 | 特级西西人体444是什么意思 | 欧美成人h版电影 | 日本中文字幕在线 | 人人爽人人av | 亚洲精品在线观看网站 | 日韩中文字幕a | 国内视频| 日韩三级久久 | 麻豆视频大全 | 激情五月婷婷激情 | 麻豆视频国产 | 国产在线久草 | 一本一本久久a久久精品综合妖精 | 伊人亚洲综合 | www.成人久久| 日韩高清三区 | 美女网站免费福利视频 | 久草com| 亚洲国产中文字幕在线 | 国产一区在线免费 | 亚洲天堂首页 | 99久久精品久久久久久清纯 | 色99导航| 毛片3 | 色噜噜噜噜 | 亚洲精品国产品国语在线 | 久久成人免费 | 在线观看不卡的av | 蜜桃视频成人在线观看 | 在线免费观看欧美日韩 | 最新国产在线 | 人人添人人澡人人澡人人人爽 | 99电影456麻豆 | 中文字幕色在线 | 91探花国产综合在线精品 | 亚洲va韩国va欧美va精四季 | 首页av在线| 九九热中文字幕 | 91精品视频在线看 | 国内精品久久影院 | 丝袜美腿在线视频 | 伊人色综合网 | 操操碰 | 蜜臀av在线一区二区三区 | 久久色亚洲 | 99久久99久久 | 天堂资源在线观看视频 | www狠狠操 | 久久99在线 | 日韩精品一区二区久久 | 特级黄色一级 | 69精品视频 | 久久久久久国产精品999 | 国产精品国产三级国产aⅴ入口 | 国产999精品久久久久久 | 欧美日韩视频在线一区 | 中文字幕永久免费 | 欧美一级淫片videoshd | 国产码电影 | 欧美日韩国产精品一区二区亚洲 | ,午夜性刺激免费看视频 | 成人黄大片 | 国产一级视屏 | 人人爱人人射 | 99久久久国产免费 | 人人舔人人干 | 国内精品久久久久久久久久清纯 | 国产精品青青 | 国产亚洲亚洲 | 日韩在线免费视频 | 久久av电影 | 久草在线高清视频 | 久久免费视频在线观看6 | 欧美不卡视频在线 | 精品久久久久久综合日本 | 免费视频一区二区 | 国产69精品久久久久久 | 人人dvd | 偷拍福利视频一区二区三区 | 午夜久久久久久久久 | 欧美精品久久久久久久久老牛影院 | 天天干天天拍 | 婷婷六月丁香激情 | 成人av免费在线播放 | 精品国产一区二区三区久久久蜜臀 | 天天射夜夜爽 | 久久久久久毛片 | 日日天天干| 国产va精品免费观看 | 精品国产一区二区三区av性色 | 色91在线视频| 国产美女精彩久久 | 久久免费视频播放 | 亚洲精品乱码久久久久久蜜桃欧美 | 免费福利片2019潦草影视午夜 | 精品国产激情 | 99久久精品免费看国产免费软件 | 国产精品久久99精品毛片三a | 亚洲三级视频 | 免费看一及片 | 日日夜夜精品免费视频 | 国产精品毛片一区 | 色在线免费| 国产免费影院 | 91成人破解版 | 久久久久久久久久久久电影 | 日韩精品一区二区三区水蜜桃 | 黄色成年 | 一区二区三区在线视频111 | 亚洲国产日韩一区 | 日韩欧美在线高清 | 午夜av一区二区三区 | 国产精品婷婷午夜在线观看 | 国产精品久久免费看 | 欧美日韩性| 国内久久精品 | 有码中文字幕在线观看 | 久久免费视频在线 | 9在线观看免费高清完整版在线观看明 | 97免费在线观看视频 | 国产一级特黄电影 | 人人爱在线视频 | 欧美成人区 | 国产第一福利 | 日韩高清二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 视频一区在线播放 | 99精品免费在线 | 五月婷婷播播 | 二区三区在线观看 | 91av综合 | 日韩精品欧美专区 | 99久热在线精品视频 | 在线视频18在线视频4k | 国产在线观看你懂得 | 国产精品久久久久久久久免费 | 中国黄色一级大片 | 91网站在线视频 | 九九九在线 | 九九热视频在线播放 | 日本3级在线观看 | 91在线视频免费91 | www.久久com| 啪啪小视频网站 | 欧美精品一区二区性色 | 国产一级视频在线观看 | 久久在线免费观看视频 | 午夜美女网站 | 91免费版成人 | 亚洲成熟女人毛片在线 | 成人黄色大片在线观看 | 日本久久久久久久久久 | 成人午夜av电影 | 深爱开心激情 | 久久99精品国产麻豆婷婷 | 天堂在线一区 | 97视频免费在线观看 | 成人免费视频免费观看 | 久久99国产精品自在自在app | 在线 精品 国产 | 狠狠婷婷 | 91丨九色丨高潮丰满 | 国产91精品在线观看 | 精品久久国产精品 | 日韩精品在线免费播放 | 日韩av电影网站在线观看 | 成年人黄色在线观看 | 久久国产精品久久久久 | 色综合久久88 | 欧美日韩视频在线播放 | 91精品国产99久久久久 | 99久久99久久综合 | 中国一 片免费观看 | 国产成人精品综合久久久久99 | 色综合天天干 | 国产片免费在线观看视频 | 特黄一级毛片 | 精品福利网 | 毛片精品免费在线观看 | 国产精品久久久久永久免费观看 | 蜜臀av夜夜澡人人爽人人桃色 | 黄色毛片视频免费 | 国语自产偷拍精品视频偷 | 日日爱av | 日韩三级精品 | 久久国产露脸精品国产 | 综合激情 | av九九九| 国产精品中文字幕在线播放 | 中文字幕视频在线播放 | 麻豆免费观看视频 | 在线综合色 | 中文字幕免费在线 | 久草免费在线观看视频 | 超碰97中文 | 色夜影院 | 久久视频在线观看免费 | 欧美色黄 | 日本精品久久久久影院 | 丁香婷婷成人 | 久久久久国产精品免费免费搜索 | 天天操天天摸天天干 | 黄色片网站av | 欧美日本一二三 | 国产v亚洲v | 亚洲精品免费视频 | 黄色小网站在线 | 九九热久久免费视频 | 久久国产精品影视 | 少妇视频在线播放 | 99久久婷婷国产 | 日韩高清在线看 | 日韩a在线播放 | 成人精品久久久 | 波多野结衣电影一区二区三区 | 国产精品久久久久久爽爽爽 | 成人免费影院 | 国产视频亚洲 | 亚洲精品在线观看的 | 欧美精品乱码久久久久久 | 国产精品久久久久久69 | 国产91精品高清一区二区三区 | 91高清完整版在线观看 | 国产亚洲精品久久久久久电影 | 亚洲人成人天堂h久久 | 成人动漫一区二区三区 | 最近中文字幕久久 | 精品亚洲成人 | 久久夜色精品国产欧美乱 | 国产精品久久在线观看 | 一区二区三区在线电影 | 久久婷五月 | 狠狠色噜噜狠狠狠狠2021天天 | 久久精品影片 | 色a4yy| 在线观看成人网 | 在线观看黄色小视频 | 日本性生活一级片 | 欧洲色综合 | 日韩欧美一区二区三区视频 | 福利视频一区二区 | 久久综合激情 | 国产99久久久精品 | 国产精品一区二区久久久久 | 久久99日韩 | 99视频在线精品国自产拍免费观看 | 西西444www大胆高清视频 | 日韩网站在线看片你懂的 | 日韩理论电影在线观看 | 成人黄色电影在线播放 | 国产黄a三级 | 天天操天天操天天操天天操天天操 | 亚洲精品国 | 国产精品自产拍在线观看 | 国产 欧美 日产久久 | 亚洲精品人人 | 91女神的呻吟细腰翘臀美女 | 在线免费高清一区二区三区 | 国产在线欧美在线 | 毛片网在线观看 | www日| 久久一区国产 | 久久久精品视频网站 | 色www永久免费 | 欧美激情在线网站 | 9999精品视频 | 成人精品视频久久久久 | 免费观看成人网 | 国产一区二区在线免费播放 | 色欧美88888久久久久久影院 | 久久午夜电影院 | 婷婷中文字幕在线观看 | 久久欧美精品 | 人人爽人人舔 | 国产一区二区高清不卡 | 激情狠狠干 | 一区av在线播放 | 四虎成人免费影院 | 天天综合网久久 | 国产精品视频观看 | 久久成年人网站 | 免费高清在线视频一区· | 999久久久久久久久 69av视频在线观看 | 国产麻豆精品久久一二三 | 一区二区中文字幕在线播放 | 欧美日韩亚洲在线观看 | 欧美日韩精品影院 | 伊人va | 人人爽人人澡 | 精品美女在线观看 | 亚洲综合色视频在线观看 | 天天操人人干 | 天天插日日操 | 91超碰在线播放 | 亚洲资源一区 | www.xxxx变态.com | 91日韩在线| 97涩涩视频 | 国产中出在线观看 | 成人资源在线播放 | 亚洲区视频在线观看 | 国产在线一区二区 | 久久久国产精品免费 | 亚洲精品网站 | 91亚洲狠狠婷婷综合久久久 | 久久免费观看视频 | 丁香六月婷婷综合 | 欧美va天堂在线电影 | 在线观看日韩中文字幕 | 黄色小说免费观看 | 超级碰碰碰视频 | 精品一区 在线 | 欧美日韩精品影院 | 久久免费在线观看视频 | 91在线91拍拍在线91 | 国产精品 美女 | 亚洲精品视频偷拍 | 国产成人久久久77777 | 99精品视频在线观看视频 | 国产一区二区久久久久 | 免费色黄 | 99久久久国产精品免费99 | 欧美日韩精品国产 | 91av小视频 | 久久久国产精品久久久 | 久久99九九99精品 | 激情五月婷婷综合 | 日本在线观看视频一区 | 国产精品久久久久久久av大片 | 国产三级视频在线 | 日韩一区二区免费播放 | 人人爱人人射 | 99久久电影 | 欧美了一区在线观看 | 日韩免费一二三区 | 婷婷五天天在线视频 | 97在线精品国自产拍中文 | 国产亚洲精品久久久网站好莱 | 免费av网站在线看 | 五月婷久| 久久一区二区三区日韩 | 免费福利视频网站 | 亚州黄色一级 | 婷婷五情天综123 | 免费久久网 | 久久精品免费观看 | 久久香蕉影视 | 人人草在线观看 | 中文字幕在线观看免费高清电影 | 欧美福利在线播放 | 成人在线一区二区 | 国产破处在线播放 | 久久精品国产99国产 | 精品国产亚洲日本 | 国产精品久久久久久久久久久久久久 | 一级黄色大片 | 亚洲精品美女久久久久 | 一区二区 久久 | 日本成址在线观看 | 国产精品毛片久久蜜 | 九九热精品视频在线观看 | 亚洲第一中文字幕 | 亚洲免费精品一区二区 | 深夜男人影院 | 婷婷色网视频在线播放 | 一本一道久久a久久精品 | 最近中文字幕国语免费高清6 | 精品在线看| 99亚洲国产精品 | 国产在线观看99 | 精品国产乱子伦一区二区 | 亚洲va欧美va人人爽春色影视 | 四虎永久国产精品 | 成人av高清 | 97综合网 | 国产精品视频在线看 | av一本久道久久波多野结衣 | 天天干天天综合 | 一级α片免费看 | 在线观看亚洲视频 | 中文字幕在线视频网站 | 丝袜网站在线观看 | 日韩午夜剧场 | www国产精品com | 精品成人国产 | 欧美日韩不卡一区二区三区 | 国产+日韩欧美 | 高潮久久久久久 | 亚洲一级电影在线观看 | 免费视频久久久久 | 亚洲天天做| 欧美一区二区在线免费观看 | 日韩精品免费一区 | 日韩免费视频 | 一区二区三区在线观看免费视频 | 顶级欧美色妇4khd | 黄网站免费大全入口 | 亚洲狠狠干 | 亚洲精品久久久久www | 国产18精品乱码免费看 | 久久九九久久九九 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 奇米影视8888在线观看大全免费 | 在线观看91久久久久久 | 99久久99久久免费精品蜜臀 | 亚洲精品欧美专区 | 在线观看黄色 | 国产精品福利久久久 | 久久精品这里精品 | 国产一区高清在线 | 在线观看完整版免费 | av福利超碰网站 | 中文字幕日韩一区二区三区不卡 | 国产视频1区2区3区 久久夜视频 | 日韩成片| 九九久久精品视频 | 国产亚洲va综合人人澡精品 | 日韩电影中文字幕 | 成人黄色片免费看 | 国产九色91 | 欧美激精品 | 亚洲国产视频a | 久久久久久综合 |