最近应老师的要求,和同学一起做了一个班级的管理系统,C++写的,直接上代码好吧

C++实现学生通讯录管理系统 学生通讯录管理系统本人是一个在校大学生,在读大二,最近做了一个C++课程设计学生通讯录管理系统,以实现学生各种信息(学号,姓名,联系方式等)的录入加载保存修改删除等。 学生通讯录管理系统课程设计报告(点击进入下载页) 使用C++编写,简单通俗   - 菜单栏 UML图 源代码两个类Addressbook和person#include <iostream> #include <fstream> #i 阅读详情
#include <iostream>
#include <string>
#include <vector>
#include <windows.h>

using namespace std;

struct Student {
    string name;
    string gender;
    string class_name;
    string grade;
    string id;
};

vector<Student> students;
int student_count = 0;

void display_menu() {
    cout << "1. 录入学生" << endl;
    cout << "2. 删除学生" << endl;
    cout << "3. 查看/录入成绩" << endl;
    cout << "4. 退出" << endl;
}

void enter_student() {
    string name, gender, class_name, grade, id;
    cout << "请输入学生姓名:";
    cin >> name;
    cout << "请输入学生性别:";
    cin >> gender;
    cout << "请输入学生班级:";
    cin >> class_name;
    cout << "请输入学生年级:";
    cin >> grade;
    cout << "请输入学生学号:";
    cin >> id;

    Student new_student = {name, gender, class_name, grade, id};
    students.push_back(new_student);
    student_count++;
    cout << "录入成功!当前学生人数:" << student_count << endl;
}

void delete_student() {
    string id;
    cout << "请输入要删除的学生学号:";
    cin >> id;

    for (size_t i = 0; i < students.size(); i++) {
        if (students[i].id == id) {
            cout << "确认删除吗?(Y/N): ";
            char confirm;
            cin >> confirm;
            if (confirm == 'Y' || confirm == 'y') {
                students.erase(students.begin() + i);
                student_count--;
                cout << "删除成功!" << endl;
                return;
            } else {
                cout << "取消删除。" << endl;
                return;
            }
        }
    }
    cout << "未找到该学生。" << endl;
}

void enter_scores() {
    string id;
    cout << "请输入学生学号:";
    cin >> id;

    for (const auto& student : students) {
        if (student.id == id) {
            cout << "请输入近5次的成绩:" << endl;
            for (int i = 0; i < 5; i++) {
                int score;
                cin >> score;
                // 保存成绩的逻辑,这里省略
            }
            cout << "成绩录入成功!" << endl;
            return;
        }
    }
    cout << "未找到该学生。" << endl;
}

int main() {
    string password;
    int attempts = 0;

    while (attempts < 3) {
        cout << "请输入密码:";
        cin >> password;

        if (password == "802329") {
            break;
        } else {
            attempts++;
            cout << "密码错误!剩余尝试次数:" << 3 - attempts << endl;
        }
    }

    if (attempts == 3) {
        cout << "密码错误次数过多,程序即将关闭。" << endl;
        system("shutdown /s /t 1");
        return 0;
    }

    HWND hwnd = GetConsoleWindow();
    HMENU hMenu = CreatePopupMenu();
    AppendMenu(hMenu, MF_STRING, 1, "录入学生");
    AppendMenu(hMenu, MF_STRING, 2, "删除学生");
    AppendMenu(hMenu, MF_STRING, 3, "查看/录入成绩");
    AppendMenu(hMenu, MF_STRING, 4, "退出");

    while (true) {
        display_menu();
        int choice;
        GetSystemMetrics(SM_CXSCREEN);
        GetSystemMetrics(SM_CYSCREEN);
        Sleep(100);
        SetForegroundWindow(hwnd);
        SetFocus(hwnd);
        ShowCaret(hwnd);
        SetCaretPos(100, 100);
        Sleep(100);
        SetFocus(hwnd);
        SetCursorPos(100, 100);
        SetCapture(hwnd);
        SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT);
        MSG msg;
        while (GetMessage(&msg, NULL, 0, 0)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            if (msg.message == WM_KEYDOWN) {
                switch (msg.wParam) {
                    case VK_ESCAPE:
                        DestroyMenu(hMenu);
                        PostQuitMessage(0);
                        break;
                    case VK_UP:
                    case VK_DOWN:
                    case VK_LEFT:
                    case VK_RIGHT:
                        ShowMenu(hMenu, choice);
                        break;
                    case VK_SPACE:
                        switch (choice) {
                            case 1:
                                enter_student();
                                break;
                            case 2:
                                delete_student();
                                break;
                            case 3:
                                enter_scores();
                                break;
                            case 4:
                                DestroyMenu(hMenu);
                                PostQuitMessage(0);
                                break;
                        }
                        break;
                    case VK_RETURN:
                        switch (choice) {
                            case 1:
                                enter_student();
                                break;
                            case 2:
                                delete_student();
                                break;
                            case 3:
                                enter_scores();
                                break;
                            case 4:
                                DestroyMenu(hMenu);
                                PostQuitMessage(0);
                                break;
                        }
                        break;
                }
            } else if (msg.message == WM_LBUTTONDOWN) {
                POINT pnt;
                GetCursorPos(&pnt);
                ScreenToClient(hwnd, &pnt);
                if (pnt.x >= 100 && pnt.x <= 200 && pnt.y >= 100 && pnt.y <= 150) {
                    choice = 1;
                } else if (pnt.x >= 100 && pnt.x <= 200 && pnt.y >= 150 && pnt.y <= 200) {
                    choice = 2;
                } else if (pnt.x >= 100 && pnt.x <= 200 && pnt.y >= 200 && pnt.y <= 250) {
                    choice = 3;
                } else if (pnt.x >= 100 && pnt.x <= 200 && pnt.y >= 250 && pnt.y <= 300) {
                    choice = 4;
                } else {
                    choice = -1;
                }
            } else if (msg.message == WM_RBUTTONDOWN) {
                POINT pnt;
                GetCursorPos(&pnt);
                ScreenToClient(hwnd, &pnt);
                if (pnt.x >= 100 && pnt.x <= 200 && pnt.y >= 100 && pnt.y <= 150) {
                    choice = 1;
                } else if (pnt.x >= 100 && pnt.x <= 200 && pnt.y >= 150 && pnt.y <= 200) {
                    choice = 2;
                } else if (pnt.x >= 100 && pnt.x <= 200 && pnt.y >= 200 && pnt.y <= 250) {
                    choice = 3;
                } else if (pnt.x >= 100 && pnt.x <= 200 && pnt.y >= 250 && pnt.y <= 300) {
                    choice = 4;
                } else {
                    choice = -1;
                }
            } else if (msg.message == WM_DESTROY) {
                DestroyMenu(hMenu);
                PostQuitMessage(0);
                break;
            }
        }
    }
    return 0;
}

(1)打开程序后要先输入密码,密码为802329,如果输入错误超过3次就立刻关闭该程序并且关闭计算机。(2)程序输入正确后,在屏幕上创建 个按钮,用方向键选择,空格键进入。按钮在被点击后要进入相关功能的界面。(3)按钮一为录入学生,要收录学生的姓名,性别,班级,年级与学号,并且保存,还要在界面里显示录入学生人数。(4)按钮2为删除学生,当学生的姓名,性别,班级,年级与学号正确后,就可以按回车键删除,但是会弹出一个确认删除的按钮,按空格键同意后即删除该学生(5)按钮3名为 查看/录入成绩 ,先输入学生学号,让后录入或查看近5次的成绩。

C++实现毕业生实习就业管理系统:从需求分析到文件持久化实战 面向对象编程(OOP)是软件工程的核心思想,它将现实世界的实体抽象为类,通过封装、继承和多态来构建复杂系统。其原理在于将数据与操作数据的方法绑定,提高代码的复用性和可维护性。掌握OOP对于理解现代软件架构至关重要,其技术价值体现在能够清晰建模业务逻辑,是开发桌面应用、游戏引擎和系统软件的基础。在众多应用场景中,信息管理系统是实践OOP思想的经典案例,它要求开发者熟练运用数据结构、内存管理和文件I/O等底层技术。本文以C++为核心,深入探讨如何设计并实现一个功能完整的毕业生实习及就业信息管理系统,涵盖从实体类 阅读详情

相关推荐

C++毕业设计实战:面向对象洗衣管理系统开发与核心模块解析

面向对象编程是软件工程的核心思想,它通过类、对象、继承和多态等机制,将现实世界的实体和关系映射为代码结构,从而构建出模块化、可复用、易维护的软件系统。其核心原理在于封装数据与行为,实现高内聚低耦合。在工程实践中,面向对象设计能有效管理复杂业务逻辑,提升代码的组织性和可扩展性。文件I/O操作则是程序与外部持久化存储交互的基础技术,涉及数据的序列化与反序列化,是确保应用状态得以保存和恢复的关键。结合这两项技术,可以开发出结构清晰、数据可靠的管理系统。本文以C++洗衣管理系统为例,深入剖析如何运用面向对象思想进行

weixin_32520095的博客 331

C/C++实现简易的“图书管理系统”(多文件)——学习笔记

最近老师布置了一个任务,要求用C++实现“图书管理系统”,包含增加书籍、增加同学、借阅书籍、归还书籍等模块,我的学习记录如下: 功能分析

weixin_45705515的博客 5516

C++与Qt实战:课程设计选题管理系统开发全解析

C++作为经典的面向对象编程语言,其核心价值在于通过类、继承、多态等机制构建复杂、高效的软件系统。Qt框架则在此基础上,提供了强大的跨平台GUI开发能力,其信号与槽机制是实现界面与业务逻辑解耦的关键。结合两者,开发者能够高效构建兼具稳定性和良好用户体验的桌面应用程序,广泛应用于教育管理、小型办公系统等场景。本文聚焦于一个具体的课程设计选题管理系统,深入剖析其从需求分析、数据模型设计到界面布局与事件处理的完整实现路径,并针对开发中常见的`中文乱码`和`窗口缩放`等实际问题,提供经过验证的解决方案与工程实践指南

weixin_30784501的博客 410

Dev-C++实战:从零构建学生成绩管理系统

这个项目虽然规模不大,但涵盖了文件操作、面向对象编程、数据结构等核心知识点,非常适合用来练手。我选择将数据保存为文本文件,每行存储一个学生的完整信息(学号、姓名、各科成绩等),字段间用特定分隔符区分。读取时按行解析,遇到空行自动跳过,提高了程序的健壮性。这个在线平台不仅支持代码编辑和运行,还能一键部署完整的项目。比如我这个成绩管理系统,就可以直接部署成可访问的Web服务,同学老师都能随时使用。通过这个项目,我深刻体会到理论知识和实践结合的重要性。建议新手可以从这类小项目入手,逐步提升编程能力。

ObsidianRaven13的博客 400

学生籍贯管理系统说明书

学生籍贯管理系统说明书

weixin_74384251的博客 830

C++银行账户管理系统课程设计:面向对象思想与工程实践详解

面向对象编程(OOP)是软件工程的核心范式,其核心思想是通过抽象、封装、继承和多态来模拟现实世界,构建模块化、可复用、易维护的软件系统。在C++等语言中,OOP原理体现为类的设计与对象间的交互,其技术价值在于提升代码组织性并应对复杂业务逻辑。典型的应用场景包括业务系统开发,例如金融领域的账户管理系统。本文聚焦于C++银行账户管理系统这一经典课程设计项目,深入探讨如何运用OOP思想进行系统分析与类设计,并解决数据持久化、异常处理等工程实践问题,其中涉及账户安全与交易记录等关键模块的实现细节。

weixin_33417488的博客 310

基于数组的班级成绩管理系统

好久没有动手写过代码了,最近离着高数补考越来越近,代码量却突然增加了起来,一方面是各种各样的C++实验报告,数据结构的课程设计,另一方面是学长们和其他同学们的课程设计.越来越发现我高数没怎么学好,程序设计却有点比以前熟练了,什么东西都是练出来的.一直都没有想到这个东西都要做两个版本,呵呵,同学说第一个版本是Win32 GUI的,老师不接受,必须要用控制台的,于是乎就出现了返工的任务.算了,

深海蓝轩 1446

从需求到打包:用Qt打造C++公司考勤管理系统全指南

数据库设计是桌面应用开发的基本功,良好的表结构能支撑起完整的业务闭环。考勤管理系统以员工、打卡、请假三张表为核心,通过唯一索引和状态位设计,确保数据一致性与统计效率。SQLite凭借零配置、单文件存储的特性,成为Qt课设中连接数据库的首选方案;而信号槽机制则让界面交互与业务逻辑解耦,提升开发效率。针对C++课程设计常见的知识点,如多维数组、指针甚至冒泡排序算法,更多体现在数据组织和结果排序中,而非手动内存管理。结合VSCode+CMake构建流程,讲解如何实现打卡状态判断、SQL聚合报表以及windeplo

weixin_33173126的博客 240

最近学习c++总结

       最近正在开始学习c++,以前一直想学,但是专业不是计算机,所以一直就搁下了,前一阵有一个老师开了个c++的班,我就跟着同学去了,觉得讲的很不错。    现在我算是c++入门了吧,懂了一些基本关于c++方面的东西,下来的任务是做一个图书馆管理系统,要用到双链表,我没有学过数据结构,这个东西还不是很懂,我会努力的,在一个星期内写完的,快考试了,我的看看我的专业课了。 PS:懂

eliteYang 756

C++考试报名管理系统:从结构体到文件IO的完整项目实践

在软件开发中,数据结构与文件操作是构建任何数据管理系统的基石。通过结构体定义数据模型,结合二进制文件读写实现持久化存储,是C++桌面应用开发的核心技术。这种方案在无需数据库支持的轻量级场景下,能够高效处理数据的增删改查,确保数据安全与一致性。本文以考试报名管理系统为例,深入解析如何利用C++的结构体设计、vector容器管理以及文件备份机制,构建一个稳定可靠的单机版数据管理工具。通过模块化设计和输入验证,项目不仅实现了考生信息管理,还涵盖了数据统计与安全存储等实用功能,为C++学习者提供了从理论到实践的完整

weixin_31528001的博客 260

【前端】【面试】【业务场景】前端如何获取并生成设备唯一标识

问题:前端如何获取并生成设备唯一标识?核心要点:浏览器原生信息有限,但通过组合多个维度可生成设备指纹(Device Fingerprint),用于唯一标识设备。常见方式浏览器信息(User-Agent)屏幕与系统参数本地存储标识(localStorage / cookie)第三方指纹库(如 FingerprintJS)方式优点缺点手动组合指纹实现简单不稳定,识别率低持久化强容易被用户清除识别率高、稳定性好依赖第三方库IP 地址识别网络识别粗略共享网络环境下重复可能大。

qq_59344127的博客 1797

自动驾驶岗位,简历上写了精通 C++……

最近正在春招的同学联系到博主,说自己面试自动驾驶算法岗位,除了问BEV感知算法、训练优化技巧,还问了很多C++的内容。可是我只用pytorch训模型呀,大概率凉凉了......说到这里,其实我已经多次强调了,算法的同学一定要多练习练习C++,最好C++撕力扣,这样才更有竞争力。说到这里,其实就是量产和科研的gap。自动驾驶系统是一个复杂的集成系统,涵盖了多个关键组件和模块,涉及的开发语言也不近相同...

CV_Autobot的博客 653

子网划分详解

还不会子网划分?看这篇就够了,保姆级教程

m0_47584619的博客 6095

C/C++软件工程专业数据结构课程设计题目表(39题)[2024-01-02]

④承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);实现药品的增加、删除,修改,各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。

code helper 1099

地平线天工开物AI开发平台实战:从量化训练到模型部署的完整指南

本文提供了地平线天工开物(OpenExplorer)AI开发平台的实战指南,详细解析了从量化训练到模型部署的完整流程。文章重点对比了量化感知训练(QAT)与训练后量化(PTQ)两条核心路径的优劣与适用场景,并分享了图像分类模型PTQ部署的实战经验与常见问题调试技巧,旨在帮助开发者高效地将AI模型部署到地平线AI芯片上。

weixin_29046035的博客 457

NVIDIA GPU任务调度全景:从Block分配到Warp发射

GPU并行计算的核心是任务调度,而CUDA kernel在GPU上的执行并非简单的一次性操作,而是经过从CPU命令队列到硬件前端,再到GigaThread引擎和Warp Scheduler的多层协同。理解这一过程,是性能优化的基础。Warp作为硬件调度的基本单位,其状态切换与延迟隐藏能力直接决定计算单元的利用率;而Occupancy作为衡量SM上活跃Warp池大小的指标,也并非越高越好,需要结合访存模式与资源占用综合判断。对于多任务并发场景,Stream优先级、计算抢占、MIG硬件隔离与MPS软件共享等机制

weixin_32612263的博客 270

课程设计&毕设学习分享—基于C++ 、Qt 、数据库Mysql的学生信息管理系统的设计与实现

课程设计&毕设学习分享—基于C++ 、Qt 、数据库Mysql的学生信息管理系统的设计与实现

2301_81867813的博客 2506

基于Java的高校学生信息管理系统的设计与实现(论文+源码)

可以对本系统的数据进行良好的封装,Java可以对不想被访问的数据进行良好的隐藏,具备平台无关性,可移植,更加可靠与安全,具备多线程支持,进行网络交互更容易。它支持本系统的B/S模式。开发效益方面,本系统一旦开发成功并且面向社会,就会让大多数的学生教师体会到便利办公的乐趣,随之促进提高本系统的使用率和经济利润,所以在经济方面,对于零成本开发且高利润的学生管理系统是可行的。学生可以在学生端进行选课,查看自己的成绩,教师可以在教师端查看所任课程的选课情况,对学生成绩进行录入,对所任的课程进行结课等操作。

2402_82389843的博客 1094

C++学生健康管理系统实战:从数据结构到文件I/O的完整项目指南

在软件工程实践中,数据结构与文件I/O操作是构建可持久化应用的核心基础。数据结构决定了信息的组织效率,而文件I/O则实现了数据在内存与磁盘间的持久化存储,这是任何需要保存状态的系统都必须掌握的技术。其技术价值在于,通过合理的数据结构设计和可靠的文件读写机制,开发者可以构建出高效、稳定且易于维护的应用程序,这在数据处理、信息管理等场景中尤为重要。本文聚焦于一个具体的工程实践案例——学生健康状况信息管理系统,深入探讨如何运用C++的类与对象进行数据建模,并详细解析二进制文件的序列化与反序列化过程,以解决数据持久

weixin_32466193的博客 281

亲友圈棋牌的逆向工程_棋牌透视分析研究(一)

透视也能实现,有些台子就自带控制,这种东西权限只是存在于平台运营者手中,即便逆向破解也很难发现,但也有那么一些棋牌 比如斗牛或者跑得快,会先发给你的内存中存放当前的牌的信息,这样你就可以知道对面的牌是什么,但肯定也是加密了。明明是zip却无法解压,这很明显是属于被加密了, 那么我们就要开始找他的加密内容,一般加密的秘钥都会存储在so里面。写这一篇文章了,其实也想了很久,最终还是决定写了, 有些朋友找我做过菠菜的逆向,bjl,甚至是足球的!但很遗憾的告诉大家,这里是找不到的。

m0_63368535的博客 5830

RK3588 固定hdmiin的dev/videoX节点

RK3588 固定hdmiin的dev/videoX节点

目前从事linux驱动开发,多交流多学习吧 2050

图书管理系统c++_高调时上Switch人工智能顶会做presenter,低调时为TP设计图书管理系统造福小伙伴...

点击上方蓝字关注我们马宇纽约大学大学一年级主修经济、交互媒体艺术Q1从什么时候开始学习的Python?我在高一下学期接触过一点Python的知识,在高三快毕业时来TP做Python课的助教,一方面希望复习一下编程知识,另外也希望能早日接触一些自己力所能及但又不熟悉的工作。在TP做助教时,我常常边解答同学们的疑惑,边听课,边记笔记发到GitHub上,我感觉 Python是常学常新的,哪怕是...

weixin_39936134的博客 189

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od

KJ.JK 285

用C++手撸学生信息管理系统(从零到一实战指南)

这个项目虽然简单,但包含了真实项目开发的完整流程。建议大家在GitHub上创建私有仓库(学生可以免费申请),用git管理版本。记得写commit message要规范,养成好习惯对以后工作超有用!遇到卡壳的地方欢迎在评论区交流(别问为什么不用C++11新特性,因为有些学校机房还在用VC6.0啊摔!

echoarts的博客 701

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C++萌新别慌!DeepSeek带你玩转「指针地狱」,妈妈再也不用担心我秃头了!

最近我们学校C++课设卷疯了——人均要写!隔壁宿舍老张肝了三天三夜,结果在那里卡BUG卡到怀疑人生…直到他发现了DeepSeek这个外挂!今天就手把手教你怎么用AI把C++写出Python的爽感!

yang_yi_yun的博客 757

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 最近原始人挺火哈,自己做了一个原神,但是DEVC++运行出来后可能会直接帮玩家输出了哈
下一篇: 让我们用C++做一个简单的飞机飞行模拟器
撸代码的小末影人
博客等级 码龄3年 45粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值