用Python开发一个简单的校友管理系统:师范大学的实践
大家好,今天咱们来聊聊怎么用Python做一个校友管理系统。这个系统主要是为了师范大学这种学校设计的,因为师范大学的校友资源特别多,而且很多校友都希望保持联系。如果你是计算机专业的学生,或者对编程感兴趣,那这篇文章你一定得看看。
首先,我得说一下什么是校友管理系统。简单来说,它就是一个用来记录和管理学校毕业生信息的系统。比如,校友的姓名、联系方式、毕业年份、专业、工作单位等等。这些信息可以方便学校进行校友活动、招生宣传,甚至就业推荐。
那我们怎么实现这样一个系统呢?其实,用Python写起来挺简单的,特别是配合SQLite数据库的话。SQLite是一个轻量级的数据库,不需要安装服务器,直接在本地运行就行。这对于小型项目来说非常合适。
那我们先从最基础的部分开始讲起。首先,我们需要创建一个数据库,然后在其中建立一个表,用来存储校友的信息。接下来,我们要写一些代码,让系统能够添加、查询、更新和删除这些信息。
先来看一段代码。下面是一个简单的Python脚本,用来连接SQLite数据库并创建一个校友表:
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 NOT NULL,
graduation_year INTEGER,
major TEXT,
company TEXT
)
''')
# 提交更改
conn.commit()
# 关闭连接
conn.close()

这段代码的作用就是创建一个名为alumni.db的数据库文件,并在其中创建一个alumni表。表里有id、name、email、graduation_year、major和company这几个字段。id是主键,自动递增;其他字段都是文本类型,除了毕业年份是整数。
接下来,我们就可以往这个表里添加数据了。比如,我们可以写一个函数,用来添加新的校友信息:
def add_alumni(name, email, graduation_year, major, company):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO alumni (name, email, graduation_year, major, company) VALUES (?, ?, ?, ?, ?)',
(name, email, graduation_year, major, company))
conn.commit()
conn.close()
print("校友信息已添加!")
这个函数接收五个参数,分别是姓名、邮箱、毕业年份、专业和公司。然后通过SQL语句将这些信息插入到数据库中。注意,这里用了占位符?,这样可以防止SQL注入攻击,提高安全性。
接下来,我们再来看看怎么查询数据。比如,如果我们想查所有校友的信息,可以写一个函数:
def get_all_alumni():
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM alumni')
rows = cursor.fetchall()
for row in rows:
print(row)
conn.close()
这个函数会把所有的校友信息都打印出来。你可以根据需要修改输出方式,比如显示成表格或者导出为CSV文件。
那如果我们只想查某个特定的校友呢?比如按名字查,或者按公司查?这时候就需要用到WHERE子句了。例如,查某个名字的校友:
def search_alumni_by_name(name):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM alumni WHERE name LIKE ?', ('%' + name + '%',))
rows = cursor.fetchall()
for row in rows:
print(row)
conn.close()
这里用了LIKE关键字和通配符%,这样可以支持模糊搜索。比如输入“张”,就能查到所有姓张的校友。
当然,我们还可以对数据进行更新和删除操作。比如,更新一个校友的公司信息:
def update_company(id, new_company):
conn = sqlite3.connect('alumni.db')
cursor = conn.cursor()
cursor.execute('UPDATE alumni SET company = ? WHERE id = ?', (new_company, id))
conn.commit()
conn.close()
print("公司信息已更新!")
这个函数接收两个参数:校友的ID和新的公司名称。然后执行UPDATE语句,将对应的记录更新。
最后,删除一个校友信息也挺简单:
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("校友信息已删除!")
这就是基本的CRUD操作(增删改查)了。有了这些功能,我们的校友管理系统就已经具备了基本的功能。
不过,这还只是后端部分。如果想要更友好的用户界面,可能还需要做一个前端页面。比如用HTML、CSS和JavaScript做一个简单的网页,让用户可以通过浏览器来操作这个系统。
不过,对于师范大学这样的学校来说,可能不需要太复杂的系统。有时候,一个命令行版本的系统就已经足够用了。特别是对于学生做课程项目或者小实验的时候,这样的系统既简单又实用。
那我们可以考虑把这个系统做成一个命令行程序,让用户通过输入指令来操作。比如,输入1添加校友,2查询,3更新,4删除,5退出等等。
下面是一个简单的命令行交互示例:
while True:
print("\n校友管理系统")
print("1. 添加校友")
print("2. 查看所有校友")
print("3. 按名字查找")
print("4. 更新公司信息")
print("5. 删除校友")
print("6. 退出")
choice = input("请选择操作: ")
if choice == '1':
name = input("请输入姓名: ")
email = input("请输入邮箱: ")
graduation_year = int(input("请输入毕业年份: "))
major = input("请输入专业: ")
company = input("请输入公司: ")
add_alumni(name, email, graduation_year, major, company)
elif choice == '2':
get_all_alumni()
elif choice == '3':
name = input("请输入要查找的名字: ")
search_alumni_by_name(name)
elif choice == '4':
id = int(input("请输入要更新的校友ID: "))
new_company = input("请输入新公司: ")
update_company(id, new_company)
elif choice == '5':
id = int(input("请输入要删除的校友ID: "))
delete_alumni(id)
elif choice == '6':
print("感谢使用校友管理系统!")
break
else:
print("无效选项,请重新选择!")
这个程序会一直循环,直到用户选择退出。每个选项对应不同的功能,用户只需要按照提示输入即可。
当然,这只是个简单的例子。实际开发中,还需要考虑错误处理、数据验证、权限控制等更多问题。比如,确保用户输入的毕业年份是有效的数字,邮箱格式是否正确,避免重复添加同一个人等等。
不过,对于初学者来说,这样的系统已经是一个不错的起点了。而且,通过这个项目,你不仅能学到Python的基本语法,还能掌握数据库操作、函数定义、用户交互等很多实用技能。
另外,如果你是师范大学的学生,也可以把这个系统扩展一下,加入更多功能。比如,记录校友的联系方式、参加过的活动、捐款情况等等。甚至可以做一个Web版的系统,用Flask或者Django框架来做。
总的来说,开发一个校友管理系统并不难,关键是要有一个清晰的思路和合理的架构。通过不断练习和优化,你会发现编程其实很有趣,而且能解决很多实际问题。
所以,如果你对Python感兴趣,或者正在学习计算机相关知识,不妨试试这个项目。它不仅有助于提升你的编程能力,还能让你更深入地理解数据库和应用程序的设计与实现。
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!

