开始挑战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攻击,正式建站的时候,安全逻辑要考虑进去,以上是第一天全部工作,加油~哈哈哈
来源:https://www.cnblogs.com/AC-Mirabelle/p/16776880.html
本站部分图文来源于网络,如有侵权请联系删除。