开始挑战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)+1110 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=1141 print("您已成功借出图书,{}!".format(book["书名"]))142 book["借出状态"]="已借出"143 writeBookData()144 else:145 msg=2146 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=0158 for book in bookList:159 if num==book["编号"]:160 if book["借出状态"]=="已借出":161 msg=1162 print("----------成功归还图书{}-----------".format(book["书名"]))163 book["借出状态"]="可借"164 writeBookData(bookList)165 elif book["借出状态"]=="可借":166 msg=2167 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攻击,正式建站的时候,安全逻辑要考虑进去,以上是第一天全部工作,加油~哈哈哈