用Python打造一个简单的校友信息管理系统
大家好,今天咱们来聊聊怎么用Python写一个校友信息管理系统。这玩意儿听起来挺高大上的,其实也就那么回事。我之前在学校里也搞过类似的项目,虽然不是特别复杂,但确实能解决一些实际问题。
首先,咱们得想清楚这个系统要干啥。校友信息管理系统嘛,主要就是用来记录校友的基本信息,比如姓名、联系方式、毕业年份、所在单位等等。然后可能还要有查询功能,比如按学校、专业或者年份来查找校友信息。当然了,如果是校园里用的,可能还需要跟学生信息对接一下,这样就能自动同步数据了。
不过今天咱们先不扯太远,就做一个最基础的版本。用Python的话,我觉得用SQLite数据库是最方便的,不需要安装什么额外的东西,直接内置就行。而且代码也不复杂,适合新手上手。
第一步:创建数据库
咱们先来建个数据库。在Python里,可以用sqlite3模块来操作。那我们先写个简单的脚本,创建一个表,用来存储校友的信息。
import sqlite3
# 连接数据库(如果不存在则会自动创建)
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS alumni (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT,
phone TEXT,
graduation_year INTEGER,
company TEXT,
major TEXT
)
''')
# 提交更改
conn.commit()
# 关闭连接
conn.close()
这段代码的作用是创建一个叫alumni.db的数据库文件,里面有一个alumni表。表里面有id、name、email、phone、graduation_year、company、major这几个字段。id是主键,自增的,不用管。其他字段都是文本或者整数类型。
运行这段代码之后,你就有了一个数据库,可以开始添加数据了。
第二步:添加数据
接下来咱们要写一个函数,用来添加新的校友信息到数据库里。这里我们可以用一个函数,接受参数,然后插入到数据库中。
def add_alumni(name, email, phone, graduation_year, company, major):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO alumni (name, email, phone, graduation_year, company, major) VALUES (?, ?, ?, ?, ?, ?)',
(name, email, phone, graduation_year, company, major))
conn.commit()
conn.close()
print("数据已添加!")
这个函数的逻辑很简单,就是连接数据库,执行插入语句,然后提交更改。注意这里的?号是占位符,防止SQL注入。你调用的时候传入参数就可以了。
举个例子,你想添加一个叫张三的校友,他毕业于2015年,现在在腾讯工作,学的是计算机科学,邮箱是zhangsan@example.com,电话是13812345678。你可以这样调用:
add_alumni("张三", "zhangsan@example.com", "13812345678", 2015, "腾讯", "计算机科学")
运行之后,数据就会被存进去了。
第三步:查询数据
光有添加功能还不够,还得能查。比如你要找某个专业的校友,或者某个年份的。这时候我们就需要写一个查询函数。
def search_alumni(major=None, year=None):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
query = 'SELECT * FROM alumni WHERE 1=1'
if major:
query += ' AND major = ?'
if year:
query += ' AND graduation_year = ?'
cursor.execute(query, (major, year))
results = cursor.fetchall()
conn.close()
return results
这个函数支持按专业和毕业年份查询。比如你想查所有计算机专业的校友,可以这样调用:
results = search_alumni(major="计算机科学")
for row in results:
print(row)
或者查2018年的毕业生:

results = search_alumni(year=2018)
for row in results:
print(row)
这样就能得到所有符合条件的数据了。
第四步:更新和删除数据
除了添加和查询,有时候还需要修改或删除数据。比如某个校友的信息错了,或者他换公司了,就需要更新。同样,如果有人不想再被联系,可能需要删除。
更新数据的函数如下:
def update_alumni(id, name=None, email=None, phone=None, graduation_year=None, company=None, major=None):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
fields = []
values = []
if name:
fields.append('name = ?')
values.append(name)
if email:
fields.append('email = ?')
values.append(email)
if phone:
fields.append('phone = ?')
values.append(phone)
if graduation_year:
fields.append('graduation_year = ?')
values.append(graduation_year)
if company:
fields.append('company = ?')
values.append(company)
if major:
fields.append('major = ?')
values.append(major)
if not fields:
print("没有需要更新的字段")
conn.close()
return
query = f'UPDATE alumni SET {", ".join(fields)} WHERE id = ?'
values.append(id)
cursor.execute(query, values)
conn.commit()
conn.close()
print("数据已更新!")
这个函数比较灵活,可以只更新部分字段。比如你想把张三的电话改成13987654321,可以这样调用:
update_alumni(1, phone="13987654321")
注意这里的id是1,代表数据库中的第一条记录。
删除数据的函数也类似:
def delete_alumni(id):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('DELETE FROM alumni WHERE id = ?', (id,))
conn.commit()
conn.close()
print("数据已删除!")
调用方式也很简单:
delete_alumni(1)
第五步:封装成一个完整的程序
现在我们已经完成了基本的功能,接下来可以把这些函数组合起来,做成一个简单的命令行程序,让用户通过输入指令来操作。
import sqlite3
def create_table():
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS alumni (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT,
phone TEXT,
graduation_year INTEGER,
company TEXT,
major TEXT
)
''')
conn.commit()
conn.close()
def add_alumni(name, email, phone, graduation_year, company, major):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO alumni (name, email, phone, graduation_year, company, major) VALUES (?, ?, ?, ?, ?, ?)',
(name, email, phone, graduation_year, company, major))
conn.commit()
conn.close()
print("数据已添加!")
def search_alumni(major=None, year=None):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
query = 'SELECT * FROM alumni WHERE 1=1'
if major:
query += ' AND major = ?'
if year:
query += ' AND graduation_year = ?'
cursor.execute(query, (major, year))
results = cursor.fetchall()
conn.close()
return results
def update_alumni(id, name=None, email=None, phone=None, graduation_year=None, company=None, major=None):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
fields = []
values = []
if name:
fields.append('name = ?')
values.append(name)
if email:
fields.append('email = ?')
values.append(email)
if phone:
fields.append('phone = ?')
values.append(phone)
if graduation_year:
fields.append('graduation_year = ?')
values.append(graduation_year)
if company:
fields.append('company = ?')
values.append(company)
if major:
fields.append('major = ?')
values.append(major)
if not fields:
print("没有需要更新的字段")
conn.close()
return
query = f'UPDATE alumni SET {", ".join(fields)} WHERE id = ?'
values.append(id)
cursor.execute(query, values)
conn.commit()
conn.close()
print("数据已更新!")
def delete_alumni(id):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('DELETE FROM alumni WHERE id = ?', (id,))
conn.commit()
conn.close()
print("数据已删除!")
def main():
create_table()
while True:
print("\n请选择操作:")
print("1. 添加校友")
print("2. 查询校友")

print("3. 更新校友")
print("4. 删除校友")
print("5. 退出")
choice = input("请输入选项:")
if choice == '1':
name = input("请输入姓名:")
email = input("请输入邮箱:")
phone = input("请输入电话:")
graduation_year = int(input("请输入毕业年份:"))
company = input("请输入公司:")
major = input("请输入专业:")
add_alumni(name, email, phone, graduation_year, company, major)
elif choice == '2':
major = input("请输入专业(留空表示不限):")
year = input("请输入毕业年份(留空表示不限):")
if year:
year = int(year)
results = search_alumni(major=major or None, year=year or None)
for row in results:
print(row)
elif choice == '3':
id = int(input("请输入要更新的校友ID:"))
name = input("请输入新姓名(留空表示不修改):")
email = input("请输入新邮箱(留空表示不修改):")
phone = input("请输入新电话(留空表示不修改):")
graduation_year = input("请输入新毕业年份(留空表示不修改):")
company = input("请输入新公司(留空表示不修改):")
major = input("请输入新专业(留空表示不修改):")
if graduation_year:
graduation_year = int(graduation_year)
update_alumni(id, name=name or None, email=email or None, phone=phone or None,
graduation_year=graduation_year or None, company=company or None, major=major or None)
elif choice == '4':
id = int(input("请输入要删除的校友ID:"))
delete_alumni(id)
elif choice == '5':
print("程序已退出。")
break
else:
print("无效选项,请重新输入。")
if __name__ == "__main__":
main()
这个程序是一个简单的命令行工具,用户可以通过输入数字选择不同的操作。比如添加、查询、更新、删除等。非常适合校园里的小规模使用。
总结
今天咱们用Python写了一个简单的校友信息管理系统,用到了SQLite数据库和一些基本的SQL操作。虽然功能不算很强大,但已经能满足基本需求了。
如果你是在校园里做这个项目,还可以考虑和学校的教务系统对接,或者开发一个网页版的界面,这样使用起来更方便。不过对于入门来说,这样的命令行程序已经是个不错的起点了。
总之,不管你是学生还是刚入行的程序员,都可以从这种小项目入手,锻炼自己的编程能力和数据库操作能力。希望这篇文章对你有帮助,也欢迎你动手试试看!
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!

