写出一个符合上述所有要求的完整代码
时间: 2024-09-21 17:01:22 浏览: 20
由于编写完整的代码涉及大量的细节,这里我会给出一个简化的例子,展示如何使用Python和SQLite实现基本的功能。首先,你需要安装`sqlite3`模块,如果你还没有安装,可以在命令行中运行`pip install sqlite3`。下面是一个简化的版本,包含了创建数据库、添加用户、保存学生信息和基本的查询功能:
```python
import sqlite3
import hashlib
# 连接到SQLite数据库(如果不存在会自动创建)
def create_connection(db_file):
conn = None;
try:
conn = sqlite3.connect(db_file)
print(sqlite3.version)
except Error as e:
print(e)
if conn:
return conn
# 创建学生表
def create_students_table(conn):
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER,
gender TEXT
)
""")
conn.commit()
# 添加学生信息
def add_student(conn, student_info):
cursor = conn.cursor()
hashed_password = hashlib.sha256(student_info['password'].encode()).hexdigest()
cursor.execute("INSERT INTO students (name, age, gender, password) VALUES (?, ?, ?, ?)", (student_info['name'], student_info['age'], student_info['gender'], hashed_password))
conn.commit()
# 查询学生信息
def get_student_by_name(conn, name):
cursor = conn.cursor()
cursor.execute("SELECT * FROM students WHERE name=?", (name,))
rows = cursor.fetchall()
return rows
# 示例用户注册和登录
def register_and_login(conn, username, password):
hashed_password = hashlib.sha256(password.encode()).hexdigest()
# 注册用户
cursor = conn.cursor()
cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, hashed_password))
conn.commit()
# 模拟登录检查
cursor.execute("SELECT * FROM users WHERE username=?", (username,))
user_data = cursor.fetchone()
if user_data and user_data[1] == hashed_password:
return True
else:
return False
# 主函数演示
if __name__ == "__main__":
db_file = "students.db"
conn = create_connection(db_file)
if conn:
create_students_table(conn)
# 添加一个学生
student_info = {"name": "张三", "age": 18, "gender": "男", "password": "123456"}
add_student(conn, student_info)
# 登录并获取学生信息
registered = register_and_login(conn, "admin", "123456")
if registered:
student_rows = get_student_by_name(conn, "张三")
for row in student_rows:
print(row)
conn.close()
else:
print("Error! cannot create the database connection.")
```
注意,这只是一个简化版的例子,实际项目中还需要考虑到错误处理、异常处理、用户权限管理等复杂情况。另外,密码的存储通常会更安全地使用一些密码哈希库,而不是直接使用sha256。关于用户管理的部分,你也需要创建一个`users`表,并且实现用户解锁、密码重置等功能。
相关问题:
1. 如何在实际项目中安全地处理密码存储?
2. 如何在Python中实现用户权限控制?
3. 如何在数据库中查询所有学生并遍历显示其信息?