C++课设-学生信息管理系统

2023-11-09

前言:上学期的一个简单的C++课设项目(代码在后面,附github项目链接)

一、问题描述

建立学生信息数据,包括学号、姓名、性别、三科成绩、出生时间、年龄(必须计算得到)。

使用继承的方法构造至少3个类,(即学生类——虚基类,一年级学生和二年级学生类——派生类)使用相应的对象放置10个学生信息。

编写同名display()成员函数,用来输出数组的内容。按不同类别输出学生信息,比如按性别。要求对“<<”和“>>”运算符进行重载。

考虑到输人学号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求。

抽取并计算学生的平均成绩。按照至少一科成绩进行排序。检索(查找)指定信息(如按姓名检索、按年龄检索)。

显示成绩分布的柱状图。

二、设计功能:

  增加学生

   显示全部学生

   计算平均成绩

   删除一个学生

   按年级输出学生信息

   按性别输出学生信息

   按姓名检索学生

   保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

   读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。

三、系统整体设计:

1.效果:

完成一个有如下功能的学生管理系统

      增加学生

   显示全部学生

   计算平均成绩

   删除一个学生

   按年级输出学生信息

   按性别输出学生信息

   按姓名检索学生

   保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

   读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。

显示学生一科成绩的柱状图。

2.总体设计:

1)类的设计(类图见下文的类图设计):

1.选用三个主要类即基类(学生类)、派生类(一年级学生类、二年级学生类)。本系统把大部分相同功能抽取到基类,使得代码的复用成度大大提高。

      除了以上三类本系统为了方面使用和管理一些数据。建立了成绩类(包括语文、数学、英语成绩),和出生日期类(年月日),并将它们的属性公开。

 2.重载了运算符“<<”和“>>”

      使得学生类的输入和输出比较方便。重载代码见Stu.cpp

 2)类图

     

3)基本功能的实现:

      1.本系统选用C++的STL库的map和vector作为基本功能实现的基础。其中map为学生id(键)和学生对象(值)的一对一映射。选用map的原因是map不允许存在两个一样键,可以防止学号重复的错误。选用键值对的存储方式也便于查找。选用vector作为排序的容器来实现按成绩排序的功能,排序所需的比较函数为自己定义的函数。可见main.cpp中的Compare()函数。

     

   3查找,删除,增加,计算平均成绩等功能均围绕map来进行。增加即利用重载的“>>”输入之后利用map的insert函数插入。删除利用map的erse函数删除。查找的话,如果是按名字查找就利用迭代器遍历map比较名字是否相同(其他查找类同),如果相同就用“<<”输出。计算平均成绩用遍历的方法遍历进行求和和求平均数就可以了。

   4.年龄的计算,在学生类中增加了一个成员函数。用于计算年龄。年龄的计算法则:使用C++的tm类获取当前的年月日。通过年月日的比较计算学生当前的年龄。

    4.保存和读取文件:本系统使用二进制文件存取数据。直接把map中的学生对象保存到文件中。当程序启动时又从文件中依次读取数据,把学生对象存到map中来。

   5.数学成绩的柱状图

       由于不会C++的作图。于是用循环和字符输出。用了两个循环。统计0~90,90~100,100~120,120~130,130~150 5个分数段的人数,并画图。

四、系统调试

1.调试结果:

1)系统目录

2)添加学生

3)删除学生

4)显示所有学生的信息

5)按年级分别输出学生信息

6)按性别输出学生

7)按姓名检索学生

8)按学号检索学生

9)学生的平均成绩

10)按数学学科成绩排序

11)按数学成绩的分布的柱状图:

2.调试过程遇到的问题以及解决方法:

1)调试中遇到最大的问题是把string类型写入二进制文件时,再读出来就是乱码了。

一开始以为时编译器编码格式设置的问题,后来尝试多次无果之后。尝试把string改成char[20]就行了。究其原因string保存的是指向char*的地址,所以会出问题。、

2)要求重载运算符能输入空格。经过查询,采用了

istream的getline()方法。采取这种

is.getline(temp,20,'\n');

方法即可。设置了’\n’为结束符。

五、源代码

项目结构(IDE环境:Code::blocks):

Stu.h 

#ifndef STU_H
#define STU_H
#include <string>
#include <iostream>
#include <istream>
#include <stdlib.h>
#include <cstring>
#include <ctime>

using namespace std;
class BirthTime{
    public:
          int year;
          int month;
          int day;

};
class Grade{
    public:
            float math_grade;
            float Enlish_grade;
            float Chinese_grade;
};
class Stu
{
    public:
        Stu(unsigned int Stu_id,string name,string sex,BirthTime birthtime,Grade g);
        Stu();
        unsigned int Get_Id();
        void Set_id(unsigned int id);
        string Get_name();
        void Set_name(string name);
        string Get_sex();
        void Set_sex(string sex);
        BirthTime Get_BirthTime();
        void Set_BirthTime(BirthTime b);
        int Get_Type();
        void Set_Type(int type);
        int Caculate_Age();
        void Set_Grade(Grade g);
        Grade Get_Grade();
        friend   istream & operator>>(istream &is,Stu &stu);
        friend   ostream & operator<<(ostream &os,Stu &stu);
    private:
        long int stu_id;
        string name;
        string sex;
        BirthTime birthtime;
        Grade grade;
        int type;
};

#endif // STU_H

Stu_one.h

#ifndef STU_ONE_H
#define STU_ONE_H
#include "Stu.h"


class Stu_one:public Stu
{
    public:
        Stu_one(int stu_id,string name,string sex,BirthTime birthtime,Grade g);
        Stu_one();



};
#endif // STU_ONE_H

Stu_two.h

#ifndef STU_TWO_H
#define STU_TWO_H
#include "Stu.h"

class Stu_two:public Stu
{
    public:
        Stu_two(int stu_id,string name,string sex,BirthTime birthtime,Grade g);
        Stu_two();


};


#endif // STU_TWO_H

Stu.cpp

#include "Stu.h"
Stu::Stu(){
}
void Stu::Set_Grade(Grade g){
    this->grade=g;
}
Grade Stu::Get_Grade(){
    return this->grade;
}
Stu::Stu(unsigned int stu_id,string name,string sex,BirthTime birthtime,Grade g){
    this->stu_id=stu_id;
    this->name=name;
    this->sex=sex;
    this->birthtime=birthtime;
    this->grade=g;

}
unsigned int Stu::Get_Id(){
    return this->stu_id;
}
void Stu::Set_id(unsigned int id){
    this->stu_id=id;
}
string Stu::Get_name(){
    return this->name;
}
void Stu::Set_name(string name){
    this->name=name;
}
string Stu::Get_sex(){
    return this->sex;
}
void Stu::Set_sex(string sex){
    this->sex=sex;
}
BirthTime Stu::Get_BirthTime(){
    return this->birthtime;
}
void Stu::Set_BirthTime(BirthTime b){
    this->birthtime=b;
}
int Stu::Get_Type(){
    return this->type;
}
void Stu::Set_Type(int type){
    this->type=type;
}
int Stu::Caculate_Age(){
   // 基于当前系统的当前日期/时间
   time_t now = time(NULL);
   // 把 now 转换为 tm 结构
   tm *gmtm = gmtime(&now);
   int age=0;
   int year_now=gmtm->tm_year+1900;
   int birth_month=this->birthtime.month;
   if(gmtm->tm_mon>=birth_month&&gmtm->tm_yday>=this->birthtime.day){
        age=year_now-this->birthtime.year;
   }else{
        age=year_now-this->birthtime.year-1;
   }
   return age;
}
istream & operator>>(istream &is,Stu &stu)
{
    char temp[50];
    is.getline(temp,50,'\n');

    BirthTime time;
    Grade grade;
    cout<<"请输入学号:(10位)"<<endl;
    is.getline(temp,50,'\n');
    stu.Set_id(atoi(temp));

    cout<<"请输入姓名:"<<endl;
    is.getline(temp,20,'\n');
    stu.Set_name(temp);

    cout<<"请输入性别(男/女):"<<endl;
    is.getline(temp,10);
    if(!strcmp(temp,"男")||!strcmp(temp,"女")){
        //true
    }else{
        cout<<"输入性别不正确!"<<endl;
    }
    stu.Set_sex(temp);

    cout<<"请输入出生时间:"<<endl;
    cout<<"请输入出生年份:"<<endl;
    is.getline(temp,10,'\n');
    time.year=atoi(temp);
    cout<<"请输入出生月份:"<<endl;
    is.getline(temp,10);
    time.month=atoi(temp);
    cout<<"请输入出生日期:"<<endl;
    is.getline(temp,10,'\n');
    time.day=atoi(temp);
    stu.Set_BirthTime(time);

    cout<<"科目成绩:"<<endl;
    cout<<"输入语文成绩:"<<endl;
    is.getline(temp,10,'\n');
    grade.Chinese_grade=atof(temp);
    cout<<"输入数学成绩:"<<endl;
    is.getline(temp,10,'\n');
    grade.math_grade=atof(temp);
    cout<<"输入英语成绩:"<<endl;
    is.getline(temp,10,'\n');
    grade.Enlish_grade=atof(temp);

    stu.Set_Grade(grade);
    return is;
}
ostream & operator<<(ostream &os,Stu &stu)
{

    os<<"学生-基本信息:"<<endl;
    os<<"--------------------"<<endl;
    os<<"学号:"<<stu.Get_Id()<<endl;
    os<<"姓名:"<<stu.Get_name()<<endl;
    os<<"性别:"<<stu.Get_sex()<<endl;
    os<<"年龄:"<<stu.Caculate_Age()<<endl;
    os<<"年级:"<<stu.Get_Type()<<endl;
    os<<"--------------------"<<endl;
    os<<"学生-成绩表"<<endl;
    os<<"语文:"<<stu.Get_Grade().Chinese_grade<<endl;
    os<<"数学:"<<stu.Get_Grade().math_grade<<endl;
    os<<"英语:"<<stu.Get_Grade().Enlish_grade<<endl;
    os<<"--------------------"<<endl;
    return os;
}

 Stu_one.cpp

#include "Stu_one.h"
Stu_one::Stu_one(int stu_id,string name,string sex,BirthTime birthtime,Grade g):Stu(stu_id,name,sex,birthtime,g){
    Set_Type(1);

}

Stu_one::Stu_one(){
     Set_Type(1);
}

Stu_two.cpp

#include "Stu_two.h"
Stu_two::Stu_two(int stu_id,string name,string sex,BirthTime birthtime,Grade g):Stu(stu_id,name,sex,birthtime,g){
    Set_Type(2);
}
Stu_two::Stu_two(){
     Set_Type(2);
}

 main.cpp

#include "Stu_one.h"
#include "Stu_two.h"
#include <map>
#include <fstream>
using namespace std;
map<int,Stu> Stu_map;

void Reload();//加载当前所有记录
void SaveRecord();//保存当前所有记录
void Add_Stu();//添加学生模块
void Delete_Stu();//删除学生模块
void Traverse_Stu();//遍历所有学生


int main()
{


    int chioce=0;
    while(1){
    cout<<"--------------------------------学生管理系统----------------------------------------" << endl;
    cout<<"1.添加学生"<<endl;
    cout<<"2.删除学生"<<endl;
    cout<<"3.按年级输出学生信息"<<endl;
    cout<<"4.按性别输出学生信息"<<endl;
    cout<<"5.按姓名检索学生"<<endl;
    cout<<"6.输出学生的成绩情况"<<endl;
    cout<<"7.显示全部学生"<<endl;
    cout<<"8.保存当前记录"<<endl;
    cout<<"9.从文件中读取数据"<<endl;
    cout<<"请输入你的选择:"<<endl;
    cin>>chioce;
    switch(chioce){
        case 1:
            Add_Stu();
            break;
        case 2:
            Delete_Stu();
            break;
        case 3:
            break;
        case 4:
            break;
        case 5:
            break;
        case 6:
            break;
        case 7:
            Traverse_Stu();
        case 8:
            SaveRecord();
            break;
        case 9:
            Reload();
    }

    }
    return 0;
}
//加载记录
void Reload(){
    ifstream savefile("save.txt",ios::in | ios::binary);
     string name;
     Stu stu;
     int b=0;
     while(savefile.eof()!=1) {
        savefile.read((char *)&stu,sizeof(Stu));
        Stu_map.insert(map<int, Stu>::value_type (stu.Get_Id(), stu));
    }

    savefile.close();
}
//保存记录
void SaveRecord(){
     ofstream savefile("save.txt",ios::out | ios::binary );
     map<int, Stu>::iterator iter;
     iter = Stu_map.begin();
     string name;
     while(iter != Stu_map.end()) {
       Stu stu=(Stu)iter->second;
       savefile.write((char*)&(stu),sizeof(Stu));
       iter++;
    }
    savefile.close();


}
//遍历
void Traverse_Stu(){
     map<int, Stu>::iterator iter;
     iter = Stu_map.begin();
     while(iter != Stu_map.end()) {
        cout<<iter->second<<endl;
        iter++;
    }
}
//删除
void Delete_Stu(){
    int id=0;
    cout<<"请输入欲删除学生的学号:"<<endl;
    cin>>id;
    if(id!=0){
        Stu_map.erase(id);
    }
}
//添加
void Add_Stu(){//添加学生模块

    int chioce=0;
    cout<<"1.添加1年级学生"<<endl;
    cout<<"2.添加2年级学生"<<endl;
    cout<<"3.请输入你的选择: "<<endl;
    cin>>chioce;
    switch(chioce){
    case 1:
            {
            Stu_one stu;
            cin>>stu;
            Stu_map.insert(map<int, Stu>::value_type (stu.Get_Id(), stu));

        }
        break;
    case 2:
        {
            Stu_two stu;
            cin>>stu;
            Stu_map.insert(map<int, Stu>::value_type (stu.Get_Id(), stu));
        }
        break;
    }

}


Github地址:https://github.com/DhyanaCoder/StudentManagerSystem

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++课设-学生信息管理系统 的相关文章

  • VLC 媒体播放器有 C# 界面吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否可以使用 C 控制台应用程序中的包装器从 VLC 播放中当前播放的文件中读取曲目统计信息 时间 标
  • 与 for_each 或 std::transform 一起使用时,如何调用 C++ 函子构造函数

    我以前从未使用过 C 函子 所以我只是想了解它们是如何工作的 例如假设我们有这个函子类 class MultiplyBy private int factor public MultiplyBy int x factor x int ope
  • 为什么 C 程序使用 Scanf 给出奇怪的输出?

    我目前正在学习 C 编程 并且遇到了这个奇怪的输出 Program will try functionalities of the scanf function include
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 保证复制省略是否适用于函数参数?

    如果我理解正确的话 从 C 17 开始 这段代码现在要求不进行任何复制 Foo myfunc void return Foo auto foo myfunc no copy 函数参数也是如此吗 下面的代码中的副本会被优化掉吗 Foo myf
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • 对于 C# Express 用户来说,有哪些好的工具可以识别可能重复的代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 也可以看看 有什么工具可以检查重复的 VB NET 代码吗 https stackoverflow c
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • Unity3D - 将 UI 对象移动到屏幕中心,同时保持其父子关系

    我有一个 UI 图像 它的父级是 RectTransform 容器 该容器的父级是 UI 面板 而 UI 面板的父级是 Canvas 我希望能够将此 UI 图像移动到屏幕中心 即画布 同时保留父级层次结构 我的目标是将 UI 图像从中心动画
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 如果找不到指定的图像文件,显示默认图像的最佳方式?

    我有一个普通的电子商务应用程序 我将 ITEM IMAGE NAME 存储在数据库中 有时经理会拼错图像名称 为了避免 丢失图像 IE 中的红色 X 每次显示产品列表时 我都会检查服务器中是否有与该产品相关的图像 如果该文件不存在 我会将其

随机推荐

  • Excel大数据量单元格快速填充

    个人简介 一个从会计转行数据分析师的三旬老汉 擅长领域 数据分析 数据仓库 大数据 博客内容 平时会将自己工作中遇到的问题进行归纳总结 分享给各位小伙伴 意在帮助大家少加班 不掉发 让我们相互学习 一起进步 文章目录 前言 一 填充 一 编
  • C51教程 第三个51程序:数码管显示

    keil proteus 第三个51程序 让数码管循环显示0 9 这是一个AT89c51单片机教程 我们每次都会提供博文教程以及附带资料下载 单片机就是一个小型CPU 在电子领域应用广泛 电视 冰箱 洗衣机 空调等产品中都能见到他们的身影
  • 【C语言】让你不再害怕指针——C指针详解(经典,非常详细)

    目录 前言 复杂类型说明 一 细说指针 1 指针的类型 2 指针所指向的类型 3 指针的值 或者叫指针所指向的内存区或地址 4 指针本身所占据的内存区 二 指针的算术运算 三 运算符 和 四 指针表达式 五 数组和指针的关系 六 指针和结构
  • GPT专业应用:如何让GPT策划方案

    身为一名职场打工人 或多或少会面临需要写策划案的难题 不管是策划一场线下活动 还是策划业务发展的方向 甚至到生活中还需要策划婚礼 策划房屋装修 策划和朋友的聚会等等 那么如何快速积累经验 找准方向便成为了不可或缺的技能 在这里 我们将介绍如
  • python输出最长字符串_使用Python打印最长的字母子字符串,并打结...

    我将通过以下方式解决该问题 gt 让我们定义两个字符串 当前字母递增的字符串和当前最长的字符串 gt 两个字符串都以第一个字母初始化 这样我们就可以随时阅读他们的最后一封信 gt 然后遍历输入字符串s 从第二个字符开始 gt 如果当前字符c
  • 合并两个有序单链表(Java)

    思想 准备两个链表l1和l2 判断是否有链表为空 如果l1为空 则不用比较直接返回l2 如果l1为空 则直接返回l2 比较l1和l2节点 选出最小的那个节点 将该节点设为合并后的链表的head 头 节点 同时将指向该节点的l1或l2后移 方
  • 广告投放算法:受众行为分析与人群定向

    引言 物以类聚 人以群分 这句古语不仅揭示了物与人的自组织趋向 更隐含了 聚类 和 人群 之间的内在联系 例如在现代数字广告投放系统中 最为关键的 人群定向 功能正是通过 聚类 算法得以实现的 如果您厌倦了隔靴搔痒的空大宣传 不妨就随笔者一
  • 微信支付服务端开发总结

    原文链接 http blog csdn net baple article details 68059283 前言 最近应公司业务需求 把微信支付完成了 当然已经顺利上线 但是开发的过程是也是踩了很多坑 下面我就先说说开发流程 以及在开发中
  • Kotlin泛型的型变之路

    一 JAVA泛型的协变 简而言之 协变就是 如果A是B的子类 那么Generic a 就是Generic 实际上就是List a
  • SMT精密电阻对照表

    SMT 精密电阻对照表 代码 阻值 代码 阻值 代码 阻值 代码 阻值 01 100 27 187 53 348 79 649 02 102 28 191 54 357 80 665
  • head first 设计模式:策略模式

    策略模式 定义了算法族 分别封装起来 让他们之间可以互相替换 此模式让算法的变化独立于使用算法的客户 差不多应该是不固定模块的分离 当涉及 维护 时 为了 复用 reuse 目的而使用继承 结局并不完美 设计原则 找出应用中可能需要变化之外
  • CMOS图像传感器——了解光圈

    在之前有提到传感器英寸 也提到了曝光三要素之一的ISO 这里主要说明另外一个曝光三要素 光圈 在本文中 我们将介绍光圈及其工作原理 一 什么是光圈 光圈可以定义为镜头中的开口 光线通过该开口进入相机 类比眼睛是的工作原理 就容易理解了 当人
  • Java定时任务调度工具详解之Timer篇(初级)Timer函数的综合应用

    一 通过模拟两个机器人的定时行为来加深对Timer相关函数的理解 实现两个机器人第一个机器人会隔两秒打印最近一次计划的时间 执行内容 第二个机器人会模拟往桶里倒水 知道桶里的水满为止 代码示例 DancingRobot类 package c
  • ImageMagick 安装教程

    1 双击打开 ImageMagick exe 2 先点 I acccept 再点四次 Next 切记不要修改安装路径 3 默认勾选前两个 点Next 4 点Install 安装即可 之后点Next Finish就安装完了
  • 2022年“网络安全”赛项浙江省宁波市选拔赛任务书

    2022浙江省宁波市 网络安全 项目比赛任务书 A模块基础设施设置 安全加固 200分 A 1 登录安全加固 windows linux A 2 数据库加固 Linux A 3服务加固 SSH VSFTPD Linux A 4防火墙策略 L
  • student1和student2 和teacher 类,多线程问题

    参照例15 7 编写一个Java应用程序 要求有student1 student2和teacher 3个线程 其中 student1准备睡10分钟后再开始上课 student2准备睡1小时后再开始上课 teacher在输出3句 上课 后吵醒
  • 聊聊区块链--如何投资数字货币

    想知道更多关于区块链技术知识 请百度 链客区块链技术问答社区 链客 有问必答 未经允许 拒绝转载 https www liankexing com note note page id 7071 html 1 比特币 bitcoin 比特币是
  • Unity Fixed Joint 固定关节组件详解

    Chinar blog www chinar xin Unity物理引擎 Fixed Joint 固定关节 本文提供全流程 中文翻译 Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar 心分享 心创新
  • bash脚本-----在耗时任务中显示旋转器动画

    1 bin bash sleep 5 pid frames while kill 0 pid 2 gt 1 gt dev null do for frame in frames do printf r frame Loading sleep
  • C++课设-学生信息管理系统

    前言 上学期的一个简单的C 课设项目 代码在后面 附github项目链接 一 问题描述 建立学生信息数据 包括学号 姓名 性别 三科成绩 出生时间 年龄 必须计算得到 使用继承的方法构造至少3个类 即学生类 虚基类 一年级学生和二年级学生类