版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫原理課程設(shè)計報告題 目: 圖書出租管理系統(tǒng) 學(xué)生姓名: 學(xué) 號: 班 級: 計科081 院 系: 計算機(jī)科學(xué)與信息學(xué)院 專業(yè)年級: 計算機(jī)科學(xué)與技術(shù)2008 級 2010 年 12 月 30 日一、需求分析 1.問題描述: 隨著網(wǎng)絡(luò)化時代的到來,圖書出租信息的網(wǎng)絡(luò)化可以大大節(jié)約人工和時間。為此可以開發(fā)出圖書管理系統(tǒng),廣泛的應(yīng)用于學(xué)校和工業(yè)、商業(yè)、企業(yè)、事業(yè)和行政等單位。實際上,該系統(tǒng)的實用性還是比較強(qiáng)的。2.系統(tǒng)功能描述(1)系統(tǒng)功能描述一個圖書出租管理系統(tǒng)應(yīng)該提供包括客戶信息管理、圖書信息管理、出版社信息管理、用戶信息管理、租還書、綜合查詢等功能。1) 客戶、圖書、用戶信息的數(shù)據(jù)模塊提
2、供增加、刪除、改變和查詢、瀏覽等基本的數(shù)據(jù)維護(hù)功能。2) 綜合查詢模塊可以通過用戶選擇的數(shù)據(jù)表和相應(yīng)的查詢條件來查詢相關(guān)內(nèi)容。3) 客戶租還書模塊是圖書出租管理系統(tǒng)的核心功能,實現(xiàn)客戶和圖書出租的交互。(2)功能模塊劃分圖書出租管理系統(tǒng)的數(shù)據(jù)庫功能主要體現(xiàn)在對各種信息的提供、保存、更新和查詢操作上,包括圖書信息、用戶信息、客戶信息和租借信息,各個部分的數(shù)據(jù)內(nèi)容又有內(nèi)在聯(lián)系。針對該系統(tǒng)的數(shù)據(jù)特點,可以總結(jié)出如下的需求。a、用戶和客戶具有不同的身份。b、用戶信息記錄用戶資料。c、客戶信息記錄客戶的詳細(xì)信息。d、圖書信息記錄圖書的名稱、出版社等信息。e、租借信息記錄客戶租借圖書的信息。圖書出租管理系
3、統(tǒng)應(yīng)該具有客戶信息管理、圖書信息管理、租還書和綜合查詢等功能。根據(jù)系統(tǒng)功能的需求分析,我們把該系統(tǒng)的功能劃分為5個模塊。a、客戶信息維護(hù)模塊b、圖書信息維護(hù)模塊c、用戶信息管理模塊d、客戶租還書管理模塊e、綜合查詢模塊圖書出租管理系統(tǒng)的功能模塊如圖所示系統(tǒng)管理員租書還書客戶用戶信息管理用戶圖書出租管理系統(tǒng)綜合查詢客戶信息維護(hù)客戶租還書信息管理圖書信息維護(hù)其中,客戶租還書管理模塊包括以下3個子模塊:a、租借圖書b、歸還圖書c、查詢租借信息客戶信息維護(hù)模塊包括以下5個子模塊:a、增加客戶信息b、刪除客戶信息c、修改客戶信息d、查詢客戶信息e、遍歷客戶信息該模塊圖如下圖所示:客戶信息維護(hù)模塊查詢客戶
4、信息遍歷客戶信息刪除客戶信息修改客戶信息增加客戶信息同理,如圖書信息管理、用戶信息管理模塊也被類似的分為增加、刪除、修改、查詢和遍歷5個模塊。(3)系統(tǒng)流程分析圖書出租管理系統(tǒng)的開發(fā)首先要設(shè)計一個登錄系統(tǒng),用戶只有輸入了正確的用戶名和密碼方可進(jìn)入系統(tǒng)內(nèi)部。系統(tǒng)流程圖如下圖所示圖書出租管理系統(tǒng)登錄判斷用戶類型系統(tǒng)管理員客戶信息維護(hù)租書還書客戶用戶信息管理用戶綜合查詢客戶租還書信息管理圖書信息維護(hù)(4)數(shù)據(jù)流程圖系統(tǒng)管理員用戶客戶查詢用戶表圖書表客戶表租借信息表增加修改刪除查詢查詢(5)系統(tǒng)功能分析和需求總結(jié)后,設(shè)計如下的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)。a、圖書信息,包括圖書編號、圖書名稱、作者等數(shù)據(jù)項b、租書
5、信息,包括客戶編號、圖書編號、租借日期等數(shù)據(jù)項。c、客戶信息,包括客戶編號、姓名、密碼等數(shù)據(jù)項。d、用戶信息,包括用戶編號、密碼、分類等數(shù)據(jù)項。3.系統(tǒng)使用權(quán)限方面該信息管理系統(tǒng)的角色可以分為3類:(1)普通用戶:擁有客戶信息維護(hù)、圖書信息管理以及客戶租還書管理、報表顯示和綜合查詢的權(quán)限。(2)系統(tǒng)管理員:擁有客戶信息維護(hù)、圖書信息管理、用戶信息管理以及客戶租還書管理和綜合查詢權(quán)限。但其主要功能還是用戶信息管理。(3)客戶:租書和還書。二、數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計得到上面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)后,就可以設(shè)計滿足需求的各種實體及相互關(guān)系,再用實體-關(guān)系圖,及e-r(entiry-relationship)
6、圖將這些內(nèi)容表達(dá)出來,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。在這個系統(tǒng)中,所存在的實體有:圖書信息實體、租書信息實體、出版社信息實體、客戶信息實體和用戶信息實體,它們之間的關(guān)系如圖所示。bookidbookremainbooknamebookamountbookbooksortbookwriterbookpricebookpublishbookpublishdate圖書信息實體e-r圖borrowbookfactreturndatereaderidreturndatebookidborrowdate租借書信息關(guān)系的屬性e-rreaderreaderemailreaderidreaderphonenor
7、eadernamereaderborrowbooksreaderpassword客戶信息實體e-r圖用戶信息實體e-r圖usersortuserpassworduseruseridn管理查詢與管理租借書書查詢與管理用戶客戶1n實體及其聯(lián)系的e-r圖m1n1n三、邏輯結(jié)構(gòu)設(shè)計1.模式設(shè)計: (1)關(guān)系模式:book(bookid、bookname、bookwriter、bookpublish、bookpublishdate、bookprice、booksort、bookamount、bookremain)borrowbook(readerid、bookid、borrowdate、returnda
8、te、factreturndate)reader(readerid、readername、readerpassword、readerphoneno、readeremail、readerborrowbooks)user(userid、userpassword、usersort)(2)數(shù)字字典:圖書表(book)編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明1bookidnvarchar(50)圖書編號2booknamenvarchar(50)圖書名稱3bookwriternvarchar(20)圖書作者4bookpublishnvarchar(50)出版社5bookpublishdatedatetime出版日期6bo
9、okpricefloat圖書定價7booksortnvarchar(50)圖書分類8bookamountint圖書庫存數(shù)量9bookremainint現(xiàn)在庫存數(shù)量租借信息表(borrowbook)編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明1readeridchar(6)客戶編號2bookidnvarchar(50)圖書編號3borrowdatedatetime租借日期4returndatedatetime應(yīng)歸還日期5factreturndatedatetime實際歸還日期客戶表(reader)編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明1readeridchar(6)客戶編號2readernamevarchar(20)客戶姓名3r
10、eaderpasswordvarchar(10)客戶密碼4readerphonenovarchar(15)電話號碼5readeremailvarchar(50)電子郵箱6readerborrowedbooksint借書數(shù)量用戶表(user)編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明1useridchar(10)用戶編號2userpasswordchar(10)用戶密碼3usersortvarchar(10)用戶分類在建立完所有數(shù)據(jù)表后,要根據(jù)數(shù)據(jù)表之間的關(guān)系在屬性頁中添加關(guān)系。為book表和borrowbook表之間添加fk_borrowbook_book關(guān)系,為book表和publishcompany之間添加
11、fk_book_publishcompany關(guān)系,為reader表和borrowbook表之間添加fk_borrowbook_reader關(guān)系。同時在兩關(guān)系中實現(xiàn)表間的級聯(lián)更新和級聯(lián)刪除。(2)子模式設(shè)計:1)視圖在圖書出租管理系統(tǒng)中,為便于瀏覽目前客戶租借圖書的信息,創(chuàng)建了一個borrow視圖來顯示租借記錄中客戶和所租借圖書的一些詳細(xì)信息以便以后綜合瀏覽。該視圖涉及到book表、borrowbook表和reader表,三表間的聯(lián)系及其各自想要顯示的字段,如下圖所示。a)三表間的聯(lián)系b)數(shù)據(jù)字典2)存儲過程在圖書出租管理系統(tǒng)中,創(chuàng)建實現(xiàn)在客戶租還書時對客戶表中的客戶所借書目和圖書表中圖書庫存量
12、的改變的存儲過程和客戶借書之前查詢客戶租借圖書數(shù)目和圖書庫存量的存儲過程。 圖書出租管理系統(tǒng)中,需要創(chuàng)建6個存儲過程,分別為:a) readerborrowednumber 存儲過程 該存儲過程負(fù)責(zé)獲取客戶已經(jīng)租借的圖書數(shù)目。其目的是為了在客戶租借圖書之前判斷此客戶是否達(dá)到借書數(shù)目的上限。b) booknumber 存儲過程 此存儲過程的功能是根據(jù)輸入的圖書編號得到該圖書現(xiàn)在的庫存數(shù)量。c) borrowreader 存儲過程 當(dāng)客戶租借某種圖書后,該存儲過程向客戶表的客戶的目前所借圖書一項添加1。d) borrowbook 存儲過程 當(dāng)客戶租借某種圖書后,該存儲過程向圖書表的相應(yīng)的圖書庫現(xiàn)存
13、量中減去1。e) returnreader存儲過程 當(dāng)客戶歸還所借的圖書時,該存儲過程在客戶表中把客戶所借的圖書數(shù)量減1。f) returnbook存儲過程 當(dāng)客戶歸還所借的圖書時,該存儲過程在圖書表中相應(yīng)的圖書現(xiàn)存量中增加1。四、數(shù)據(jù)庫的物理設(shè)計為了提高在表中搜索元組的速度,于是在各表中分別建立關(guān)于主鍵升序的索引,如下:1.user表的pk_user索引(以userid的升序建立的)2.reader表的pk_reader索引(以readerid的升序建立的)3.borrowbook表的pk_borrowbook索引(以readerid、bookid的升序建立的)4.book表的pk_book
14、索引(以bookid的升序建立的)五、數(shù)據(jù)庫設(shè)計實現(xiàn)及運行由同組同學(xué)完成六、界面與數(shù)據(jù)庫的連接由同組同學(xué)完成七、界面的實現(xiàn)(模塊中的功能實現(xiàn))【開發(fā)工具:visual studio 2000用戶登錄界面由同組同學(xué)完成系統(tǒng)主控界面由同組同學(xué)完成用戶信息管理界面由同組同學(xué)完成由主控界面點擊客戶信息進(jìn)入客戶信息管理界面點擊“添加”,可添加記錄,截圖如下:點擊“修改”,可對記錄進(jìn)行修改,截圖如下:點擊“刪除”,可對記錄進(jìn)行刪除,截圖如下:代碼:namespace library/ / reader 的摘要說明。/ public class reader : system.windows.forms.f
15、ormprivate system.windows.forms.groupbox groupbox1;private system.windows.forms.label label1;private system.windows.forms.label label2;private system.windows.forms.label label3;private system.windows.forms.label label4;private system.windows.forms.label label5;private system.data.sqlclient.sqlconnec
16、tion sqlconnection1;private system.data.sqlclient.sqldataadapter sqldataadapter1;private system.windows.forms.button btnfirst;private system.windows.forms.button btnlast;private system.windows.forms.button btnnext;private system.windows.forms.button btnprevious;private system.windows.forms.button bt
17、nexit;private system.windows.forms.button btnadd;private system.windows.forms.button btnmodify;private system.windows.forms.button btndelete;private system.windows.forms.groupbox groupbox3;private system.windows.forms.label label7;private system.windows.forms.textbox textpassword;private system.wind
18、ows.forms.button btncancel;private system.windows.forms.button btnapply;private system.windows.forms.textbox textborrowbooks;private system.windows.forms.textbox textemail;private system.windows.forms.textbox texttelno;private system.windows.forms.textbox textname;private system.windows.forms.textbo
19、x textid;private system.windows.forms.label lbldatasetposition;private system.data.sqlclient.sqlcommand sqlselectcommand1;private system.data.sqlclient.sqlcommand sqlinsertcommand1;private system.data.sqlclient.sqlcommand sqlupdatecommand1;private system.data.sqlclient.sqlcommand sqldeletecommand1;p
20、rivate library.datasetreader objdatasetreader;/ / 必需的設(shè)計器變量。/ private system.componentmodel.container components = null;public reader()/ windows 窗體設(shè)計器支持所必需的/initializecomponent();/ todo: 在initializecomponent 調(diào)用后添加任何構(gòu)造函數(shù)代碼/ / 清理所有正在使用的資源。/ protected override void dispose( bool disposing )if( disposing
21、 )if(components != null)components.dispose();base.dispose( disposing );#region windows 窗體設(shè)計器生成的代碼/ / 設(shè)計器支持所需的方法- 不要使用代碼編輯器修改/ 此方法的內(nèi)容。/ private void initializecomponent() system.componentmodel.componentresourcemanager resources = new system.componentmodel.componentresourcemanager(typeof(reader); this
22、.groupbox1 = new system.windows.forms.groupbox(); this.textpassword = new system.windows.forms.textbox(); this.objdatasetreader = new library.datasetreader(); this.label7 = new system.windows.forms.label(); this.textemail = new system.windows.forms.textbox(); this.textname = new system.windows.forms
23、.textbox(); this.textid = new system.windows.forms.textbox(); this.label4 = new system.windows.forms.label(); this.label2 = new system.windows.forms.label(); this.label1 = new system.windows.forms.label(); this.label3 = new system.windows.forms.label(); this.texttelno = new system.windows.forms.text
24、box(); this.label5 = new system.windows.forms.label(); this.textborrowbooks = new system.windows.forms.textbox(); this.btnfirst = new system.windows.forms.button(); this.btnlast = new system.windows.forms.button(); this.btnnext = new system.windows.forms.button(); this.btnprevious = new system.windo
25、ws.forms.button(); this.lbldatasetposition = new system.windows.forms.label(); this.btncancel = new system.windows.forms.button(); this.btnapply = new system.windows.forms.button(); this.sqlconnection1 = new system.data.sqlclient.sqlconnection(); this.sqldataadapter1 = new system.data.sqlclient.sqld
26、ataadapter(); this.sqldeletecommand1 = new system.data.sqlclient.sqlcommand(); this.sqlinsertcommand1 = new system.data.sqlclient.sqlcommand(); this.sqlselectcommand1 = new system.data.sqlclient.sqlcommand(); this.sqlupdatecommand1 = new system.data.sqlclient.sqlcommand(); this.btnexit = new system.
27、windows.forms.button(); this.btnadd = new system.windows.forms.button(); this.btnmodify = new system.windows.forms.button(); this.btndelete = new system.windows.forms.button(); this.groupbox3 = new system.windows.forms.groupbox(); this.groupbox1.suspendlayout(); (system.componentmodel.isupportinitia
28、lize)(this.objdatasetreader).begininit(); this.groupbox3.suspendlayout(); this.suspendlayout(); / / groupbox1 / this.groupbox1.backcolor = system.drawing.color.transparent; this.groupbox1.controls.add(this.textpassword); this.groupbox1.controls.add(this.label7); this.groupbox1.controls.add(this.text
29、email); this.groupbox1.controls.add(this.textname); this.groupbox1.controls.add(this.textid); this.groupbox1.controls.add(this.label4); this.groupbox1.controls.add(this.label2); this.groupbox1.controls.add(this.label1); this.groupbox1.controls.add(this.label3); this.groupbox1.controls.add(this.textt
30、elno); this.groupbox1.controls.add(this.label5); this.groupbox1.controls.add(this.textborrowbooks); this.groupbox1.font = new system.drawing.font(宋體, 10.5f, system.drawing.fontstyle.regular, system.drawing.graphicsunit.point, (byte)(134); this.groupbox1.location = new system.drawing.point(16, 16); t
31、his.groupbox1.name = groupbox1; this.groupbox1.size = new system.drawing.size(408, 160); this.groupbox1.tabindex = 0; this.groupbox1.tabstop = false; this.groupbox1.text = 客戶信息維護(hù); this.groupbox1.enter += new system.eventhandler(this.groupbox1_enter); / / textpassword / this.textpassword.databindings
32、.add(new system.windows.forms.binding(text, this.objdatasetreader, reader.readerpassword, true); this.textpassword.location = new system.drawing.point(88, 80); this.textpassword.name = textpassword; this.textpassword.size = new system.drawing.size(100, 23); this.textpassword.tabindex = 13; / / objda
33、tasetreader / this.objdatasetreader.datasetname = datasetreader; this.objdatasetreader.locale = new system.globalization.cultureinfo(zh-cn); / / label7 / this.label7.location = new system.drawing.point(16, 88); this.label7.name = label7; this.label7.size = new system.drawing.size(72, 23); this.label
34、7.tabindex = 12; this.label7.text = 客戶口令; / / textemail / this.textemail.databindings.add(new system.windows.forms.binding(text, this.objdatasetreader, reader.readeremail, true); this.textemail.location = new system.drawing.point(288, 16); this.textemail.name = textemail; this.textemail.size = new s
35、ystem.drawing.size(100, 23); this.textemail.tabindex = 10; / / textname / this.textname.databindings.add(new system.windows.forms.binding(text, this.objdatasetreader, reader.readername, true); this.textname.location = new system.drawing.point(88, 48); this.textname.name = textname; this.textname.siz
36、e = new system.drawing.size(100, 23); this.textname.tabindex = 8; / / textid / this.textid.databindings.add(new system.windows.forms.binding(text, this.objdatasetreader, reader.readerid, true); this.textid.location = new system.drawing.point(88, 16); this.textid.name = textid; this.textid.size = new
37、 system.drawing.size(100, 23); this.textid.tabindex = 7; / / label4 / this.label4.location = new system.drawing.point(216, 24); this.label4.name = label4; this.label4.size = new system.drawing.size(72, 23); this.label4.tabindex = 3; this.label4.text = 電子郵件; / / label2 / this.label2.location = new sy
38、stem.drawing.point(16, 56); this.label2.name = label2; this.label2.size = new system.drawing.size(72, 23); this.label2.tabindex = 1; this.label2.text = 客戶姓名; / / label1 / this.label1.location = new system.drawing.point(16, 24); this.label1.name = label1; this.label1.size = new system.drawing.size(72
39、, 23); this.label1.tabindex = 0; this.label1.text = 客戶編號; / / label3 / this.label3.location = new system.drawing.point(216, 56); this.label3.name = label3; this.label3.size = new system.drawing.size(64, 23); this.label3.tabindex = 2; this.label3.text = 聯(lián)系電話; / / texttelno / this.texttelno.databindin
40、gs.add(new system.windows.forms.binding(text, this.objdatasetreader, reader.readerphoneno, true); this.texttelno.location = new system.drawing.point(288, 48); this.texttelno.name = texttelno; this.texttelno.size = new system.drawing.size(100, 23); this.texttelno.tabindex = 9; / / label5 / this.label
41、5.location = new system.drawing.point(216, 88); this.label5.name = label5; this.label5.size = new system.drawing.size(72, 23); this.label5.tabindex = 4; this.label5.text = 已租書目; / / textborrowbooks / this.textborrowbooks.databindings.add(new system.windows.forms.binding(text, this.objdatasetreader,
42、reader.readerborrowedbooks, true); this.textborrowbooks.location = new system.drawing.point(288, 80); this.textborrowbooks.name = textborrowbooks; this.textborrowbooks.size = new system.drawing.size(100, 23); this.textborrowbooks.tabindex = 11; / / btnfirst / this.btnfirst.backcolor = system.drawing
43、.color.transparent; this.btnfirst.flatstyle = system.windows.forms.flatstyle.flat; this.btnfirst.image = (system.drawing.image)(resources.getobject(btnfirst.image); this.btnfirst.location = new system.drawing.point(128, 136); this.btnfirst.name = btnfirst; this.btnfirst.size = new system.drawing.siz
44、e(32, 24); this.btnfirst.tabindex = 1; this.btnfirst.usevisualstylebackcolor = false; this.btnfirst.click += new system.eventhandler(this.btnfirst_click); / / btnlast / this.btnlast.backcolor = system.drawing.color.transparent; this.btnlast.flatstyle = system.windows.forms.flatstyle.flat; this.btnla
45、st.image = (system.drawing.image)(resources.getobject(btnlast.image); this.btnlast.location = new system.drawing.point(272, 136); this.btnlast.name = btnlast; this.btnlast.size = new system.drawing.size(32, 24); this.btnlast.tabindex = 2; this.btnlast.usevisualstylebackcolor = false; this.btnlast.click += new system.eventhandler(this.btnlast_click); / / btnnext / this.btnnext.backcolor = system.drawing.color.transparent; this.btnnext.flatstyle = system.windows.forms.flatstyle.flat; this.btnnext.image = (system.drawing.image)(resources.getobject(btnnext.image); this.btnnext.location = new s
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 超市購銷合同范本版
- 清掏合同范本
- 徐州市商業(yè)房租賃合同范本
- 山體爆破合同范本
- 水泥管材買賣合同范本
- 中介方購房誠意金合同范本
- 上海紅木家具購銷合同范本
- 2024至2030年中國調(diào)味袋裝海苔數(shù)據(jù)監(jiān)測研究報告
- 公司ceo合同范本
- 2024至2030年西班牙多點鎖項目投資價值分析報告
- 2024美團(tuán)外賣服務(wù)合同范本
- 2024-2030年飛機(jī)內(nèi)部緊固件行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2023~2024學(xué)年第一學(xué)期高一期中考試數(shù)學(xué)試題含答案
- 企業(yè)信用修復(fù)服務(wù)協(xié)議
- 部編人教版三年級語文上冊期中測試卷5份(含答案)
- 期中測評試卷(1-4單元)(試題)-2024-2025學(xué)年人教版三年級數(shù)學(xué)上冊
- 2023年國家公務(wù)員錄用考試《行測》行政執(zhí)法卷-解析
- 非遺漆扇扇子科普宣傳
- 城市軌道交通脫軌事故應(yīng)急預(yù)案
- GB/T 15822.1-2024無損檢測磁粉檢測第1部分:總則
- 2024新版七年級英語單詞表
評論
0/150
提交評論