當前位置:首頁 » 網購平台 » 購物車代碼分析
擴展閱讀
寧波奧德賽優惠價格 2021-03-15 14:26:02
丹尼斯購物卡能掛失么 2021-03-15 14:25:58
淘寶購物指紋驗證失敗 2021-03-15 14:24:44

購物車代碼分析

發布時間: 2021-02-07 13:46:32

Ⅰ 我們要用VS2010設計一個簡單的購物車,實現購買功能。

計一個簡單的購物車,實現購買功能。
比較都了解分析

Ⅱ 1號店加入購物車代碼,js語言的,有人幫忙分析一下提取出來嗎

$(".J_btnAddCount").click(function(){
var currentCount = parseInt($(this).prev().attr("value"));

currentCount++;
$(this).prev().attr("value",currentCount);
var unitPrice=$(this).parent().prev("p").children("span").html().substring(4);
$(this).parent().next().html("¥"+parseFloat(unitPrice*currentCount).toFixed(2));s
$(this).parent("li").find(".J_count").html("共"+currentCount+"件商品");
totalCount();
});

Ⅲ php關於用資料庫作為購物車的原理

我來解答一下你復的疑惑 買了兩個產品制。那就是執行了兩次 insert into temp_table (uid,proctid,pnum,poneprice,ptotalprice)如果 proctid相同則, pnum = pnum+1; ptotalprice = pnum*poneprice 假設前提是 當前兩條記錄的產品不同,那麼購物車列表則是循環讀取temp_table列出現有符合條件之產品,數量,價格。 修改2個產品數量的時候, 提交後,同樣的文本框pnum為一個數組,proctid為一個數組 獲取pnum,proctid,並且用 split分析後, 分別update update temp_table set pnum='".$pnum[0]."',ptotalprice='..省略.' where uid=自己的uid and proctid='".$proctid[0]."'注意,這里數組下標要對應好,你可以用個循環。 最後,當訂單下好之後,要把臨時表的數據轉移到正式表中,並且清理掉當前這個用戶臨時表的內容即可。

Ⅳ (java WEB)誰能告訴我在大型購物網站中使用什麼技術實現購物車的,在線等....只有50分了,一定給

目前購物車的實現主要是通過cookie、session或結合資料庫的方式。下面分析一下它們的機制及作用。
1. cookie
cookie是由伺服器產生,存儲在客戶端的一段信息。它定義了一種Web伺服器在客戶端存儲和返回信息的機制,cookie文件它包含域、路徑、生存期、和由伺服器設置的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣發送給伺服器。通過讓伺服器讀取原先保存到客戶端的信息,網站能夠為瀏覽者提供一系列的方便,例如在線交易過程中標識用戶身份、安全要求不高的場合避免用戶重復輸入名字和密碼、門戶網站的主頁定製、有針對性地投放廣告等等。利用cookie的特性,大大擴展了WEB應用程序的功能,不僅可以建立伺服器與客戶機的聯系,因為cookie可以由伺服器定製,因此還可以將購物信息生成cookie值存放在客戶端,從而實現購物車的功能。用基於cookie的方式實現伺服器與瀏覽器之間的會話或購物車,有以下特點:
n cookie存儲在客戶端,且佔用很少的資源,瀏覽器允許存放300個cookie,每個cookie的大小為4KB,足以滿足購物車的要求,同時也減輕了伺服器的負荷;
n cookie為瀏覽器所內置,使用方便。即使用戶不小心關閉了瀏覽器窗口,只要在cookie定義的有效期內,購物車中的信息也不會丟失;
n cookie不是可執行文件,所以不會以任何方式執行,因此也不會帶來病毒或攻擊用戶的系統;
n 基於cookie的購物車要求用戶瀏覽器必須支持並設置為啟用cookie,否則購物車則失效;
n 存在著關於cookie侵犯訪問者隱私權的爭論,因此有些用戶會禁止本機的cookie功能。
2. session
session是實現購物車的另一種方法。session提供了可以保存和跟蹤用戶的狀態信息的功能,使當前用戶在session中定義的變數和對象能在頁面之間共享,但是不能為應用中其他用戶所訪問,它與cookie最重大的區別是,session將用戶在會話期間的私有信息存儲在伺服器端,提高了安全性。在伺服器生成session後,客戶端會生成一個sessionid識別號保存在客戶端,以保持和伺服器的同步。這個sessionid是只讀的,如果客戶端禁止cookie功能,session會通過在URL中附加參數,或隱含在表單中提交等其他方式在頁面間傳送。因此利用session實施對用戶的管理則更為安全、有效。
同樣,利用session也能實現購物車,這種方式的特點是:
n session用新的機制保持與客戶端的同步,不依賴於客戶端設置;
n 與cookie相比,session是存儲在伺服器端的信息,因此顯得更為安全,因此可將身份標示,購物等信息存儲在session中;
n session會佔用伺服器資源,加大伺服器端的負載,尤其當並發用戶很多時,會生成大量的session,影響伺服器的性能;
n 因為session存儲的信息更敏感,而且是以文件形式保存在伺服器中,因此仍然存在著安全隱患。
3. 結合資料庫的方式
這也是目前較普遍的模式,在這種方式中,資料庫承擔著存儲購物信息的作用,session或cookie則用來跟蹤用戶。這種方式具有以下特點:
n 資料庫與cookie分別負責記錄數據和維持會話,能發揮各自的優勢,使安全性和伺服器性能都得到了提高;
n 每一個購物的行為,都要直接建立與資料庫的連接,直至對表的操作完成後,連接才釋放。當並發用戶很多時,會影響資料庫的性能,因此,這對資料庫的性能提出了更高的要求;
n 使cookie維持會話有賴客戶端的支持。
各種方式的選擇:
雖然cookie可用來實現購物車,但必須獲得瀏覽器的支持,再加上它是存儲在客戶端的信息,極易被獲取,所以這也限制了它存儲更多,更重要的信息。所以一般cookie只用來維持與伺服器的會話,例如國內最大的當當網路書店就是用cookie保持與客戶的聯系,但是這種方式最大的缺點是如果客戶端不支持cookie就會使購物車失效。
Session 能很好地與交易雙方保持會話,可以忽視客戶端的設置。在購物車技術中得到了廣泛的應用。但session的文件屬性使其仍然留有安全隱患。
結合資料庫的方式雖然在一定程度上解決了上述的問題,但從上面的例子可以看出:在這種購物流程中涉及到對資料庫表的頻繁操作,尤其是用戶每選購一次商品,都要與資料庫進行連接,當用戶很多的時候就加大了伺服器與資料庫的負荷。

PS:以上是參考網上資料,對購物車實現的分析!
結合你自身的web的訪問及部署情況,可考慮優先或結合使用。
如果使用資料庫存儲,一般考慮使用緩存技術去解決性能問題。

有問題再追問,good luck!~

Ⅳ cookie怎麼實現實現購物車

目前購物車的實現主要是通過cookie、session或結合資料庫的方式。下面分析一下它們的機制及作用。

1. cookie

cookie是由伺服器產生,存儲在客戶端的一段信息。它定義了一種Web伺服器在客戶端存儲和返回信息的機制,cookie文件它包含域、路徑、生存期、和由伺服器設置的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣發送給伺服器。通過讓伺服器讀取原先保存到客戶端的信息,網站能夠為瀏覽者提供一系列的方便,例如在線交易過程中標識用戶身份、安全要求不高的場合避免用戶重復輸入名字和密碼、門戶網站的主頁定製、有針對性地投放廣告等等。利用cookie的特性,大大擴展了WEB應用程序的功能,不僅可以建立伺服器與客戶機的聯系,因為cookie可以由伺服器定製,因此還可以將購物信息生成cookie值存放在客戶端,從而實現購物車的功能。用基於cookie的方式實現伺服器與瀏覽器之間的會話或購物車,有以下特點:

n cookie存儲在客戶端,且佔用很少的資源,瀏覽器允許存放300個cookie,每個cookie的大小為4KB,足以滿足購物車的要求,同時也減輕了伺服器的負荷;

n cookie為瀏覽器所內置,使用方便。即使用戶不小心關閉了瀏覽器窗口,只要在cookie定義的有效期內,購物車中的信息也不會丟失;

n cookie不是可執行文件,所以不會以任何方式執行,因此也不會帶來病毒或攻擊用戶的系統;

n 基於cookie的購物車要求用戶瀏覽器必須支持並設置為啟用cookie,否則購物車則失效;

n 存在著關於cookie侵犯訪問者隱私權的爭論,因此有些用戶會禁止本機的cookie功能。

2. session

session是實現購物車的另一種方法。session提供了可以保存和跟蹤用戶的狀態信息的功能,使當前用戶在session中定義的變數和對象能在頁面之間共享,但是不能為應用中其他用戶所訪問,它與cookie最重大的區別是,session將用戶在會話期間的私有信息存儲在伺服器端,提高了安全性。在伺服器生成session後,客戶端會生成一個sessionid識別號保存在客戶端,以保持和伺服器的同步。這個sessionid是只讀的,如果客戶端禁止cookie功能,session會通過在URL中附加參數,或隱含在表單中提交等其他方式在頁面間傳送。因此利用session實施對用戶的管理則更為安全、有效。

同樣,利用session也能實現購物車,這種方式的特點是:

n session用新的機制保持與客戶端的同步,不依賴於客戶端設置;

n 與cookie相比,session是存儲在伺服器端的信息,因此顯得更為安全,因此可將身份標示,購物等信息存儲在session中;

n session會佔用伺服器資源,加大伺服器端的負載,尤其當並發用戶很多時,會生成大量的session,影響伺服器的性能;

n 因為session存儲的信息更敏感,而且是以文件形式保存在伺服器中,因此仍然存在著安全隱患。

3. 結合資料庫的方式

這也是目前較普遍的模式,在這種方式中,資料庫承擔著存儲購物信息的作用,session或cookie則用來跟蹤用戶。這種方式具有以下特點:

n 資料庫與cookie分別負責記錄數據和維持會話,能發揮各自的優勢,使安全性和伺服器性能都得到了提高;

n 每一個購物的行為,都要直接建立與資料庫的連接,直至對表的操作完成後,連接才釋放。當並發用戶很多時,會影響資料庫的性能,因此,這對資料庫的性能提出了更高的要求;

n 使cookie維持會話有賴客戶端的支持。

各種方式的選擇:

雖然cookie可用來實現購物車,但必須獲得瀏覽器的支持,再加上它是存儲在客戶端的信息,極易被獲取,所以這也限制了它存儲更多,更重要的信息。所以一般cookie只用來維持與伺服器的會話,例如國內最大的當當網路書店就是用cookie保持與客戶的聯系,但是這種方式最大的缺點是如果客戶端不支持 cookie就會使購物車失效。

Session 能很好地與交易雙方保持會話,可以忽視客戶端的設置。在購物車技術中得到了廣泛的應用。但session的文件屬性使其仍然留有安全隱患。

結合資料庫的方式雖然在一定程度上解決了上述的問題,但從上面的例子可以看出:在這種購物流程中涉及到對資料庫表的頻繁操作,尤其是用戶每選購一次商品,都要與資料庫進行連接,當用戶很多的時候就加大了伺服器與資料庫的負荷

這裡面說的確實很詳細
我們公司採用的是資料庫的方式
1、用戶瀏覽系統,獲取用戶機器的MAC地址
2、如果用戶購買物品,添加到資料庫裡面,同時插入機器的MAC地址,也是用戶的ID標示
3、如果用戶登錄系統,用用戶真實的ID,更新當前機器的MAC對應的記錄。
4、如果結帳的話,更新用戶的id,刪除購物車裡面的東西
5、用戶沒有登錄,購物車記錄根據MAC讀取記錄,如果登錄系統根據用戶的ID,讀取記錄

Ⅵ 購物車怎麼實現

下面分析一下它們的機制及作用。 1. cookiecookie是由伺服器產生,存儲在客戶端的一段信息。它定義了一種伺服器在客戶端存儲和返回信息的機制,cookie文件它包含域、路徑、生存期、和由伺服器設置的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣發送給伺服器。通過讓伺服器讀取原先保存到客戶端的信息,網站能夠為瀏覽者提供一系列的方便,例如在線交易過程中標識用戶身份、安全要求不高的場合避免用戶重復輸入名字和密碼、門戶網站的主頁定製、有針對性地投放廣告等等。利用cookie的特性,大大擴展了WEB應用程序的功能,不僅可以建立伺服器與客戶機的聯系,因為cookie可以由伺服器定製,因此還可以將購物信息生成cookie值存放在客戶端,從而實現購物車的功能。用基於cookie的方式實現伺服器與瀏覽器之間的會話或購物車,有以下特點: n cookie存儲在客戶端,且佔用很少的資源,瀏覽器允許存放300個cookie,每個cookie的大小為4KB,足以滿足購物車的要求,同時也減輕了伺服器的負荷; n cookie為瀏覽器所內置,使用方便。即使用戶不小心關閉了瀏覽器窗口,只要在cookie定義的有效期內,購物車中的信息也不會丟失; n cookie不是可執行文件,所以不會以任何方式執行,因此也不會帶來病毒或攻擊用戶的系統; n 基於cookie的購物車要求用戶瀏覽器必須支持並設置為啟用cookie,否則購物車則失效; n 存在著關於cookie侵犯訪問者隱私權的爭論,因此有些用戶會禁止本機的cookie功能。 2. sessionsession是實現購物車的另一種方法。session提供了可以保存和跟蹤用戶的狀態信息的功能,使當前用戶在session中定義的變數和對象能在頁面之間共享,但是不能為應用中其他用戶所訪問,它與cookie最重大的區別是,session將用戶在會話期間的私有信息存儲在伺服器端,提高了安全性。在伺服器生成session後,客戶端會生成一個sessionid識別號保存在客戶端,以保持和伺服器的同步。這個sessionid是只讀的,如果客戶端禁止cookie功能,session會通過在URL中附加參數,或隱含在表單中提交等其他方式在頁面間傳送。因此利用session實施對用戶的管理則更為安全、有效。 同樣,利用session也能實現購物車,這種方式的特點是: n session用新的機制保持與客戶端的同步,不依賴於客戶端設置; n 與cookie相比,session是存儲在伺服器端的信息,因此顯得更為安全,因此可將身份標示,購物等信息存儲在session中; n session會佔用伺服器資源,加大伺服器端的負載,尤其當並發用戶很多時,會生成大量的session,影響伺服器的性能; n 因為session存儲的信息更敏感,而且是以文件形式保存在伺服器中,因此仍然存在著安全隱患。 3. 結合資料庫的方式 這也是目前較普遍的模式,在這種方式中,資料庫承擔著存儲購物信息的作用,session或cookie則用來跟蹤用戶。這種方式具有以下特點: n 資料庫與cookie分別負責記錄數據和維持會話,能發揮各自的優勢,使安全性和伺服器性能都得到了提高; n 每一個購物的行為,都要直接建立與資料庫的連接,直至對表的操作完成後,連接才釋放。當並發用戶很多時,會影響資料庫的性能,因此,這對資料庫的性能提出了更高的要求; n 使cookie維持會話有賴客戶端的支持。 各種方式的選擇: 雖然cookie可用來實現購物車,但必須獲得瀏覽器的支持,再加上它是存儲在客戶端的信息,極易被獲取,所以這也限制了它存儲更多,更重要的信息。所以一般cookie只用來維持與伺服器的會話,例如國內最大的當當網路書店就是用cookie保持與客戶的聯系,但是這種方式最大的缺點是如果客戶端不支持 cookie就會使購物車失效。 Session 能很好地與交易雙方保持會話,可以忽視客戶端的設置。在購物車技術中得到了廣泛的應用。但session的文件屬性使其仍然留有安全隱患。 結合資料庫的方式雖然在一定程度上解決了上述的問題,但從上面的例子可以看出:在這種購物流程中涉及到對資料庫表的頻繁操作,尤其是用戶每選購一次商品,都要與資料庫進行連接,當用戶很多的時候就加大了伺服器與資料庫的負荷 我們公司採用的是資料庫的方式 1、用戶瀏覽系統,獲取用戶機器的MAC地址 2、如果用戶購買物品,添加到資料庫裡面,同時插入機器的MAC地址,也是用戶的ID標示 3、如果用戶登錄系統,用用戶真實的ID,更新當前機器的MAC對應的記錄。

Ⅶ Java 如何實現類似購物車功能

給你介紹三種可以實現購物車功能的方法:

1.用cookie實現購物車;

2.用session實現購物車;

3.用cookie和資料庫(購物車信息持久化)實現購物車;

=======================================================

分析一下這三種方法的優缺點:

1.單純有cookie實現購物車,這樣的購物車不是很理想,設想一下,如果客戶端的瀏覽器把cookie給禁用了,這種方法就會在這里流產...

2.session中保存購物車的信息,這個只是在一個會話中可用,如果用戶沒有登錄,或者說登錄了以後,添加購物車,在關閉瀏覽器或者登出後,之前所添加的購物車通通都流產啦...

3.用cookie和資料庫(購物車信息持久化)實現購物車;

主要的流程:

A.用戶登錄前的數據流:用戶在沒有登錄系統的時候,對喜歡的商品進行添加購物車,那麼這個時候,我們可以把購物車信息保存

到cookie中,這里會涉及到cookie的添加,修改操作;也即如果之前在cookie中不存對應的cookie,則就對cookie進行添加操作。

如果在cookie中存在對應的cookie,那麼,這時候,就要對cookie進行修改操作了(這里涉及到用戶對同一個商品進行多次添加購物車的情況)。

B.用戶登錄後的數據流:用戶在登錄後,系統首先做的第一件事就是去獲取對應的cookies,如果存在相關的購物車cookies,那麼就對該購物車

信息進行相應用戶User的持久化操作,要麼添加,要麼修改。(添加操作:該用戶所對應的購物車如果沒有相應的信息進行添加操作;修改操作:類似的,

如果存在對應用戶的購物車信息,就進行修改操作)。用戶登錄後,也可以進行購物車的添加操作,不過,這里不是添加到cookie中,而是直接持久化到資料庫中。

Ⅷ android手機購物車的界面如何設計求源代碼

android手機購物車的界面如何設
肯定比較多,了解分析

Ⅸ 怎樣將圖書加入購物車的代碼c語言

#include#include#include#include#defineMax2typedefstructbook//書的信息{charbook_num[10];//書號charbook_name[20];//書名charbook_writer[10];//作者intbook_xy;//書的剩餘數量intbook_kc;//書的總數量structbook*next;}BK;typedefstructborrow//被借書的信息{charborrow_book_num[10];//借書書號charlimit_date[8];//借書歸還日期}BO;typedefstructreader//讀者信息{charreader_num[10];//讀者號charreader_name[10];//讀者姓名intright;//已借數量BOborrow[Max];//已借書信息structreader*next;}RD;BK*h_book;RD*h_reader;voidLogin();intMenu();voidInit();voidInit_book();voidMenu_select();voidInsert_New_Book();voidFind_Book();voidadd_reader();voidPrint_reader();voidPrint_book();voidBorrow_Book();voidReturn_Book();voidSave();voidSave_Book();voidSave_Reader();voidLoad();voidLoad_Reader();voidLoad_Book();voidLogin(){system("cls");printf("\n\n\n\t\t\t歡迎使用圖書管理系統\n");printf("\n\n\t\t本程序分析者秦義學號:200907014122\n\n\n\n\n\n\n");//以前是設計者xxxxprintf("\n\n\n\t\t按任意鍵進入系統");getch();system("cls");}intMenu()/*主菜單*/{intdm;printf("\n\t\t圖書管理系統主菜單\n");printf("=================================================\n");printf("☆\t0----退出系統☆\n");printf("☆\t1----采編入庫☆\n");printf("☆\t2----登記讀者☆\n");printf("☆\t3----借閱登記☆\n");printf("☆\t4---還書管理☆\n");printf("☆\t5---查詢圖書信息☆\n");printf("☆\t6----查詢讀者信息☆\n");printf("=================================================\n");printf("請選擇相應的代碼:");for(;;){scanf("%d",&dm);if(dm6)printf("\n錯誤!請重新輸入:");elsebreak;}returndm;}voidMenu_select()/*主菜單選擇函數*/{for(;;){switch(Menu())/*功能選擇*/{case0:system("cls");Save();printf("\n\n\t文件保存成功!\n");printf("\n\n\t歡迎下次使用本系統!\n");getch();exit(0);case1:Insert_New_Book();break;case2:add_reader();break;case3:Borrow_Book();break;case4:Return_Book();break;case5:Print_book();break;case6:Print_reader();break;default:printf("\n錯誤!");exit(0);}}}voidInit()/*初始化*/{Init_book();}voidInit_book()/*初始化圖書信息*/{BK*p0;printf("\n圖書初始化開始,請輸入圖書信息..\n包括編號.書名.數量..\n");p0=(BK*)malloc(sizeof(BK));h_book=p0;printf("\n請輸入圖書信息:\n");printf("圖書編號:");/*輸入圖書編號(唯一)*/scanf("%s",p0->book_num);printf("圖書名稱:");/*輸入圖書名稱*/scanf("%s",p0->book_name);printf("圖書作者:");/*輸入圖書作者*/scanf("%s",p0->book_writer);printf("圖書數量:");/*輸入圖書數量*/scanf("%d",&p0->book_kc);p0->book_xy=p0->book_kc;/*開始時圖書現有量和庫存量相等*/p0->next=NULL;printf("\n圖書信息初始化完畢!按任意鍵繼續下一步操作..\n");getch();system("cls");}voidInsert_New_Book()/*新書入庫*/{BK*p,*p0,*p1;p=p1=h_book;printf("\n新書入庫模塊\n");printf("\n請輸入新書信息..\n包括書號.書名.數量..\n");p0=(BK*)malloc(sizeof(BK));printf("圖書編號:");scanf("%s",p0->book_num);while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL)p1=p1->next;if(strcmp(p0->book_num,p1->book_num)==0)/*此處分兩種情況,若圖書編號存在,則直接進庫,只須輸入書的數量*/{printf("\n此編號圖書已存在!!直接入庫!\n");printf("圖書數量:");scanf("%d",&p0->book_kc);p1->book_kc+=p0->book_kc;p1->book_xy+=p0->book_kc;}else/*若不存在,則需要輸入其他的信息,然後在進行插入操作*/{printf("圖書名稱:");scanf("%s",p0->book_name);printf("圖書作者:");scanf("%s",p0->book_writer);printf("圖書數量:");scanf("%d",&p0->book_kc);while(p->next){p=p->next;}if(h_book==NULL)h_book=p0;/*此處分兩種情況,鏈表中沒有數據,head直接指向p0處*/elsep->next=p0;/*此處分兩種情況,鏈表中有數據,鏈表中最後元素的next指向p0處*/p0->next=NULL;p0->book_xy=p0->book_kc;}printf("\n新書入庫完畢!按任意鍵繼續下一步操作..\n");getch();system("cls");}voidadd_reader()/*添加讀者*/{RD*p0;inti;printf("\n讀者初始化開始,請輸入讀者信息..\n包括書證號.姓名..\n");p0=(RD*)malloc(sizeof(RD));/*申請新結點存儲空間*/h_reader=p0;printf("\n請輸入讀者的信息:\n");printf("讀者書證號:");scanf("%s",p0->reader_num);printf("讀者姓名:");scanf("%s",p0->reader_name);p0->right=0;for(i=0;iborrow[i].borrow_book_num,"0");/*所借圖書直接置為0(即沒有借書)*/strcpy(p0->borrow[i].limit_date,"0");}p0->next=NULL;printf("\n讀者信息初始化完畢!按任意鍵繼續下一步操作..\n");getch();system("cls");}voidBorrow_Book()/*借書模塊*/{BK*p0;RD*p1;charbo_num[10],rea_num[10],lim_date[8];inti;p0=h_book;p1=h_reader;printf("\n借書模塊\n");printf("\n請輸入借書的讀者書證號:");scanf("%s",rea_num);while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0)//查找讀者號{p1=p1->next;}if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0){printf("\n此讀者編號不存在!按任意鍵返回..\n");gotoEND;}printf("\n請輸入你要借的書的編號:");scanf("%s",bo_num);while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL)//查找書號{p0=p0->next;}if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0){printf("\n此圖書編號不存在!按任意鍵返回..\n");}elseif(p0->book_xyright>=Max){printf("\n不好意思,借書數目已滿!不能借書!\n按任意鍵返回.");}elseif(strcmp(p1->borrow[0].borrow_book_num,"0")!=0){for(i=0;iborrow[i].borrow_book_num,bo_num)==0){printf("\n抱歉!同一個讀者不能同借兩本相同的書!\n");}elseif(strcmp(p1->borrow[i].borrow_book_num,"0")==0){printf("\n請輸入你要歸還圖書的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);p0->book_xy--;printf("\n讀者編號%s借書完畢!按任意鍵繼續下步操作..",p1->reader_num);}}}else{printf("\n請輸入你要歸還圖書的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);p0->book_xy--;printf("\n讀者編號%s借書完畢!按任意鍵繼續下步操作..",p1->reader_num);}END:getch();system("cls");}voidReturn_Book()/*還書模塊*/{BK*p;RD*q;inti,j,find=0;charreturn_book_num[10],return_reader_num[10];p=h_book;q=h_reader;printf("\n還書模塊\n");printf("\n請輸入要還書的讀者編號:");scanf("%s",return_reader_num);while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0)q=q->next;if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!=0){find=2;printf("\n此讀者編號不存在!按任意鍵返回..\n");gotoend;}printf("\n請輸入讀者還書的編號:");scanf("%s",return_book_num);while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)p=p->next;if(p->next==NULL&&strcmp(return_book_num,p->book_num)!=0){find=2;printf("\n錯誤!此圖書編號不存在!按任意鍵返回..\n");gotoend;}for(i=0;iborrow[i].borrow_book_num)==0)/*如果此讀者借了此書*/{find=1;for(j=i;jborrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date);}strcpy(q->borrow[Max-1].borrow_book_num,"0");strcpy(q->borrow[Max-1].limit_date,"0");p->book_xy++;q->right--;printf("\n編號%s的讀者還書完畢!按任意鍵繼續下步操作..",return_reader_num);}if(find==0)printf("\n錯誤!此讀者未藉此書!按任意鍵返回..\n");end:getch();system("cls");}voidPrint_book()/*查詢圖書信息*/{BK*p;p=h_book;printf("\n圖書信息如下:\n\n");printf("圖書編號\t圖書名稱\t圖書作者\t現有\t\t庫存\n");while(p!=NULL){printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);p=p->next;}printf("\n圖書信息列印完畢!按任意鍵繼續下一步操作..");getch();system("cls");}voidPrint_reader()/*查詢讀者信息*/{RD*p;inti;p=h_reader;printf("\n讀者信息如下:\n\n");printf("讀者書證號\t\t讀者姓名\n");printf("\n");while(p!=NULL){printf("\t%s\t\t%s",p->reader_num,p->reader_name);for(i=0;iborrow[i].borrow_book_num);printf("\t\t%s",p->borrow[i].limit_date);}printf("\n");p=p->next;}printf("\n讀者信息列印完畢!按任意鍵繼續下一步操作..");getch();system("cls");}//文件模塊voidSave()/*保存信息*/{Save_Reader();Save_Book();}voidSave_Reader()/*保存讀者信息*/{FILE*fp_reader;RD*p,*p0;p=h_reader;if((fp_reader=fopen("Reader.txt","wb"))==NULL)/*創建文件,進行保存*/{printf("\n文件保存失敗!\n請重新啟動本系統\n");exit(0);}while(p!=NULL){if(fwrite(p,sizeof(RD),1,fp_reader)!=1)/*將鏈表中的信息寫入文件中*/printf("\n寫入文件失敗!\n請重新啟動本系統!\n");p0=p;p=p->next;free(p0);/*釋放所有結點*/}h_reader=NULL;fclose(fp_reader);/*關閉文件*/}voidSave_Book()/*保存圖書信息*/{FILE*fp_book;/*創建文件型指針*/BK*p,*p0;p=h_book;if((fp_book=fopen("Book.txt","wb"))==NULL)/*創建文件,進行保存*/{printf("\n文件保存失敗!\n請重新啟動本系統\n");exit(0);}while(p!=NULL){if(fwrite(p,sizeof(BK),1,fp_book)!=1)/*將鏈表中的信息寫入文件中*/printf("\n寫入文件失敗!\n請重新啟動本系統!\n");p0=p;p=p->next;free(p0);}h_book=NULL;fclose(fp_book);/*關閉文件*/}voidLoad()/*載入信息*/{Load_Reader();Load_Book();}voidLoad_Reader()/*載入讀者信息*/{RD*p1,*p2,*p3;FILE*fp;/*創建文件型指針*/fp=fopen("book.txt","rb");/*打開文件*/p1=(RD*)malloc(sizeof(RD));fread(p1,sizeof(RD),1,fp);h_reader=p3=p2=p1;while(!feof(fp))/*讀出信息,重新鏈入鏈表*/{p1=(RD*)malloc(sizeof(RD));fread(p1,sizeof(RD),1,fp);p2->next=p1;p3=p2;p2=p1;}p3->next=NULL;free(p1);fclose(fp);/*關閉文件*/}voidLoad_Book()/*載入圖書信息*/{BK*p1,*p2,*p3;FILE*fp;/*創建文件型指針*/fp=fopen("Book.txt","rb");/*打開文件*/p1=(BK*)malloc(sizeof(BK));fread(p1,sizeof(BK),1,fp);h_book=p3=p2=p1;while(!feof(fp))/*讀出信息,重新鏈入鏈表*/{p1=(BK*)malloc(sizeof(BK));fread(p1,sizeof(BK),1,fp);p2->next=p1;p3=p2;p2=p1;}p3->next=NULL;free(p1);fclose(fp);/*關閉文件*/}voidmain(){FILE*fp_book,*fp_reader;/*創建文件型指針*/Login();if((fp_book=fopen("Book.txt","rb"))==NULL||(fp_reader=fopen("Reader.txt","rb"))==NULL){Init();}elseLoad();Menu_select();/*調用主菜單*/}