用Python数据库sqlite3,书写学生一卡通管理系统 ,基本数据成员至少包括:卡号(学号), 姓名, 性别, 余额,消费总额 (食堂、机房),功能基本要求: (1) 一卡通的充值、消费和余额查询 (2) 按性别、班级、专业进行消费总额统计,比较两者的消费总额
时间: 2024-02-28 20:56:46 浏览: 61
好的,这是一个比较全面的学生一卡通管理系统,需要用到Python的sqlite3库来实现。首先,我们需要创建一个数据库并连接:
```python
import sqlite3
conn = sqlite3.connect('student_card.db')
c = conn.cursor()
```
然后,我们需要创建一个表来存储学生的信息:
```python
c.execute('''CREATE TABLE student
(id INTEGER PRIMARY KEY AUTOINCREMENT,
card_number TEXT,
name TEXT,
gender TEXT,
balance REAL,
canteen_total REAL,
computer_room_total REAL)''')
```
这个表包括了学生的卡号、姓名、性别、余额、食堂消费总额和机房消费总额。
接下来,我们需要实现一些基本功能:
1. 充值
```python
def recharge(card_number, amount):
c.execute("SELECT balance FROM student WHERE card_number=?", (card_number,))
balance = c.fetchone()[0]
new_balance = balance + amount
c.execute("UPDATE student SET balance=? WHERE card_number=?", (new_balance, card_number))
conn.commit()
```
这个函数会根据卡号查询到当前余额,然后将充值金额加上去更新余额。
2. 消费
```python
def consume(card_number, amount, category):
c.execute("SELECT balance, {}_total FROM student WHERE card_number=?".format(category), (card_number,))
result = c.fetchone()
balance = result[0]
total = result[1]
new_balance = balance - amount
new_total = total + amount
c.execute("UPDATE student SET balance=?, {}_total=? WHERE card_number=?".format(category), (new_balance, new_total, card_number))
conn.commit()
```
这个函数会根据卡号和消费类别(食堂或机房)查询到当前余额和消费总额,然后将消费金额从余额中扣除,并将消费金额加上去更新总额。
3. 余额查询
```python
def check_balance(card_number):
c.execute("SELECT balance FROM student WHERE card_number=?", (card_number,))
balance = c.fetchone()[0]
return balance
```
这个函数会根据卡号查询到当前余额,并返回余额。
4. 消费总额统计
```python
def total_by_category(category):
c.execute("SELECT gender, SUM({}_total) FROM student GROUP BY gender".format(category))
result = c.fetchall()
return result
```
这个函数会根据消费类别(食堂或机房)和性别进行分组,然后计算每组的消费总额,并返回结果。
5. 比较消费总额
```python
def compare_total(category):
c.execute("SELECT gender, SUM({}_total) FROM student GROUP BY gender ORDER BY SUM({}_total) DESC LIMIT 2".format(category, category))
result = c.fetchall()
return result
```
这个函数会根据消费类别(食堂或机房)和性别进行分组,然后计算每组的消费总额,并按总额倒序排列,取前两个进行比较,并返回结果。
以上就是一个基本的学生一卡通管理系统的实现。完整代码如下:
阅读全文