手把手教你完成简单C++课设——创新活动管理系统(超详细)

        最近学完C++,完成学校布置的学习作业。我是按照b站上黑马教程上C++的学习,然后按照自己的需求去完成了自己的作业。从6.15号开始到6.21号,历时6天把代码写完。自己想把它写下来作为一篇文章,方便后面的人看到。

一、问题分析与需求分析

首先我是学校要求写的课设按照要求,如图所示

        我需要开发一个简单的创新活动管理系统,然后需要去实现学院专业等创新活动的基础信息管理。第二个要求是去实现学生信息和指导教师的管理。要求是利用面向对象程序设计方法。

跳出这个题目,我们思考一下。设计这样的一个系统,我们需要设计哪些模块。在要求上告诉我们需要实现创新活动的登记,成绩录入的过程。那首先我们应该创建出应该基础信息类,类里有构造函数……还需要实现学生、老师的管理。这样就总共需要创建三个类。

既然设计一个系统,增删改查的基本都要实现接下来讲的就是具体实现过程。

功能实现

(一)创建项目和类

我使用的是Dev-C++去写代码,所以我就用这个教你创建项目。你用其他的也可以,方法都差不多。

第一步打开Dev-C++在界面上找到文件操作

 点击新建,找到新建项目

点击后会进入到这个界面

把名称改成项目名,选择C++语言 

随后就创建好了项目。

 现在,你已经创建好你自己要写的项目了。

        在这你要开始自己写代码了,刚刚一开始,通过分析我们需要创建三个类。并且还需要用到封装等等一些特性。你要开始在自己的项目上开始写下源代码。

        在项目中创建基础信息类的头文件和Cpp文件,老师学生也是一样的处理。

 在头文件中声明,cpp文件中具体实现。

(二)显示菜单

        首先,我们实现的是创新活动管理系统,应该在用户打开时提供菜单以供选择,在选择后做出相应的操作。

basicInformation.h

#include<iostream>
#include<string>

using namespace std;

class basicInformation
{
    public:
        basicInformation();//构造函数
        basicInformation(string,string,string,string,string,int) 
        ~basicInformation();//析构函数
        //显示目录
        void display_Menu();
    private:
		string name ;//项目名称 
		string level; //级别 
		string category;//类别 
		string college;//学院
		string Specialty; //所属专业
		int projetctId ;//项目编号 
    
}

        在头文件中写入构造函数、析构函数、私有数据成员。增添了一个显示目录的函数。我们应该遵循头文件声明,cpp文件具体实现。

void basicInformation::display_Menu()
{
    cout << "****欢迎使用创新活动管理系统*****" << endl
		 << "******** 0 退出程序     ********" << endl
		 << "******** 1 增加创新活动 ********" << endl
		 << "******** 2 显示操作     ********" << endl
		 << "******** 3 删除操作     ********" << endl 
		 << "******** 4 修改操作     ********" << endl 
		 << "******** 5 查找操作     ********" << endl 
		 << "******** 6 排序创新活动 ********" << endl 
		 << "******** 7 初始化       ********" << endl; 
}

显示菜单是最为简单的一个函数。写完后在主函数可以运行测试一下。

test.cpp

#include"basicInformation.h"

void test1()
{
	basicInformation b1;
	b1.display_Menu();
}

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

出现这样的基本上没什么问题

        这样显示菜单的功能就做好了。接下来我们需要在主函数进行操作。

        在主函数部分,我们要将根据用户选择进行不同的操作,并且直到用户选择退出程序前,才能结束运行。

#include<iostream>
#include"basicInformation.h"

using namespace std;

int main()
{
    //先创建一个对象
    basicInformation bs1;
    //通过选择决定执行模块
    int choice1;
    while(true)
    {
        bs1.display_Menu();
        cout << "输入你的选择" << endl;
        cin >> choice1;
        
        switch(choice1)
        {
            case 0://退出程序
                break;
            case 1://增加创新活动
                break;
            case 2://显示操作
                break;      
            case 3://删除操作
                break;      
            case 4://修改操作
                break;
            case 5://查找
                break;      
            case 6://排序
                break;      
            case 7://文件
                break;      
            default:
                break;                                   
        }
    }
    return 0;
}

暂时来说主体架构就是这样,我们尝试运行一下。

 接下来,我们就可以一个一个去实现功能。

(三)退出程序

        我们需要创建一个接口,通过这个接口,即用户选择退出程序,能够重循环跳出来。并且结束运行具体实现如下:

        

//头文件增加声明
void exit_systerm();

//cpp文件具体实现
void basicInformation::exit_systerm()
{
    cout << "欢迎下次使用" << endl;
	system("pause");
	exit(0); 
}

//在主函数
case 0:
    bs1.exit_systerm();
    break;

首先在头文件增加一个函数声明即退出函数,通过在主函数调用即可以实现退出程序。在cpp文件中实现具体代码,在主函数中选择0的情况下增加调用。

 基本上实现完成。

(四)增加创新活动

        在增加创新活动前,把Student类的声明和Teacher类的声明都实现一下,这部分比较简单,读者自行实现。并且将构造函数与析构函数的空实现写完。

//老师类的声明
#include<iostream>
#ifndef TEACHER_H
#define TEACHER_H
using namespace std;
class Teacher
{
	public:
		Teacher();
		~Teacher();
	private:
		string name;
		string specialty;
		int age;
};
#endif



//学生类的声明
#include<iostream>
#ifndef STUDENT_H
#define STUDENT_H
using namespace std;
class Student
{
	public:
		Student();
		~Student();
	private:
		string name;
		string specialty;
		int id;
};
#endif

        实现增加创新活动的函数,我们需要根据用户输入增加对应的活动数。当用户输入人数有误时输出提示告诉用户。由于增加的活动数不固定,并且在后续想要继续增加时不能出现活动数有内存不够的情况。我们可以用new关键字去实现动态数组。首先在用户输入后,根据对应数量去开辟一块空间用来存储数据。而由于new返回值是指针。所以我们可以增加一个私有数据成员类本身的指针用来记录数据的地址,一个记录数量的数据成员。根据用户输入,更新数量。

//记录数据地址
basicInformation *activity_empty;
//记录数量
int activity_num;

        在未输入数据前,记录数量的activity_num应该初始化为0,并且指针应该指向为空。

        在这就要求需要在构造函数里进行初始化,每当创建一个对象,就需要通过初始化。不然系统会自动赋值,出现问题 。

basicInformation::basicInformation()
{
	this->activity_num = 0;
	this->activity_empty = NULL;
}

        输入数据后,根据用户输入,重新计算数量,开辟空间。在空间开辟完成后,我们应该是先将之前记录的数据重新拷贝进入新空间,然后在完成拷贝后,将新数据写入。通过输入结束后,输出提示,成功添加。

//头文件增加函数
void addActivity()

//cpp文件具体实现
void basicInformation::addActivity()
{
    cout << "请输入增加活动数量" << endl;
	
	int addnum = 0;
	cin >> addnum;
	
	if(addnum > 0)
	{
		//添加
		//计算添加新空间大小
		int newNum = this->activity_num + addnum;
		//开辟新空间 
		basicInformation *newSpace = new basicInformation [newNum];
		//将原有数据进行拷贝
		if(this->activity_empty != NULL)
		{
			for(int i = 0;i < this->activity_num;i++)
			{
				newSpace[i] = this->activity_empty[i];
			}
		} 
		//将增加的数据拷贝
		for(int i = 0;i < addnum;i++)
		{
			string name ; 
			string level;  
			string category;
			string college;
			string Specialty; 
			int projetctId;
			//输入信息 
			cout << "输入创新项目名称:" << endl;
			cin >> name;
			cout << "输入创新项目级别:" << endl;
			cin >> level;
			cout << "输入创新项目类别:" << endl;
			cin >> category;
			cout << "输入项目所属学院:" << endl;
			cin >> college;
			cout << "输入项目所属专业:" << endl;
			cin >> Specialty;
			cout << "输入创新项目编号:" << endl;
			cin >> projetctId;


            //将信息增加到新空间下 
		    newSpace[this->activity_num + i] = basicInformation(name ,level , category, college, Specialty, projetctId);
		
		    }
		//释放原有空间
		delete [] this->activity_empty;
		//更新项目数 
		this->activity_num = newNum;
		//重新赋值新地址
		this->activity_empty = newSpace; 
		
		//提示输入成功 
		cout << "成功添加活动" << endl; 
    }
	else
	{
		cout <<"输入无效数字。" << endl; 
	}
	
	//输入完成后清屏
	system("pause");
	system("cls");
}

        注意,由于在这使用有参构造函数但是由于我并未实现,所以把代码抄下是无用的。请读者自行实现有参构造函数,给私有数据赋值。

basicInformation::basicInformation(string n,string l,string c,string co,string s,int p)
{
	name = n;//项目名称 
	level = l; //级别 
	category = c;//类别 
	college = co;//学院
	Specialty = s; //所属专业
	projetctId = p;//项目编号 
}

在主函数测试。

case 1://增加创新活动
    bs1.addActivity();
    break;

 可以进行输出测试,看看是否数据是否保存。

for(int i = 0;i < this->activity_num;i++)
{
	cout << "输入创新项目名称:" << this->activity_empty[i].name << endl
		 << "输入创新项目级别:" << this->activity_empty[i].level << endl
		 << "输入创新项目类别:" << this->activity_empty[i].category << endl
		 << "输入项目所属学院:" << this->activity_empty[i].college << endl
		 << "输入项目所属专业:" << this->activity_empty[i].Specialty << endl
		 << "输入创新项目编号:" << this->activity_empty[i].projetctId << endl;
}

 

        到这,我们实现了创新活动项目的增加操作。但是我们要实现的不仅仅是创新活动的管理,还有老师、学生的信息管理。相同的老师、学生的增加操作,也可以像创新活动这样,通过new关键字去开辟空间。并且将其中私有数据在构造函数中初始化。请读者自行按照该部分去写代码,基本上一样。

        在写完Student、Teacher类的增加函数后,可以在创新活动项目的cpp文件中的增加活动函数添加代码。但是这样又需要basicInformation类中需要又私有数据成员即Teacher、Student类的一个对象。故现在basicInformation类中私有数据成员为:

    private:
		string name ;//项目名称 
		string level; //级别 
		string category;//类别 
		string college;//学院
		string Specialty; //所属专业
		int projetctId ;//项目编号 
		
		Teacher t;
		Student s;
		//记录数据地址
		basicInformation *activity_empty;
		//记录数量
		int activity_num;

记得别忘了,包含Student、Teacher类的头文件。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Windows 10的子系统为用户提供了一个全新的方式,在Windows操作系统上运行Linux命令和应用程序。下面是一个详细程,手把手你启用Win10的Linux子系统: 1. 打开“置”菜单,选择“应用”。 2. 点击“应用和功能”选项卡,并在右侧找到“相关置”。 3. 在“右侧面板”,点击“程序和功能”链接。 4. 在新的窗口中,点击“启用或关闭Windows功能”链接。 5. 滚动寻找“Windows子系统”,选中复选框。 6. 点击“确定”,等待系统完成相应的更改。 7. 重新启动计算机。 启用了Windows子系统后,你可以从Microsoft Store中安装你选择的Linux发行版。下面是详细步骤: 1. 打开Microsoft Store。 2. 搜索栏中输入你想要的Linux发行版的名称,例如“Ubuntu”。 3. 点击所选发行版的图标。 4. 在发行版页面上,点击“获取”按钮。 5. 等待下载和安装过程完成。 安装完毕后,你就可以在开始菜单中找到Linux发行版的图标,并点击打开。第一次启动会进行初始化置,请耐心等待。完成初始化后,你会被要求创建一个Linux用户帐户的用户名和密码。 一旦完成,你将进入一个Linux命令行界面。你可以使用各种Linux命令和应用程序,如ls、cd、cat、vi等。 如果你需要访问Windows文件系统,你可以在命令行中使用“mnt”命令来访问/ mnt文件夹中的Windows C:\目录。 这就是如何启用Windows 10的Linux子系统并安装你选择的Linux发行版的详细步骤。希望这篇回答能帮助到你! ### 回答2: 启用Win10的Linux子系统(WSL)可以让用户在Windows系统上运行Linux命令行工具和应用程序。以下是详细的步骤: 1. 确认Windows版本:只有Windows 10版本1709(或更高)的专业版、企业版或育版才支持WSL。如果您使用的是其他版本,请先升级到兼容版本。 2. 启用WSL功能:打开“控制面板”,进入“程序”部分,点击“启用或关闭Windows功能”。在弹出窗口中找到“适用于Linux的Windows子系统”选项,并勾选。点击“确定”后,系统可能会要求重启。 3. 安装适用于WSL的Linux发行版:打开微软应用商店,搜索并选择要安装的Linux发行版。目前有多个发行版可供选择,如Ubuntu、Debian等。点击“获取”按钮,系统会自动下载和安装所选发行版。 4. 启动并置Linux子系统:在安装完成后,可以在开始菜单中找到正在安装的Linux发行版。第一次打开会需要一些初始化操作,等待几分钟后,置一个用户名和密码,以及用于系统更新的新密码。 5. 安装其他Linux工具和应用程序:启用WSL后,您可以使用Linux的标准终端来运行各种命令行工具和应用程序。通过命令行,您可以使用apt-get或yum等包管理器安装其他软件包,并按照所需配置您的工作环境。 需要注意的是,WSL是在本地运行的Linux子系统,与虚拟机或双启动不同。您可以通过WSL直接访问计算机的文件系统,并使用Windows的图形界面工具来编辑和管理文件。与此同时,WSL还可以与Windows系统进行集成,使得在Windows和Linux之间进行文件共享和相互访问变得更加便捷。 总之,启用Win10的Linux子系统将为您提供一个强大且灵活的开发环境,同时可以充分利用Windows操作系统的优势。希望以上步骤对您有所帮助。 ### 回答3: 启用Windows 10的Linux子系统是一种允许用户在Windows操作系统上安装和运行Linux环境的功能。这使得用户可以同时享受Windows和Linux的优点。下面是启用此功能的详细步骤: 1. 打开“置”并选择“更新和安全”选项。 2. 在左侧导航栏中选择“针对开发人员”选项。 3. 在右侧窗口中选择“开发人员模式”并点击“是”来确认选择。 4. 打开“控制面板”并选择“程序”。 5. 在“程序和功能”下找到“启用或关闭Windows功能”的选项。 6. 在弹出窗口中找到并选中“适用于Linux的Windows子系统”复选框,并点击“确定”。 7. 在弹出的对话框中点击“立即重启”以应用更改。 一旦计算机重新启动并完成了Windows子系统的安装,可以按照以下步骤来置Linux子系统: 1. 打开“开始”菜单并搜索“Microsoft Store”。 2. 在Microsoft Store中搜索适用于Linux的发行版,并选择一个你想安装的版本(如Ubuntu)。 3. 点击所选发行版的安装按钮,并等待其下载和安装完成。 4. 安装完成后,可以在开始菜单中找到该发行版的快捷方式,并点击打开它。 5. 初次运行时,系统会提示你进行一些初始化置,包括置用户名和密码等。 6. 完成初始化后,你就可以开始使用Linux子系统了。 Linux子系统还提供了与Windows系统的互操作性,你可以访问Windows文件系统,并在Linux环境中运行Linux命令和应用程序。你还可以在Linux子系统的命令行界面中安装其他软件包。 总结起来,启用Windows 10的Linux子系统并不复杂,只需按照上述步骤进行操作即可。这使得用户可以在Windows系统上享受到Linux环境的强大功能和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值