版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2025年P(guān)ython二級(jí)考試專項(xiàng)訓(xùn)練試卷:Python編程實(shí)踐項(xiàng)目考試時(shí)間:______分鐘總分:______分姓名:______項(xiàng)目名稱:簡易圖書管理系統(tǒng)一、項(xiàng)目需求設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡易的圖書管理系統(tǒng)。系統(tǒng)應(yīng)能夠完成圖書信息的錄入、查詢、顯示和刪除操作。要求使用文件(如JSON格式)來持久化存儲(chǔ)圖書數(shù)據(jù)。系統(tǒng)運(yùn)行時(shí),用戶可以通過命令行界面與系統(tǒng)交互。二、核心功能要求1.圖書信息結(jié)構(gòu):每本圖書包含以下信息:*`id`:唯一標(biāo)識(shí)符(整數(shù),自動(dòng)遞增)*`title`:書名(字符串)*`author`:作者(字符串)*`year`:出版年份(整數(shù))*`isbn`:國際標(biāo)準(zhǔn)書號(hào)(字符串)2.數(shù)據(jù)存儲(chǔ):*使用JSON文件(`books.json`)存儲(chǔ)所有圖書信息。*系統(tǒng)啟動(dòng)時(shí),應(yīng)嘗試讀取JSON文件加載現(xiàn)有圖書數(shù)據(jù)。如果文件不存在,則初始化一個(gè)空列表。*添加新圖書或刪除圖書后,應(yīng)自動(dòng)更新JSON文件。3.功能實(shí)現(xiàn):*添加圖書(AddBook):提示用戶輸入書名、作者、出版年份、ISBN,創(chuàng)建新的圖書字典,添加到圖書列表中,并保存到JSON文件。確保ID唯一且自動(dòng)遞增。*顯示所有圖書(ListBooks):遍歷圖書列表,格式化打印所有圖書信息。如果列表為空,提示用戶“當(dāng)前沒有圖書信息”。*按ID查詢圖書(SearchbyID):提示用戶輸入圖書ID,根據(jù)ID查找并打印對(duì)應(yīng)的圖書信息。如果找不到,提示用戶“未找到ID為[ID]的圖書”。*按書名查詢圖書(SearchbyTitle):提示用戶輸入書名關(guān)鍵字(部分匹配即可),查找并打印所有包含該關(guān)鍵字的圖書信息。如果沒有找到,提示用戶“未找到包含關(guān)鍵字[關(guān)鍵字]的圖書”。*刪除圖書(DeleteBook):提示用戶輸入圖書ID,根據(jù)ID查找并刪除對(duì)應(yīng)的圖書。刪除后,重新計(jì)算所有剩余圖書的ID(從1開始遞增),并更新JSON文件。提示用戶“已刪除ID為[ID]的圖書”或“未找到ID為[ID]的圖書”。4.主菜單:*系統(tǒng)運(yùn)行后,顯示一個(gè)主菜單,提供以下選項(xiàng):*1.添加新圖書*2.顯示所有圖書*3.按ID查詢圖書*4.按書名查詢圖書*5.刪除圖書*0.退出系統(tǒng)*根據(jù)用戶的選擇,執(zhí)行相應(yīng)的功能。用戶選擇無效操作時(shí),提示“無效選項(xiàng),請(qǐng)重新輸入”。三、代碼實(shí)現(xiàn)請(qǐng)根據(jù)上述需求,使用Python語言編寫完整的程序代碼。要求代碼結(jié)構(gòu)清晰,包含必要的函數(shù),并添加適當(dāng)?shù)淖⑨屨f明。四、附加要求*在添加圖書時(shí),可以增加簡單的輸入驗(yàn)證,確保年份為有效數(shù)字,ISBN格式大致正確(例如長度檢查)。*在刪除圖書后,可以打印當(dāng)前所有圖書的列表,方便用戶確認(rèn)。*在主菜單循環(huán)中,可以增加輸入錯(cuò)誤時(shí)的提示和重新輸入機(jī)會(huì)。試卷答案一、項(xiàng)目需求設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡易的圖書管理系統(tǒng)。系統(tǒng)應(yīng)能夠完成圖書信息的錄入、查詢、顯示和刪除操作。要求使用文件(如JSON格式)來持久化存儲(chǔ)圖書數(shù)據(jù)。系統(tǒng)運(yùn)行時(shí),用戶可以通過命令行界面與系統(tǒng)交互。二、核心功能要求1.圖書信息結(jié)構(gòu):每本圖書包含以下信息:*`id`:唯一標(biāo)識(shí)符(整數(shù),自動(dòng)遞增)*`title`:書名(字符串)*`author`:作者(字符串)*`year`:出版年份(整數(shù))*`isbn`:國際標(biāo)準(zhǔn)書號(hào)(字符串)2.數(shù)據(jù)存儲(chǔ):*使用JSON文件(`books.json`)存儲(chǔ)所有圖書信息。*系統(tǒng)啟動(dòng)時(shí),應(yīng)嘗試讀取JSON文件加載現(xiàn)有圖書數(shù)據(jù)。如果文件不存在,則初始化一個(gè)空列表。*添加新圖書或刪除圖書后,應(yīng)自動(dòng)更新JSON文件。3.功能實(shí)現(xiàn):*添加圖書(AddBook):提示用戶輸入書名、作者、出版年份、ISBN,創(chuàng)建新的圖書字典,添加到圖書列表中,并保存到JSON文件。確保ID唯一且自動(dòng)遞增。*顯示所有圖書(ListBooks):遍歷圖書列表,格式化打印所有圖書信息。如果列表為空,提示用戶“當(dāng)前沒有圖書信息”。*按ID查詢圖書(SearchbyID):提示用戶輸入圖書ID,根據(jù)ID查找并打印對(duì)應(yīng)的圖書信息。如果找不到,提示用戶“未找到ID為[ID]的圖書”。*按書名查詢圖書(SearchbyTitle):提示用戶輸入書名關(guān)鍵字(部分匹配即可),查找并打印所有包含該關(guān)鍵字的圖書信息。如果沒有找到,提示用戶“未找到包含關(guān)鍵字[關(guān)鍵字]的圖書”。*刪除圖書(DeleteBook):提示用戶輸入圖書ID,根據(jù)ID查找并刪除對(duì)應(yīng)的圖書。刪除后,重新計(jì)算所有剩余圖書的ID(從1開始遞增),并更新JSON文件。提示用戶“已刪除ID為[ID]的圖書”或“未找到ID為[ID]的圖書”。4.主菜單:*系統(tǒng)運(yùn)行后,顯示一個(gè)主菜單,提供以下選項(xiàng):*1.添加新圖書*2.顯示所有圖書*3.按ID查詢圖書*4.按書名查詢圖書*5.刪除圖書*0.退出系統(tǒng)*根據(jù)用戶的選擇,執(zhí)行相應(yīng)的功能。用戶選擇無效操作時(shí),提示“無效選項(xiàng),請(qǐng)重新輸入”。三、代碼實(shí)現(xiàn)```pythonimportjsonimportosBOOKS_FILE='books.json'defload_books():"""從JSON文件加載圖書數(shù)據(jù)"""ifos.path.exists(BOOKS_FILE):try:withopen(BOOKS_FILE,'r',encoding='utf-8')asf:returnjson.load(f)exceptjson.JSONDecodeError:print("JSON文件格式錯(cuò)誤,已創(chuàng)建空列表。")return[]else:return[]defsave_books(books):"""將圖書數(shù)據(jù)保存到JSON文件"""withopen(BOOKS_FILE,'w',encoding='utf-8')asf:json.dump(books,f,ensure_ascii=False,indent=4)defadd_book(books):"""添加新圖書"""new_id=len(books)+1title=input("請(qǐng)輸入書名:")author=input("請(qǐng)輸入作者:")whileTrue:try:year=int(input("請(qǐng)輸入出版年份:"))breakexceptValueError:print("年份輸入無效,請(qǐng)輸入整數(shù)。")isbn=input("請(qǐng)輸入ISBN:")new_book={'id':new_id,'title':title,'author':author,'year':year,'isbn':isbn}books.append(new_book)save_books(books)print(f"已添加圖書'{title}',ID為{new_id}。")deflist_books(books):"""顯示所有圖書"""ifnotbooks:print("當(dāng)前沒有圖書信息")returnprint("\n---圖書列表---")forbookinbooks:print(f"ID:{book['id']},書名:{book['title']},作者:{book['author']},"f"年份:{book['year']},ISBN:{book['isbn']}")print("-----------------")defsearch_by_id(books):"""按ID查詢圖書"""try:book_id=int(input("請(qǐng)輸入圖書ID:"))exceptValueError:print("ID輸入無效,請(qǐng)輸入整數(shù)。")returnfound_book=next((bookforbookinbooksifbook['id']==book_id),None)iffound_book:print("\n---查詢結(jié)果---")print(f"ID:{found_book['id']},書名:{found_book['title']},作者:{found_book['author']},"f"年份:{found_book['year']},ISBN:{found_book['isbn']}")print("-----------------")else:print(f"未找到ID為{book_id}的圖書。")defsearch_by_title(books):"""按書名查詢圖書"""keyword=input("請(qǐng)輸入書名關(guān)鍵字:").strip().lower()ifnotkeyword:print("關(guān)鍵字不能為空。")returnfound_books=[bookforbookinbooksifkeywordinbook['title'].lower()]iffound_books:print("\n---查詢結(jié)果---")forbookinfound_books:print(f"ID:{book['id']},書名:{book['title']},作者:{book['author']},"f"年份:{book['year']},ISBN:{book['isbn']}")print("-----------------")else:print(f"未找到包含關(guān)鍵字'{keyword}'的圖書。")defdelete_book(books):"""刪除圖書"""try:book_id=int(input("請(qǐng)輸入要?jiǎng)h除的圖書ID:"))exceptValueError:print("ID輸入無效,請(qǐng)輸入整數(shù)。")returnfound_index=next((ifori,bookinenumerate(books)ifbook['id']==book_id),None)iffound_indexisnotNone:deleted_book=books.pop(found_index)#重新編號(hào)foriinrange(len(books)):books[i]['id']=i+1save_books(books)print(f"已刪除ID為{deleted_book['id']}的圖書'{deleted_book['title']}'。")else:print(f"未找到ID為{book_id}的圖書。")defmain():"""主函數(shù)"""books=load_books()whileTrue:print("\n---圖書管理系統(tǒng)---")print("1.添加新圖書")print("2.顯示所有圖書")print("3.按ID查詢圖書")print("4.按書名查詢圖書")print("5.刪除圖書")print("0.退出系統(tǒng)")choice=input("請(qǐng)輸入操作選項(xiàng)(0-5):").strip()ifchoice=='1':add_book(books)elifchoice=='2':list_books(books)elifchoice=='3':search_by_id(books)elifchoice=='4':search_by_title(books)elifchoice=='5':delete_book(books)elifchoice=='0':print("退出系統(tǒng)。")breakelse:print("無效選項(xiàng),請(qǐng)重新輸入。")if__name__=='__main__':main()```四、附加要求*在添加圖書時(shí),可以增加簡單的輸入驗(yàn)證,確保年份為有效數(shù)字,ISBN格式大致正確(例如長度檢查)。*在刪除圖書后,可以打印當(dāng)前所有圖書的列表,方便用戶確認(rèn)。*在主菜單循環(huán)中,可以增加輸入錯(cuò)誤時(shí)的提示和重新輸入機(jī)會(huì)。解析一、項(xiàng)目需求*解析:本部分明確了項(xiàng)目的目標(biāo)、核心功能模塊和數(shù)據(jù)存儲(chǔ)方式??忌枰紫壤斫庑枨?,明確系統(tǒng)需要做什么,用什么技術(shù)實(shí)現(xiàn)。重點(diǎn)是圖書信息的結(jié)構(gòu)、增刪查改功能以及使用JSON文件持久化數(shù)據(jù)。二、核心功能要求1.圖書信息結(jié)構(gòu):*解析:定義了圖書對(duì)象應(yīng)包含的字段和數(shù)據(jù)類型。這對(duì)于后續(xù)設(shè)計(jì)數(shù)據(jù)存儲(chǔ)和處理邏輯至關(guān)重要??忌枰褂米值洌ɑ蜃远x類)來表示單本圖書。2.數(shù)據(jù)存儲(chǔ):*解析:指定了使用JSON文件進(jìn)行數(shù)據(jù)持久化,這是Python中處理結(jié)構(gòu)化文本數(shù)據(jù)的標(biāo)準(zhǔn)方式。需要考慮文件讀?。ù嬖跁r(shí))和寫入(添加/刪除后)的操作,以及異常處理(如文件不存在或JSON格式錯(cuò)誤)。加載時(shí)初始化為空列表是為了處理首次運(yùn)行的情況。3.功能實(shí)現(xiàn):*添加圖書:需要提示用戶輸入,創(chuàng)建包含所有字段的字典,計(jì)算新的唯一ID(通常是列表長度+1),將字典
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職社會(huì)體育指導(dǎo)與管理(社會(huì)體育基礎(chǔ))試題及答案
- 2026年中職第一學(xué)年(學(xué)前教育基礎(chǔ))幼兒心理學(xué)階段測(cè)試題及答案
- 2026年農(nóng)產(chǎn)品質(zhì)量檢測(cè)(農(nóng)產(chǎn)品檢測(cè))考題及答案
- 2026年上海單招動(dòng)物醫(yī)學(xué)專業(yè)基礎(chǔ)題必刷含答案
- 2026年廈門單招第二志愿補(bǔ)錄考試模擬試卷含答案高分沖刺版
- 2025年快速識(shí)別英語真題及答案
- 2026年大連單招英語完形填空閱讀理解專項(xiàng)題庫含答案高頻考點(diǎn)全覆蓋
- 山東美育考試題庫及答案
- 2026年內(nèi)蒙古單招工業(yè)機(jī)器人技術(shù)維護(hù)專業(yè)技能經(jīng)典題集含答案
- 2026年山東單招職業(yè)本科沖刺卷含答案文化技能拔高型
- 《城鎮(zhèn)新建供水管道沖洗消毒技術(shù)規(guī)程 》
- 社區(qū)中心及衛(wèi)生院65歲及以上老年人健康體檢分析報(bào)告模板
- 病歷書寫基本規(guī)范課件
- 砼面板堆石壩混凝土面板無軌滑模施工技術(shù)專項(xiàng)方案設(shè)計(jì)模板
- 新海蘭褐飼養(yǎng)管理手冊(cè)
- 地下室抗浮錨桿工程施工方案
- 桿件的應(yīng)力與強(qiáng)度計(jì)算拉伸桿
- HGT-20519-2009-化工工藝設(shè)計(jì)施工圖內(nèi)容和深度統(tǒng)一規(guī)定
- 大合唱領(lǐng)導(dǎo)講話
- GB/T 4666-2009紡織品織物長度和幅寬的測(cè)定
- GB/T 3512-2014硫化橡膠或熱塑性橡膠熱空氣加速老化和耐熱試驗(yàn)
評(píng)論
0/150
提交評(píng)論