开始挑战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攻击,正式建站的时候,安全逻辑要考虑进去,以上是第一天全部工作,加油~哈哈哈
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:从零开始撸python - Python技术站