Python 代码实现教师档案管理系统
一个简单的教师档案管理系统的Python代码示例。这个系统将包括以下模块:
添加教师档案 查看教师档案 更新教师档案 删除教师档案 保存/加载档案到文件 以下是这个系统的代码示例:
代码实现
import json
class TeacherManagementSystem:
def __init__(self):
self.teachers = []
def add_teacher(self, teacher):
self.teachers.append(teacher)
def view_teacher(self, teacher_id):
for teacher in self.teachers:
if teacher['id'] == teacher_id:
return teacher
return None
def update_teacher(self, teacher_id, updated_info):
for i, teacher in enumerate(self.teachers):
if teacher['id'] == teacher_id:
self.teachers[i] = updated_info
return True
return False
def delete_teacher(self, teacher_id):
for i, teacher in enumerate(self.teachers):
if teacher['id'] == teacher_id:
del self.teachers[i]
return True
return False
def save_to_file(self, filename):
with open(filename, 'w') as file:
json.dump(self.teachers, file)
def load_from_file(self, filename):
try:
with open(filename, 'r') as file:
self.teachers = json.load(file)
except FileNotFoundError:
print("File not found!")
except json.JSONDecodeError:
print("Error decoding JSON data!")
# 示例用法
if __name__ == "__main__":
tms = TeacherManagementSystem()
# 添加教师档案
tms.add_teacher({'id': 1, 'name': 'John Doe', 'subject': 'Math'})
# 保存到文件
tms.save_to_file('teachers.json')
# 加载文件
tms.load_from_file('teachers.json')
# 查看教师档案
print(tms.view_teacher(1))
# 更新教师档案
tms.update_teacher(1, {'id': 1, 'name': 'Jane Doe', 'subject': 'Physics'})
# 查看更新后的教师档案
print(tms.view_teacher(1))
# 删除教师档案
tms.delete_teacher(1)
# 查看是否删除成功
print(tms.view_teacher(1)) # 应该返回None
代码分析
这个示例中,我们创建了一个名为TeacherManagementSystem的类来管理教师档案。每个教师都表示为一个字典,并存储在teachers列表中。该类提供了添加、查看、更新和删除教师档案的方法,还提供了将教师档案保存到文件和从文件加载的功能。
这个示例代码考虑了一些异常情况,比如文件未找到和JSON数据解码错误。在实际应用中,你可能需要进一步扩展和优化这个系统,以满足更多需求和处理更多异常情况。
C++代码实现教师档案管理系统
一个更复杂的C++代码示例,实现一个教师档案管理系统,其中包括使用Redis数据库、后台管理界面以及分模块的实现。在这个示例中,我们将使用Redis作为教师档案的持久化存储,同时使用C++编写后台管理界面。
这里是一个简化的示例,将代码分成几个模块:
Teacher 类:表示教师的数据结构和相关操作。 RedisHandler 类:负责与Redis数据库进行交互。 AdminInterface 类:提供后台管理界面。 Main 模块:主程序入口,初始化系统并启动后台管理界面。 以下是这些模块的代码实现:
Teacher.hpp
// Teacher.hpp
#ifndef TEACHER_HPP
#define TEACHER_HPP
#include <string>
struct Teacher {
int id;
std::string name;
std::string subject;
};
#endif // TEACHER_HPP
RedisHandler.hpp
// RedisHandler.hpp
#ifndef REDISHANDLER_HPP
#define REDISHANDLER_HPP
#include <cpp_redis/cpp_redis>
class RedisHandler {
public:
RedisHandler();
void saveTeacher(const Teacher& teacher);
Teacher getTeacher(int id);
void updateTeacher(const Teacher& teacher);
void deleteTeacher(int id);
private:
cpp_redis::client redis_client;
};
#endif // REDISHANDLER_HPP
RedisHandler.hpp
// RedisHandler.hpp
#ifndef REDISHANDLER_HPP
#define REDISHANDLER_HPP
#include <cpp_redis/cpp_redis>
class RedisHandler {
public:
RedisHandler();
void saveTeacher(const Teacher& teacher);
Teacher getTeacher(int id);
void updateTeacher(const Teacher& teacher);
void deleteTeacher(int id);
private:
cpp_redis::client redis_client;
};
#endif // REDISHANDLER_HPP
RedisHandler.cpp
// RedisHandler.cpp
#include "RedisHandler.hpp"
#include "Teacher.hpp"
RedisHandler::RedisHandler() {
redis_client.connect();
}
void RedisHandler::saveTeacher(const Teacher& teacher) {
redis_client.set("teacher:" + std::to_string(), + "," + teacher.subject);
redis_client.sync_commit();
}
Teacher RedisHandler::getTeacher(int id) {
std::string teacher_info;
redis_client.get("teacher:" + std::to_string(id), [&](cpp_redis::reply& reply) {
teacher_info = reply.as_string();
});
redis_client.sync_commit();
Teacher teacher;
= id;
auto pos = teacher_info.find(',');
if (pos != std::string::npos) {
= teacher_info.substr(0, pos);
teacher.subject = teacher_info.substr(pos + 1);
}
return teacher;
}
void RedisHandler::updateTeacher(const Teacher& teacher) {
redis_client.set("teacher:" + std::to_string(), + "," + teacher.subject);
redis_client.sync_commit();
}
void RedisHandler::deleteTeacher(int id) {
redis_client.del("teacher:" + std::to_string(id));
redis_client.sync_commit();
}
AdminInterface.hpp
// AdminInterface.hpp
#ifndef ADMININTERFACE_HPP
#define ADMININTERFACE_HPP
#include "Teacher.hpp"
#include "RedisHandler.hpp"
class AdminInterface {
public:
AdminInterface(RedisHandler& redis_handler);
void run();
private:
RedisHandler& redis_handler;
};
#endif // ADMININTERFACE_HPP
AdminInterface.cpp
// AdminInterface.cpp
#include "AdminInterface.hpp"
#include <iostream>
AdminInterface::AdminInterface(RedisHandler& redis_handler) : redis_handler(redis_handler) {}
void AdminInterface::run() {
int choice;
while (true) {
std::cout << "1. Add Teacher\n"
"2. View Teacher\n"
"3. Update Teacher\n"
"4. Delete Teacher\n"
"5. Exit\n";
std::cout << "Enter your choice: ";
std::cin >> choice;
if (choice == 5) {
std::cout << "Exiting...\n";
break;
}
switch (choice) {
case 1: {
Teacher teacher;
std::cout << "Enter teacher ID: ";
std::cin >> ;
std::cout << "Enter teacher name: ";
std::cin.ignore();
std::getline(std::cin, );
std::cout << "Enter teacher subject: ";
std::getline(std::cin, teacher.subject);
redis_handler.saveTeacher(teacher);
std::cout << "Teacher added successfully!\n";
break;
}
case 2: {
int id;
std::cout << "Enter teacher ID to view: ";
std::cin >> id;
Teacher teacher = redis_handler.getTeacher(id);
if ( != 0) {
std::cout << "ID: " << << ", Name: " << << ", Subject: " << teacher.subject << "\n";
} else {
std::cout << "Teacher not found!\n";
}
break;
}
// Add cases for other operations (update, delete)
default:
std::cout << "Invalid choice! Please try again.\n";
}
}
}
main.cpp
// main.cpp
#include "AdminInterface.hpp"
#include "RedisHandler.hpp"
int main() {
RedisHandler redis_handler;
AdminInterface admin_interface(redis_handler);
admin_interface.run();
return 0;
}
代码解析
- Teacher 类 这个模块定义了一个简单的结构体 Teacher,用于表示教师的数据。结构体包含三个成员变量:教师的ID(整数类型)、姓名(字符串类型)和教授科目(字符串类型)。
- RedisHandler 类 (RedisHandler.hpp 和 RedisHandler.cpp) 这个模块负责与Redis数据库进行交互。RedisHandler 类封装了一组方法,用于保存、获取、更新和删除教师档案。它使用 cpp_redis 库来实现与Redis的通信。
- AdminInterface 类 (AdminInterface.hpp 和 AdminInterface.cpp)实现了一个简单的后台管理界面,允许用户进行添加、查看、更新和删除教师档案的操作。它使用了 RedisHandler 类来实现这些操作。
- Main 模块 (main.cpp)这个模块是整个程序的入口点。它创建了 RedisHandler 对象和 AdminInterface 对象,并启动了后台管理界面。
















