C++构建MVC学生信息管理系统

一、头文件创建数据结构

student.h

cpp 复制代码
#pragma once
#include<vector>

struct student //定义student结构体 说明学生的基本信息
{	
	int id;
	char name[8];
	int age;
	int score;
};

class View {  //定义窗口类 涵盖基本功能和学生数据
private:
	int id = 1001; //初始学生id
	vector<student> students; //定义含有student结构体的向量students
	void add(); //定义add方法
	void show();
	void remove();
public:
	void list(); //定义控制端展示
};
二、构建方法

student.cpp

cpp 复制代码
#include<iostream>
#include<locale>

using namespace std;
#include"student.h"

void View::list(){
	while (true)
	{
		int num;
		cout << "学生信息管理系统!" << endl;
		cout << "1.添加信息" << endl;
		cout << "2.查看信息" << endl;
		cout << "3.删除信息" << endl;
		cout << "0.退出" << endl;
		cout << "请输入:";	cin >> num;
		if (num == 0) break;
		else if (num == 1) this->add();
		else if (num == 2) this->show();
		else if (num == 3) this->remove();
		else {
			cout << "输入有误,请重新输入!";
			continue;
		};
	}
}

void View::add() {
	while (true)
	{
		student stu;
		char name[9]; int age, score;
		cout << "请输入姓名,年龄,分数:"; cin >> name >> age >> score;
		stu.age = age; stu.score = score; stu.id = this->id;
		strcpy_s(stu.name, sizeof(stu.name), name);
		this->students.push_back(stu); // 使用 push_back 向 students vector 中添加元素student结构体
		this->id++;
		cout << "添加成功!" << endl;
		break;
	}

}
void View::show() {
	int length = this->students.size();
	for (int i = 0; i < length; i++)
	{
		cout << this->students[i].id << "\t";
		cout << this->students[i].name << "\t";
		cout << this->students[i].age << "\t";
		cout << this->students[i].score << endl;
	}
}

void View::remove() {
	int num;
	int flag;
	cout << "请输入需要删除的编号:"; cin >> num;
	int length = this->students.size();
	for (int i = 0; i < length; i++)
	{
		if (this->students[i].id == num)
		{
			this->students.erase(this->students.begin() + i);
			flag = 0;
			break;
		}else { flag = 1; };
	};
	if (flag == 1) {
		cout << "没有该学生" << endl;
	}else{
		cout << "删除成功!" << endl;
	}
}
三、主函数初始化窗口

main.cpp

cpp 复制代码
#include<locale>
#include <iostream>
using namespace std;
#include "student.h"



int main()
{
	View view;
	view.list();
}
相关推荐
无名猿3 分钟前
list 与 forward_list:链表真的比 vector 快吗
c++·性能优化·stl·内存管理·标准库
笑鸿的学习笔记6 分钟前
C++笔记之SIMD与SSE指令集
开发语言·c++·笔记
汉克老师24 分钟前
GESP2026年9月认证C++一级( 第二部分判断题(1~10题)精讲
c++·gesp·小学生·学c++编程
福兮说24 分钟前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
小的时候可菜了1 小时前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
可乐鸡翅yeah_1 小时前
hls.js 配置 loadStartPosition,点播起始播放位置踩坑
开发语言·javascript·网络协议·ecmascript·m3u8在线
一只旭宝1 小时前
C++ 后端开发面试题整理
java·c++·面试
xlq223221 小时前
全面复习1
c++
Dylan的码园1 小时前
求平均成绩 矩阵数据处理 【循环处理 二维数组】
c++·线性代数·矩阵
en.en..1 小时前
Linux 进程退出exit(函数)
java·开发语言·算法