2024-6-21 留言

持续更新ing
对于计算机学科或者是其他需要学习一些计算机语言的同学,已经苦期末的程序设计久矣,故我将我写过的程序作业放在Bolg里面,提供给大家借鉴。(所有的程序都是可以运行的),对于那些需要分模块的部分,我会提示的,没有提示的部分,便是直接放入即可。 最后,感谢各位的观看。

C++写学生管理系统

作业所需要求

一、设计基础
设计一个基于 C++的学生信息管理系统,该系统应能够有效地管理学生信息,
包括学生基本信息、课程成绩、奖惩记录等,并提供相关的查询、修改和统计
功能。该系统旨在提高学校的管理效率,并为教师和学生提供更好的服务。
二、功能要求

  1. 学生信息录入
    o 管理员可以录入学生的基本信息,包括学号、姓名、性别、出生
    日期、班级等。
    o 系统应自动为每个学生分配一个唯一的学号。
  2. 课程成绩管理
    o 管理员可以录入学生的课程成绩,包括课程名称、课程代码、成
    绩等。
    o 支持学生成绩的修改和查询。
  3. 奖惩记录管理
    o 管理员可以记录学生的奖惩信息,包括奖惩类型、奖惩内容、时
    间等。
    o 支持奖惩记录的查询和修改。
  4. 学生信息查询
    o 用户可以通过学号、姓名等关键词查询学生的基本信息、课程成
    绩和奖惩记录。
    o 查询结果应清晰明了,便于用户快速了解学生情况。
  5. 统计分析
    o 提供统计分析功能,如按班级统计学生数量、平均成绩等。
    o 提供学生成绩排名、奖惩情况统计等报表,帮助管理员分析学生
    学习和表现情况。
  6. 扩展功能(可选)
    o 学生登录功能:允许学生使用学号和密码登录系统,查看自己的
    信息和成绩。
    o 教师登录功能:允许教师查看所教课程的学生成绩和统计信息。
    o 导出功能:支持将学生信息、成绩和奖惩记录导出为 Excel 或 CSV
    文件。
    三、实现要求
     使用 C++编程语言实现系统功能。
     可以利用结构体或类来定义学生、课程成绩、奖惩记录等相关的数据结
    构。
     学生信息、成绩和奖惩记录应保存到文件中,确保数据的持久化。
     提供友好的用户界面,可以是命令行界面或简单的图形界面。
     注意系统的稳定性和安全性,确保数据不会因意外情况而丢失或被篡
    改。

C++代码(全部)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <map>
#include <algorithm>

using namespace std;
#define Numbers 100

//学生类
class Student {
public:
int student_id;
string name;
string gender;
string birth_date;
string class_name;


Student(int id, string n, string g, string bd, string cn)
: student_id(id), name(n), gender(g), birth_date(bd), class_name(cn) {}

// 注册学生信息
void registerStudent() {
srand(time(0));
cout << "请输入学生的姓名: ";
cin >> name;
cout << "请输入学生的班级: ";
cin >> student_id;
cout << "请输入学生的生日";
cin >> birth_date;
cout << "请输入学生的班级" << endl;
cin >> class_name;
student_id = rand(); // 随机生成一个学号
cout << "为该学生生成了一个专属的学号,学号是:" << student_id << endl;
ofstream outfile("students.txt", ios::app);
if (outfile.is_open()) {
outfile << name << " " << student_id << " " << birth_date << " " << class_name << " " << endl;
outfile.close();
cout << "恭喜,学生信息注册成功!" << endl;
}
else {
cout << "无法写入学生信息." << endl;
}
}

// 学生登录功能
bool loginStudent() {
string name;
int studnet_id;
cout << "请输入学生的姓名 ";
cin >> name;
cout << "请输入学生的学号: ";
cin >> student_id;

ifstream infile("students.txt");
string file_name, file_studentname;
int file_id;
bool login_success = false;

if (infile.is_open()) {
while (infile >> file_name >> file_id >> file_studentname) {
if (file_id == student_id && file_studentname == name) {
cout << "Login successful! Welcome " << file_name << "!" << endl;
login_success = true;
break;
}
}
infile.close();
}
else {
cout << "Unable to open file for reading." << endl;
}

if (!login_success) {
cout << "Invalid ID or password. Login failed." << endl;
}

return login_success;
}


};

//课程成绩类
class CourseGrade {
public:
int student_id;
string course_name;
string course_code;
double grade;

CourseGrade(int id, string cn, string cc, double g)
: student_id(id), course_name(cn), course_code(cc), grade(g) {}
};

//奖赏机制类
class AwardPenalty {
public:
int student_id;
string type;
string content;
string date;

AwardPenalty(int id, string t, string c, string d)
: student_id(id), type(t), content(c), date(d) {}
};

vector<Student> students;
vector<CourseGrade> grades;
vector<AwardPenalty> awards;

int next_student_id = 1;

void addStudent() {
string name, gender, birth_date, class_name;
cout << "请加入学生的姓名: ";
cin >> name;
cout << "请输入学生的成绩: ";
cin >> gender;
cout << "请输入学生的生日 (YYYY-MM-DD): ";
cin >> birth_date;
cout << "请输入学生所属于的班级 (类似2023级电商二班): ";
cin >> class_name;
Student new_student(next_student_id++, name, gender, birth_date, class_name);
students.push_back(new_student);
cout << "学生自己的学号: " << new_student.student_id << endl;
}

void manageCourseGrades() {
int id;
string course_name, course_code;
double grade;
cout << "请输入学生的学号: ";
cin >> id;
cout << "请输入课程名: ";
cin >> course_name;
cout << "请输入课程代号: ";
cin >> course_code;
cout << "请输入学生该门课程的成绩: ";
cin >> grade;
grades.push_back(CourseGrade(id, course_name, course_code, grade));
cout << "课程添加成功!" << endl;
}

//奖罚方法
void manageAwardPenalties() {
int id;
string type, content, date;
cout << "请输入奖罚同学的学号: ";
cin >> id;
cout << "请输入类型 (award/penalty): ";
cin >> type;
cout << "请输入具体奖罚内容: ";
cin >> content;
cout << "发生日期 (YYYY-MM-DD): ";
cin >> date;
awards.push_back(AwardPenalty(id, type, content, date));
cout << "奖励/处罚已被成功添加." << endl;
}

//查找学生
void queryStudentInfo() {
int id;
cout << "请输入学生的学号: ";
cin >> id;
auto it = find_if(students.begin(), students.end(), [id](Student& s) { return s.student_id == id; });
if (it != students.end()) {
cout << "学生的学号: " << it->student_id << endl;
cout << "名字: " << it->name << endl;
cout << "成绩: " << it->gender << endl;
cout << "生日: " << it->birth_date << endl;
cout << "班级: " << it->class_name << endl;
}
else {
cout << "对不起,无法找到该学生." << endl;
}
}

//统计成绩
void statisticalAnalysis() {
map<int, double> student_average_grades;
for (const auto& grade : grades) {
student_average_grades[grade.student_id] += grade.grade;
}
for (auto& pair : student_average_grades) {
pair.second /= count_if(grades.begin(), grades.end(), [pair](CourseGrade& g) { return g.student_id == pair.first; });
}
for (const auto& pair : student_average_grades) {
cout << "学生学号: " << pair.first << ", 平均成绩是: " << pair.second << endl;
}

}


void studentLogin() {
int id,choice;
string Name;
// Simplified login function
cout << "学生登录功能." << endl;
cout << "请输入您的姓名";
cin >> Name;
cout << "请输入您的学号" << endl;
cin >> id;
auto it = find_if(students.begin(), students.end(), [id](Student& s) { return s.student_id == id; });
if (it != students.end()) {
cout << "请问" << Name<<"是否想查询自己的成绩和信息?(请输入-- - (1 / 0))" << endl;
cin >> choice;
switch (choice)
{
case 0:
cout << "感谢您的使用" << endl;
break;
case 1:
cout << Name <<"同学,你的成绩是:" << it->gender << endl;
cout << "以下是您的个人信息" << endl;
cout << "生日: " << it->birth_date << endl;
cout << "班级: " << it->class_name << endl;
default:
cout << "您的选项有误。" << endl;
break;
}

}
else {
cout << "对不起,无法找到该学生." << endl;
}
}

void mainMenu() {
while (true) {
cout << "1. 加入学生信息\n2. 管理课程信息\n3. 奖罚管理\n4. 查询学生信息\n5. 统计与分析\n6. 学生登录\n7. 退出\n";
int choice;
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
manageCourseGrades();
break;
case 3:
manageAwardPenalties();
break;
case 4:
queryStudentInfo();
break;
case 5:
statisticalAnalysis();
break;
case 6:
studentLogin();
break;
case 7:
return;
default:
cout << "您的输入有误,请重新输入谢谢。" << endl;
}
}
}

int main() {
mainMenu();
return 0;
}

python实现图书管理系统

具体要求

一、系统概述 使用 Python 实现的图书馆借阅系统,此系统支持图书信息的录入、借阅、归 还、查询以及借阅记录的查询等功能。

二、功能要求

1.图书信息录入: o 管理员可以录入图书的基本信息,包括书名、作者、ISBN 号、出 版社和入库时间等。 o 系统自动为每本图书分配一个唯一的标识符(图书 ID)。

2.图书借阅: o 读者可以借阅图书,借阅时需提供有效的身份证明(如读者证 号)。 o 系统记录借阅时间、借阅者信息和所借图书的详细信息。 o 若图书已被借出,系统提示读者该图书当前不可用。

3.图书归还: o 读者在借阅期满后归还图书。 o 系统更新图书的归还状态,并记录归还时间。 o 若图书逾期未还,系统能自动计算并显示逾期费用(如有此规 定)。

4.图书查询: o 用户可以通过书名、作者、ISBN 号等关键词查询图书的借阅状态 和位置(如在馆、已借出等)。 o 查询结果应清晰明了,便于用户快速了解图书的当前状态。

5.借阅记录查询: o 管理员可以查询某本图书的借阅历史记录,包括借阅者信息、借 阅时间和归还时间等。

三、实现方式

1.数据结构: o 使用 Python 的字典(dict)或自定义类(class)来定义图书和借 阅记录等数据结构。 o 字典或类中的属性可以包括图书 ID、书名、作者、ISBN 号、出版 社、入库时间、借阅状态、借阅者信息等。

2.数据存储: o 图书信息可以保存在内存中,通过 Python 的变量或数据结构进行 管理。 o 借阅和归还记录可以保存到文本文件或数据库中,以便后续查询 和分析。

3.用户界面: o 提供命令行界面(CLI),通过终端与用户进行交互。 o 设计友好的交互提示和错误处理机制,确保用户能够方便地进行 操作。

4.稳定性和安全性: o 注意异常处理,确保系统在遇到错误时能够妥善处理并给出提 示。 o 考虑数据备份和恢复机制,防止数据丢失或被篡改。

2.pyhton具体实现(代码全部在一个文件里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
import datetime
import json
from typing import List, Dict

# 图书类
class Book:
def __init__(self, title: str, author: str, isbn: str, publisher: str, entry_date: str):
self.id = None # 书的唯一ID
self.title = title
self.author = author
self.isbn = isbn
self.publisher = publisher
self.entry_date = entry_date
self.is_borrowed = False
self.borrower_id = None
self.borrow_date = None

# 借阅记录类
class BorrowRecord:
def __init__(self, book_id: int, borrower_id: str, borrow_date: str):
self.book_id = book_id
self.borrower_id = borrower_id
self.borrow_date = borrow_date
self.return_date = None

# 图书馆系统类
class LibrarySystem:
def __init__(self):
self.books: Dict[int, Book] = {}
self.borrow_records: List[BorrowRecord] = []
self.next_book_id = 1

def add_book(self, title: str, author: str, isbn: str, publisher: str, entry_date: str):
book = Book(title, author, isbn, publisher, entry_date)
book.id = self.next_book_id
self.books[self.next_book_id] = book
self.next_book_id += 1
print(f"该书被添加以及其ID: {book.id}")

def borrow_book(self, book_id: int, borrower_id: str):
if book_id not in self.books:
print("该书ID并未存在.")
return
book = self.books[book_id]
if book.is_borrowed:
print("很抱歉,此书已经被借阅.")
return
book.is_borrowed = True
book.borrower_id = borrower_id
book.borrow_date = datetime.date.today().isoformat()
borrow_record = BorrowRecord(book_id, borrower_id, book.borrow_date)
self.borrow_records.append(borrow_record)
print(f"该书被借阅: {book.title}")

def return_book(self, book_id: int):
if book_id not in self.books:
print("该书ID并未存在.")
return
book = self.books[book_id]
if not book.is_borrowed:
print("该书未被借阅.")
return
book.is_borrowed = False
for record in self.borrow_records:
if record.book_id == book_id and record.return_date is None:
record.return_date = datetime.date.today().isoformat()
break
print(f"图书已被归还: {book.title}")

def search_books(self, query: str):
results = [book for book in self.books.values() if query.lower() in book.title.lower() or query.lower() in book.author.lower() or query.lower() in book.isbn]
if results:
for book in results:
status = "已被借阅" if book.is_borrowed else "可以借阅"
print(f"本书ID: {book.id}, 书名: {book.title}, 作者: {book.author}, 借阅状态: {status}")
else:
print("没有找到此书.")

def query_borrow_records(self, book_id: int):
if book_id not in self.books:
print("抱歉,该书ID未存在.")
return
records = [record for record in self.borrow_records if record.book_id == book_id]
if records:
for record in records:
return_date = record.return_date if record.return_date else "抱歉,该书仍然未归还"
print(f"借阅者 ID: {record.borrower_id}, 借阅时间: {record.borrow_date}, 归还日期: {return_date}")
else:
print("没有找到该书的借阅记录.")

def save_data(self, filename: str):
data = {
"books": {book_id: book.__dict__ for book_id, book in self.books.items()},
"borrow_records": [record.__dict__ for record in self.borrow_records]
}
with open(filename, 'w') as f:
json.dump(data, f, indent=4)

def load_data(self, filename: str):
try:
with open(filename, 'r') as f:
data = json.load(f)
self.books = {int(book_id): Book(**book_data) for book_id, book_data in data["books"].items()}
self.borrow_records = [BorrowRecord(**record_data) for record_data in data["borrow_records"]]
self.next_book_id = max(self.books.keys(), default=0) + 1
except FileNotFoundError:
print("未找到图书馆该类似文件,依旧空缺")


class Visitor:
def __init__(self, name, visitor_type):
self.name = name
self.visitor_type = visitor_type

def __str__(self):
return f"名字: {self.name}, 类型: {self.visitor_type}"


# 继承借阅者类
class Borrower(Visitor):
def __init__(self, name, borrowed_books=None):
super().__init__(name, "借阅者")
self.borrowed_books = borrowed_books if borrowed_books is not None else []

def borrow_book(self, book):
self.borrowed_books.append(book)

def __str__(self):
return super().__str__() + f", 借阅书籍: {', '.join(self.borrowed_books)}"


# 管理者类
class Manager(Visitor):
def __init__(self, name, responsibilities=None):
super().__init__(name, "管理员")
self.responsibilities = responsibilities if responsibilities is not None else []

def add_responsibility(self, responsibility):
self.responsibilities.append(responsibility)

def __str__(self):
return super().__str__() + f", 职责: {', '.join(self.responsibilities)}"


class PeopleSystem:
def __init__(self):
self.visitors = []

def add_visitor(self, visitor):
self.visitors.append(visitor)

def show_visitors(self):
for visitor in self.visitors:
print(visitor)


def Login():
People = PeopleSystem()
ma = int(input("请问您是否为借阅者(1 是 / 0 否 ):"))
if ma == 1:
borrower = Borrower(name=input("请输入您的名字:"))
People.add_visitor(borrower)
else:
manager = Manager(name=input("请输入您的名字:"))
manager.add_responsibility(input("输入您的工作职责:"))
People.add_visitor(manager)
print("欢迎您的登录")


def Books():
ma = int(input("请问您是否为借阅者(1 是 / 0 否 ):"))
print("""
------------------图书借阅系统v1.0-----------------------
*1. 图书信息录入(管理员进行操作)
*2. 图书借阅
*3. 图书归还
*4. 图书查询
*5. 借阅记录查询
*6. 登录
*7. 退出系统
--------------------------------------------------------
""")
choice = int(input("请输入您的选择:"))
lib = LibrarySystem()
if choice == 7:
print("感谢您的使用")
exit()
if ma == 0:
if choice == 1:
print("""
--------------正在加入图书----------------------
""")
title = input("请输入书名:")
author = input("请输入作者名字:")
isbn = input("请输入图书的ISBN号")
publisher = input("请输入出版社:")
entry_date = input("进入日期(例如:2024-4-26):")
lib.add_book(title,author,isbn,publisher,entry_date)
print("图书加入成功")
else:
print("操作失误哦")
else:
if choice == 1:
print("您的操作越界哦")
if choice == 2:
book_id = int(input("请输入图书的ID号:"))
borrower_id = input("请输入ID:")
lib.borrow_book(book_id,borrower_id)
elif choice == 3:
book_id = int(input("请输入图书的ID号"))
lib.return_book(book_id)
print("感谢您的及时归还,祝您生活愉快")
elif choice == 4:
query = input("请输入您要查找的书籍名称")
lib.search_books(query)
elif choice == 5:
filename = input("请输入您要查询的书的借阅记录")
lib.save_data(filename)

if __name__ == '__main__':
Login()
while(1):
library = LibrarySystem()
library.load_data('library_data.json')
Books()