diff --git "a/17 \345\221\250\346\227\245\347\272\242/20260624 \351\241\271\347\233\256\345\210\266\344\275\2342.0.md" "b/17 \345\221\250\346\227\245\347\272\242/20260624 \351\241\271\347\233\256\345\210\266\344\275\2342.0.md" new file mode 100644 index 0000000000000000000000000000000000000000..559212ce403634d0df95f0d2a5fcb747cf21e97c --- /dev/null +++ "b/17 \345\221\250\346\227\245\347\272\242/20260624 \351\241\271\347\233\256\345\210\266\344\275\2342.0.md" @@ -0,0 +1,153 @@ +```python +### 导入库 +import streamlit as st +import sqlite3 +import pandas as pd + +### 设置网页 +st.set_page_config(page_title="美好图书", page_icon="📌") + + +###创建数据库 +# 建表 +def inital_db(): + # 创建连接 + conn = sqlite3.connect("data.db") + # 执行SQL + conn.execute(''' + CREATE TABLE IF NOT EXISTS books + ( + id + INTEGER + NOT + NULL + PRIMARY + KEY + AUTOINCREMENT, + bookname + TEXT + NOT + NULL, + author + TEXT + NOT + NULL, + price + real + NOT + NULL + ) + ''') + # 提交(有结果就处理结果) + conn.commit() + # 关闭连接 + conn.close() + + # 添加一个图书 + + +def add_book(bookname, author, price): + conn = sqlite3.connect("data.db") + conn.execute("insert into books (bookname, author, price) values (?, ?, ?)", (bookname, author, price)) + conn.commit() + conn.close() + + # 删除一个图书 + + +def delete_book(bookid): + conn = sqlite3.connect("data.db") + conn.execute("delete from books where id = ?", (bookid,)) + conn.commit() + conn.close() + st.rerun() + # 修改一个图书 + + +def update_book(bookid,bookname,author,price): + conn = sqlite3.connect("data.db") + conn.execute("update books set bookname = ? , author = ? , price = ? where id = ?", (bookid,bookname,author,price)) + conn.commit() + conn.close() + + # 查询所有图书信息 + + +def show_books(): + conn = sqlite3.connect("data.db") + data = conn.execute("select * from books") + df = pd.DataFrame(data, columns=["id", "bookname", "author", "price"]) + conn.close() + # 将查询的值返回给调用者 + return df + + ### 登录初始化,一直处于未登录状态 + + +if "logged_in" not in st.session_state: + # 就初始化为未登录状态 + st.session_state.logged_in = False +# 初始化 数据库表格 +inital_db() + + #####登录界面 +if not st.session_state.logged_in: + # 未登录状态显示表单 + st.title("======美好图书=====") + st.subheader("用户登录") + with st.form("login"): + username = st.text_input("用户名", placeholder="请输入用户名") + password = st.text_input("密码", placeholder="请输入密码", type="password") + submit = st.form_submit_button("登录", use_container_width=True) + ###判断是否已经点击submit + if submit: + if username == "reeed" and password == "10027": + st.success("登录成功") + st.session_state.logged_in = True + st.rerun() + else: + st.error("请检查你的用户名或者密码") + st.markdown("不好意思!登录失败") + + st.stop() +### 主界面 (登录成功的界面) +with st.sidebar: + st.title("====你好呀!欢迎你====") + st.markdown("---------") + menu = st.selectbox("请选择", ["查询所有图书", "添加图书"]) + +if menu == "查询所有图书": + st.title("---图书信息---") + ###遍历数据库图书每一行 + books = show_books() + ###遍历前判断有没有书 + if len(books) > 0: + cols = st.columns([2,6,4,4,3]) + cols[0].write("序号") + cols[1].write("书名") + cols[2].write("作者") + cols[3].write("价格") + cols[4].write("操作") + for ids,book in books.iterrows(): + cols = st.columns([2, 6, 4, 4, 3]) + cols[0].write(ids+1) + cols[1].write(book["bookname"]) + cols[2].write(book["author"]) + cols[3].write(book["price"]) + cols[4].button("删除",key=f"{ids}",on_click=delete_book,args=(book["id"],)) + else: + st.warning("暂时没有图书") +elif menu == "添加图书": + st.title("----添加图书----") + st.info("在这里你可以添加图书信息") + st.markdown("----") + with st.form("addbook",clear_on_submit=True): + bookname = st.text_input("书名") + author = st.text_input("作者") + price = st.text_input("价格") + submit = st.form_submit_button("提交") + if submit: + add_book(bookname, author, price) + st.success("添加成功!") +``` +