開始挑戰30天從零開始 >python全棧工程師 Day1:圖書管理系統 沒有選用pycharm,選擇了更輕量化的Sublime Text編輯器,擼了一個用json充當資料庫的圖書管理系統,簡單的熟悉一下流程 1 # 圖書館開館了,準備開發一個圖書管理系統。 2 # 用json模擬資料庫的方式完成下 ...
開始挑戰30天從零開始--------->python全棧工程師
Day1:圖書管理系統
沒有選用pycharm,選擇了更輕量化的Sublime Text編輯器,擼了一個用json充當資料庫的圖書管理系統,簡單的熟悉一下流程
1 # 圖書館開館了,準備開發一個圖書管理系統。 2 # 用json模擬資料庫的方式完成下列業務: 3 4 # 1.用戶登錄;login() 5 # 2.顯示圖書列表;showAllBooks() 6 # 3.圖書上架;addBook() 增加圖書信息 7 # 4.圖書下架;delBook() 刪除增加圖書信息 8 9 # 5.借書;lendBook()判斷借出狀態是不是可借,如果是,就更改為已借出 10 # 6.還書;returnBook() 11 # 7.退出。 12 13 # a. 使用json數據保存用戶數據(包含用戶名,密碼,姓名); 14 # b. 使用json數據保存圖書數據(包含編號,書名,作者,借出狀態state); 15 # 可借---已借出 16 # c. 編寫用戶各個業務函數,在main函數中將所有函數串聯起來; 17 18 19 # userList='[{"用戶名":"Alex","密碼":123,"姓名":"張三"}]' 20 # bookList='[{"編號":1001,"書名":"觀察人類","作者":"陳浩星","借出狀態":"已借出"}]' 21 # with open("uer.txt","w") as f1,open("book.txt","w") as f2: 22 # f1.write(userList) 23 # f2.write(bookList) 24 25 26 import json 27 import datetime 28 import time 29 30 31 def readUserData(): 32 with open("uer.txt","r") as f: 33 jsonData=f.read() 34 userData=json.loads(jsonData) 35 return userData 36 37 38 39 def writeUserData(userList): 40 jsonData=json.dumps(userList,ensure_ascii=False) 41 with open("user.txt","w") as f: 42 f.write(jsonData) 43 print("----------------用戶數據寫入成功!") 44 45 46 47 48 49 def readBookData(): 50 with open("book.txt","r") as f: 51 jsonData=f.read() 52 bookData=json.loads(jsonData) 53 return bookData 54 55 56 def writeBookData(bookList): 57 jsonData=json.dumps(bookList,ensure_ascii=False) 58 with open("book.txt","w") as f: 59 f.write(jsonData) 60 print("------------------圖書信息修改成功!") 61 62 def login(): 63 i=0 64 j=0 65 msg="失敗" 66 userList=readUserData() 67 68 while i<5: 69 i+=1 70 count=input("請輸入用戶名:") 71 for user in userList: 72 if count==user["用戶名"]: 73 while j<3: 74 j+=1 75 pwd=input("請輸入密碼:") 76 if pwd==str(user["密碼"]): 77 msg="成功" 78 print("===============登錄成功================") 79 break 80 else: 81 print("---------------密碼有誤,請重新輸入----------------") 82 if msg=="失敗": 83 print("~~~~~~~~~~~~~密碼輸錯超過3次!~~~~~~~~~~~~~~~~~") 84 else: 85 print("---------------------------用戶名不存在,請重新輸入!-------------------------") 86 if msg=="成功": 87 break 88 if msg=="失敗": 89 print("賬戶登錄異常,請聯繫管理員") 90 return(msg) 91 92 93 def showAllBooks(): 94 bookList=readBookData() 95 print("---------------------------------------------------------------------------") 96 for book in bookList: 97 print(book["編號"]," ",book["書名"]," ",book["作者"]," ",book["借出狀態"]) 98 print("---------------------------------------------------------------------------") 99 100 101 102 103 def addBook(): 104 # num=int(input("請輸入圖編號:")) 105 fig=[0] 106 bookList=readBookData() 107 for book in bookList: 108 fig.append(book["編號"]) 109 newfig=max(fig)+1 110 name=input("請輸入圖書名:") 111 author=input("請輸入作者名:") 112 status="可借" 113 newbook={"編號":newfig,"書名":name,"作者":author,"借出狀態":status} 114 115 bookList.append(newbook) 116 # book=json.dumps(bookList,ensure_ascii=False) 117 # with open("book.txt","w") as f: 118 # f.write(book) 119 writeBookData(bookList) 120 print("圖書添加成功!") 121 122 def delBook(): 123 bookList=readBookData() 124 data=input("請輸入要下架的圖書名稱或者編號:") 125 for book in bookList: 126 if data==book["書名"] or int(data)==book["編號"]: 127 bookList.remove(book)#刪除圖書信息 128 print("-----------圖書【{}】已下架!".format(book["書名"])) 129 writeBookData(bookList) 130 print("輸入圖書信息有誤!") 131 132 133 def lendBook(): 134 bookList=readBookData() 135 num=int(input("請輸入要借的圖書編號:")) 136 msg=0 #0表示沒有 1可借 2不可借 137 for book in bookList: 138 if num==book["編號"]: 139 if book["借出狀態"]=="可借": 140 msg=1 141 print("您已成功借出圖書,{}!".format(book["書名"])) 142 book["借出狀態"]="已借出" 143 writeBookData() 144 else: 145 msg=2 146 print("-------{}已借出,歡迎下次再來!".format(book["書名"])) 147 if msg==0: 148 print("該圖書未被圖書館收錄,請聯繫管理員補充") 149 150 151 152 153 154 def returnBook(): 155 bookList=readBookData() 156 num=int(input("請輸入還書編號:")) 157 msg=0 158 for book in bookList: 159 if num==book["編號"]: 160 if book["借出狀態"]=="已借出": 161 msg=1 162 print("----------成功歸還圖書{}-----------".format(book["書名"])) 163 book["借出狀態"]="可借" 164 writeBookData(bookList) 165 elif book["借出狀態"]=="可借": 166 msg=2 167 print("------------歸還失敗!-------------") 168 if msg==0: 169 print("------------該圖書不在館藏之內,歸還失敗!-------------") 170 171 172 173 174 175 #------------主函數----------------- 176 #----------------------------------- 177 def main(): 178 print("--------------------------------------圖書管理系統1.0-------------------------------------") 179 msg=login() 180 print("登錄結果:",msg) 181 if msg=="成功": 182 while 1==1: 183 print("1.顯示所有圖書;\n2.圖書上架;\n3.圖書下架;\n4.借書;\n5.還書") 184 185 print("-----------------------------------------------------------------------------------------") 186 act=int(input("請輸入業務編號(1-5):")) 187 if act==1: 188 showAllBooks() 189 190 elif act==2: 191 addBook() 192 193 elif act==3: 194 delBook() 195 196 elif act==4: 197 lendBook() 198 199 elif act==5: 200 returnBook() 201 202 else: 203 print("沒有此業務!") 204 205 206 207 208 209 #----------------------------------- 210 211 if __name__=='__main__': 212 main()
總體來說login的時候只考慮交互邏輯,並沒有考慮到安全性等情況,安全邏輯較低,較容易收到DDos攻擊,正式建站的時候,安全邏輯要考慮進去,以上是第一天全部工作,加油~哈哈哈