用Python打造一个简单的校友管理系统
嘿,大家好!今天咱们来聊聊怎么用Python写一个校友管理系统。你可能觉得这听起来有点复杂,但其实挺简单的,尤其是如果你对编程有一点点了解的话。别担心,我不会太深入技术细节,就是用一种轻松的方式,带你一步步走一遍。
首先,我们得弄清楚什么是“校友管理系统”。简单来说,它就是一个用来存储和管理学校毕业生信息的系统。比如,姓名、毕业年份、联系方式、工作单位等等。学校有时候需要这些信息来做校友活动、发邮件通知或者做研究分析。所以,一个好用的校友管理系统就显得特别重要了。
那么,怎么开始呢?首先,我们需要选一个合适的编程语言。Python是一个不错的选择,因为它语法简单,而且有很多现成的库可以用。比如说,我们可以用SQLite来存数据,因为它是轻量级的,不需要安装额外的服务,直接在本地就能运行。
接下来,我们要设计一下这个系统的结构。一般来说,校友的信息应该包括:姓名、性别、出生日期、毕业年份、专业、联系方式(比如电话或邮箱)、工作单位等。这些信息可以保存在一个数据库里,方便查询和管理。
所以,我们先从创建数据库开始。这里我用的是SQLite,它是一个嵌入式的数据库,非常适合小型项目。我们可以通过Python的sqlite3模块来操作它。下面是一段代码,用来创建一个校友信息的表:
import sqlite3
# 连接到数据库(如果不存在则会自动创建)
conn = sqlite3.connect('alumni.db')
# 创建游标对象
c = conn.cursor()
# 创建校友信息表
c.execute('''CREATE TABLE IF NOT EXISTS alumni
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
gender TEXT,
birth_date TEXT,
graduation_year INTEGER,
major TEXT,
contact_info TEXT,
job_company TEXT)''')
# 提交更改
conn.commit()
# 关闭连接
conn.close()
这段代码的作用是创建一个名为`alumni.db`的数据库文件,并在里面建立一个叫做`alumni`的表。表中包含了一些基本字段,比如姓名、性别、出生日期、毕业年份、专业、联系方式和工作单位。你可以根据实际需求调整这些字段。
现在,我们已经有了一个数据库,接下来就是如何往里面添加数据了。我们可以写一个函数,用来插入新的校友信息。比如:
def add_alumni(name, gender, birth_date, graduation_year, major, contact_info, job_company):
conn = sqlite3.connect('alumni.db')
c = conn.cursor()
c.execute("INSERT INTO alumni (name, gender, birth_date, graduation_year, major, contact_info, job_company) VALUES (?, ?, ?, ?, ?, ?, ?)",
(name, gender, birth_date, graduation_year, major, contact_info, job_company))
conn.commit()
conn.close()
这个函数接收多个参数,然后把这些信息插入到数据库中。注意,这里用了`?`作为占位符,这样可以防止SQL注入的问题,安全性更高。
除了添加数据,我们还需要能够查询数据。比如,按姓名查找某个校友的信息,或者按毕业年份筛选出所有2015年的毕业生。下面是一个查询函数的例子:

def search_alumni(name):
conn = sqlite3.connect('alumni.db')
c = conn.cursor()
c.execute("SELECT * FROM alumni WHERE name LIKE ?", ('%' + name + '%',))
results = c.fetchall()
conn.close()
return results
这个函数使用了`LIKE`关键字,允许模糊匹配,也就是说,即使输入的名字不完全正确,也能找到相关的记录。返回的结果是一个列表,每个元素都是一个元组,代表一条校友信息。
另外,我们还可以实现更新和删除功能。比如,当某个校友的信息发生变化时,可以调用更新函数;当某个校友不再需要保留时,也可以删除他。这部分的代码如下:
def update_alumni(id, name=None, gender=None, birth_date=None, graduation_year=None, major=None, contact_info=None, job_company=None):
conn = sqlite3.connect('alumni.db')
c = conn.cursor()
fields = []
values = []
if name:
fields.append("name = ?")
values.append(name)
if gender:
fields.append("gender = ?")
values.append(gender)
if birth_date:
fields.append("birth_date = ?")
values.append(birth_date)
if graduation_year:
fields.append("graduation_year = ?")
values.append(graduation_year)
if major:
fields.append("major = ?")
values.append(major)
if contact_info:
fields.append("contact_info = ?")
values.append(contact_info)
if job_company:
fields.append("job_company = ?")
values.append(job_company)
if not fields:
return
query = "UPDATE alumni SET " + ", ".join(fields) + " WHERE id = ?"
values.append(id)
c.execute(query, values)
conn.commit()
conn.close()
def delete_alumni(id):
conn = sqlite3.connect('alumni.db')
c = conn.cursor()
c.execute("DELETE FROM alumni WHERE id = ?", (id,))
conn.commit()
conn.close()

你看,这些函数都比较简单,只需要知道怎么操作数据库就行。不过,为了更好地使用这些功能,我们可以再写一个简单的命令行界面,让用户可以方便地操作这个系统。
比如,我们可以做一个菜单,让用户选择添加、查询、更新或删除校友信息。下面是一个简单的例子:
def main():
while True:
print("\n--- 校友管理系统 ---")
print("1. 添加校友")
print("2. 查询校友")
print("3. 更新校友")
print("4. 删除校友")
print("5. 退出")
choice = input("请选择: ")
if choice == '1':
name = input("姓名: ")
gender = input("性别: ")
birth_date = input("出生日期 (YYYY-MM-DD): ")
graduation_year = int(input("毕业年份: "))
major = input("专业: ")
contact_info = input("联系方式: ")
job_company = input("工作单位: ")
add_alumni(name, gender, birth_date, graduation_year, major, contact_info, job_company)
print("校友信息已添加!")
elif choice == '2':
name = input("请输入要查询的姓名: ")
results = search_alumni(name)
if results:
for row in results:
print(f"ID: {row[0]}, 姓名: {row[1]}, 性别: {row[2]}, 出生日期: {row[3]}, 毕业年份: {row[4]}, 专业: {row[5]}, 联系方式: {row[6]}, 工作单位: {row[7]}")
else:
print("未找到相关校友信息。")
elif choice == '3':
id = int(input("请输入要更新的校友ID: "))
name = input("姓名 (留空表示不修改): ")
gender = input("性别 (留空表示不修改): ")
birth_date = input("出生日期 (留空表示不修改): ")
graduation_year = input("毕业年份 (留空表示不修改): ")
major = input("专业 (留空表示不修改): ")
contact_info = input("联系方式 (留空表示不修改): ")
job_company = input("工作单位 (留空表示不修改): ")
# 将字符串转换为整数
if graduation_year:
graduation_year = int(graduation_year)
else:
graduation_year = None
update_alumni(id, name, gender, birth_date, graduation_year, major, contact_info, job_company)
print("校友信息已更新!")
elif choice == '4':
id = int(input("请输入要删除的校友ID: "))
delete_alumni(id)
print("校友信息已删除!")
elif choice == '5':
print("退出程序。")
break
else:
print("无效选项,请重新选择。")
这个`main()`函数就是整个系统的入口,用户可以通过输入数字来选择不同的操作。看起来是不是很像游戏中的菜单?其实这就是一个简单的控制台应用,但功能却很实用。
当然,这只是最基础的一个版本,如果你想要更高级的功能,比如导出数据为Excel、支持多用户登录、图形化界面(GUI)等,那就需要更复杂的代码了。不过对于学校来说,这样的系统已经足够用了。
再说一点,虽然我们用的是SQLite,但它并不适合处理非常大的数据集。如果学校有上万条校友信息,那可能就需要换一个更强大的数据库,比如MySQL或者PostgreSQL。不过对于大多数中小型学校来说,SQLite已经足够。
这篇文章讲的主要是如何用Python和SQLite搭建一个简单的校友管理系统。如果你对编程不太熟悉,也可以考虑使用一些现成的软件或平台,比如WordPress插件、Google Sheets或者Airtable。不过,自己动手写一个,不仅能满足需求,还能学到很多东西。
最后,如果你想把这个系统扩展成一个Web应用,那就可以用Flask或者Django这样的框架来开发。这样的话,用户就不需要在命令行里操作了,而是通过网页来访问系统,更加方便。
总之,不管你是学生还是老师,都可以尝试着自己动手做一个校友管理系统。你会发现,原来编程并没有想象中那么难,而且能解决实际问题,真的很有趣!
好了,今天的分享就到这里。希望这篇文章对你有帮助,也欢迎你在评论区留言,告诉我你有什么想法或者遇到什么问题。我们下期再见!
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!

