C++设计一个计算机工程学院校友管理系统,学校新闻模块使用链表结构来组织新闻,不能使用数组,实现学校新闻的发布、删除、修改、查找等功能.
时间: 2024-02-02 08:05:26 浏览: 25
好的,这是一个比较复杂的系统,需要涉及到多种数据结构和算法。我可以给你提供一个大致的框架,你可以根据自己的实际需求进行适当的修改和完善。
首先,我们需要定义一个学校新闻的结构体:
```c++
struct News {
int id; // 新闻编号
string title; // 新闻标题
string content; // 新闻内容
string time; // 发布时间
};
```
接下来,我们需要定义一个链表结构来存储新闻:
```c++
struct Node {
News data; // 新闻
Node* next; // 指向下一个节点的指针
};
class NewsList {
public:
NewsList(); // 构造函数
~NewsList(); // 析构函数
void addNews(News n); // 添加新闻
void delNews(int id); // 删除新闻
void modNews(int id); // 修改新闻
void findNews(int id);// 查找新闻
void showAll(); // 显示所有新闻
private:
Node* head; // 头节点指针
};
```
接下来,我们需要实现这些函数。首先是构造函数和析构函数:
```c++
NewsList::NewsList() {
head = new Node;
head->next = nullptr;
}
NewsList::~NewsList() {
Node* p = head;
while (p != nullptr) {
Node* temp = p;
p = p->next;
delete temp;
}
}
```
然后是添加新闻的函数:
```c++
void NewsList::addNews(News n) {
Node* p = head;
while (p->next != nullptr) {
p = p->next;
}
Node* newNode = new Node;
newNode->data = n;
newNode->next = nullptr;
p->next = newNode;
}
```
接下来是删除新闻的函数:
```c++
void NewsList::delNews(int id) {
Node* p = head->next;
Node* pre = head;
while (p != nullptr) {
if (p->data.id == id) {
pre->next = p->next;
delete p;
return;
}
pre = p;
p = p->next;
}
cout << "未找到编号为 " << id << " 的新闻!" << endl;
}
```
然后是修改新闻的函数:
```c++
void NewsList::modNews(int id) {
Node* p = head->next;
while (p != nullptr) {
if (p->data.id == id) {
cout << "请输入新的标题:" << endl;
cin >> p->data.title;
cout << "请输入新的内容:" << endl;
cin >> p->data.content;
cout << "修改成功!" << endl;
return;
}
p = p->next;
}
cout << "未找到编号为 " << id << " 的新闻!" << endl;
}
```
接下来是查找新闻的函数:
```c++
void NewsList::findNews(int id) {
Node* p = head->next;
while (p != nullptr) {
if (p->data.id == id) {
cout << "编号:" << p->data.id << endl;
cout << "标题:" << p->data.title << endl;
cout << "内容:" << p->data.content << endl;
cout << "发布时间:" << p->data.time << endl;
return;
}
p = p->next;
}
cout << "未找到编号为 " << id << " 的新闻!" << endl;
}
```
最后是显示所有新闻的函数:
```c++
void NewsList::showAll() {
Node* p = head->next;
while (p != nullptr) {
cout << "编号:" << p->data.id << endl;
cout << "标题:" << p->data.title << endl;
cout << "内容:" << p->data.content << endl;
cout << "发布时间:" << p->data.time << endl;
p = p->next;
}
}
```
这样,一个简单的学校新闻管理系统就完成了。当然,如果你有其他的需求,还可以根据需要添加其他的函数和数据结构。