学生成绩管理系统(C++实现)

问题描述

实现学生成绩管理系统:

学生信息包括:学号、姓名、性别、年龄、班级等信息。除了包括学生所有信息外,还包括专业、英语、程序设计和高等数学等课程。 设计一程序能够对学生成绩进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。用户自行输入所需要的数据或者被要求的数据,或从“.txt”文档中输入输出的形式;以文件的形式输出程序所能达到的功能。

功能:1添加功能、2查询功能、3显示功能、4编辑功能、5删除功能、6统计功能、7保存功能、8读取功能、9排序功能

类的定义及类之间的关系

本程序一共分为四大类:Info(学生基本信息类)  course(课程分数类) student(学生类)  studentmanager(学生管理类)

其中Info类定义学生的基本信息:学号(id),姓名(name),性别(gender),年龄(age),班级(ClassName),course类定义学生的课程分数:专业课(zhuanye),英语课(englishscore),程序设计(programingscore),高等数学课程(mathscore)。student类继承Info类以及course,并且新增total(总分)和average(平均分)两个新的成员变量。其中本类还包含与用户的交互界面display()函数。Studentmanager类为功能实现类。其中,本类创造了student类容器,以容器的方式代替对象数组的功能,包含九个功能函数。

程序模块

序模块分为三大模块:类设计模块,用户界面交互模块,函数设计模块。

类设计模块主要是定义学生基本信息以及分数类,在类中的构造函数中实现成员变量的复制以及与其对应的get/set方法。

用户界面交互的模块主要是以switch/case模块搭建的cout/cin(输入/输出)体系模块,也就是与使用用户有关的模块。

函数设计模块为实现功能算法的模块,在此模块中,可以实现用户的多种需求,但是原则上将其封装起来,不对用户暴露。此模块一共分为11个功能函数,分别为:

void saveToFile():保存学生记录

void loadFromFile() :从文件中读取学生记录

void addStudent()   :添加学生记录

void displayAllStudents():显示所有学生记录

void searchStudent()    :查找学生信息

void editStudent()      :修改学生记录

void deleteStudent()    :删除学生信息

void calculateStatistics() :统计学生成绩排名

void menu()                :排序菜单

cmp函数:

static bool compareByTotalScore(Student* s1, Student* s2)

          static bool compareByEnglishScore(Student* s1, Student* s2)

          static bool compareByProgrammingScore(Student* s1, Student* s2)

          static bool compareByMathScore(Student* s1, Student* s2)

          static bool compareByzhuanyescore(Student* s1, Student* s2)

Sort函数:  

void sortStudentsByTotalScore()

void sortStudentsByEnglishScore()

void sortStudentsByProgrammingScore()

void sortStudentsByMathScore()

void sortStudentsByzhuanyeScore()

算法设计

算法分析:本程序一共分为3大模块,其中算法用的不算太多,也不是很难,除了排序,查找,修改之外其他基本用不上算法。

算法的实现:

基于本程序的数据保存的结构是以容器(vector)实现的,因此上,在算法实现上都是以容器(vector)的方式进行实现的,STL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。本程序主要是以顺序性容器为基本来实现上述算法要求的。

顺序性容器 是 一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。这个位置和 元素本身无关,而和操作的时间和地点有关,顺序性容器不会根据元素的特点排序而是直接保存了元素操作时的逻辑顺序。比如一次性对一个顺序性容器追加三 个元素,这三个元素在容器中的相对位置和追加时的逻辑次序是一致的。

源码

下面是完整代码

#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
using namespace std;
class Student{
public:friend void Input(Student stu[]);friend void Statistic(Student stu[]);friend void Lookup(Student stu[]);friend void Modify(Student stu[]);friend void Delete(Student stu[]);friend void Output(Student stu[]);friend void Insert(Student stu[]);friend void Sort(Student stu[]);friend void Write(Student stu[],int n);friend int Read(Student stu[]);
private:int num;char name[8];char class_0[20];float elec;float c_program;float english;float math;float media;float sport;float polity;float average;int order;
}stu[100];void Write(Student stu[], int n) {fstream myFile;myFile.open("score.txt", ios::out | ios::binary);if (!myFile) {cout << "score.txt can't open!" << endl;abort();}int count = n;myFile << count << endl<<endl;for (int i = 0; i < count; i++) {myFile << stu[i].class_0  << "\t"<< stu[i].num      << "\t"<< stu[i].name     << "\t"<< stu[i].elec     << "\t"<< stu[i].c_program<< "\t"<< stu[i].media    << "\t"<< stu[i].english  << "\t"<< stu[i].math     << "\t"<< stu[i].sport    << "\t"<< stu[i].polity   << "\t"<< stu[i].average  << endl;}myFile.close();
}int Read(Student stu[]) {fstream myFile;myFile.open("score.txt", ios::in | ios::binary);if (!myFile) {cout << "score.txt can't open!" << endl;abort();}int count;myFile.seekg(0);myFile >> count;for (int i = 0; i <= count; i++) {myFile >> stu[i].class_0 >> stu[i].num       >> stu[i].name >> stu[i].elec    >> stu[i].c_program >> stu[i].media >> stu[i].english >> stu[i].math      >> stu[i].sport >> stu[i].polity  >> stu[i].average;}myFile.close();return count;
}void Input(Student stu[]) {system("cls");int i = 0;int flag;char sign = '0';cout << endl<<"======>>    请输入学生成绩    <<======"<<endl;while (sign != 'n' && sign != 'N') {cout << "班级:";cin >> stu[i].class_0;loop:cout << "学号:";cin >> stu[i].num;int c = 0;while (c < i) {c++;if (stu[i].num == stu[i - c].num) {cout << "您输入的学号已存在!请重新输入。" << endl;goto loop;}}cout << "姓名:";cin >> stu[i].name;do {flag = 0;cout << "电子技术成绩:";cin >> stu[i].elec;if (stu[i].elec > 100 || stu[i].elec < 1) {cout << " 对不起,请输入1-100之间的数字!!\n";}else {flag = 1;}} while (flag == 0);do {flag = 0;cout << "C++程序设计成绩:";cin >> stu[i].c_program;if (stu[i].c_program > 100 || stu[i].c_program < 1) {cout << " 对不起,请输入1-100之间的数字!!\n";}else {flag = 1;}} while (flag == 0);do {flag = 0;cout << "多媒体技术成绩:";cin >> stu[i].media;if (stu[i].media > 100 || stu[i].media < 1) {cout << " 对不起,请输入1-100之间的数字!!\n";}else {flag = 1;}} while (flag == 0);do {flag = 0;cout << "大学英语成绩:";cin >> stu[i].english;if (stu[i].english > 100 || stu[i].english < 1) {cout << " 对不起,请输入1-100之间的数字!!\n";}else {flag = 1;}} while (flag == 0);do {flag = 0;cout << "高等数学成绩:";cin >> stu[i].math;if (stu[i].math > 100 || stu[i].math < 1) {cout << " 对不起,请输入1-100之间的数字!!\n";}else {flag = 1;}} while (flag == 0);do {flag = 0;cout << "大学体育成绩:";cin >> stu[i].sport;if (stu[i].sport > 100 || stu[i].sport < 1) {cout << " 对不起,请输入1-100之间的数字!!\n";}else {flag = 1;}} while (flag == 0);do {flag = 0;cout << "马克思主义基本原理成绩:";cin >> stu[i].polity;if (stu[i].polity > 100 || stu[i].polity < 1) {cout << " 对不起,请输入1-100之间的数字!!\n";}else {flag = 1;}} while (flag == 0);stu[i].average = (stu[i].elec + stu[i].c_program + stu[i].media + stu[i].english + stu[i].math +stu[i].sport + stu[i].polity) / 7;cout << " 平均分为:" << stu[i].average<<endl;cout << "======>>    提示:是否继续写入学生成绩 ?(y/n)";cin >> sign;i++;}Write(stu, i);
}void Statistic(Student stu[]) {system("cls");int n = Read(stu);cout << endl << "======>>    输出学生统计数据    <<======\n" << endl;cout << "---------------------------------------" << endl;cout << "班级" << "\t" << "学号" << "\t" << "姓名" << "\t" << "平均分" << endl;cout << "---------------------------------------" << endl;for (int i = 0; i < n; i++)cout << stu[i].class_0 << "\t" << stu[i].num << "\t" << stu[i].name << "\t" << stu[i].average << endl;cout << "---------------------------------------" << endl;system("pause");
}void Lookup(Student stu[]) {system("cls");int n = Read(stu);int s;int i = 0;cout << endl << "======>>    查找学生成绩    <<======" << endl;cout << "请输入要查找学生的学号:";cin >> s;while ((stu[i].num - s) != 0 && i < n)i++;if (i == n) {cout << "======>>    对不起,无法找到该学生......    <<======" << endl;}else {cout << "----------------------------" << endl;cout << "班级:" << stu[i].class_0 << endl;cout << "学号:" << stu[i].num << endl;cout << "姓名:" << stu[i].name << endl;cout << "电子技术:" << stu[i].elec << endl;cout << "C++程序设计:" << stu[i].c_program << endl;cout << "多媒体技术:" << stu[i].media << endl;cout << "大学英语:" << stu[i].english << endl;cout << "高等数学:" << stu[i].math << endl;cout << "大学体育:" << stu[i].sport << endl;cout << "马克思主义基本原理:" << stu[i].polity << endl;cout << "平均分:" << stu[i].average << endl;}
}void Modify(Student stu[]) {system("cls");int n = Read(stu);int s;int i = 0;cout << endl << "======>>    修改学生成绩    <<======" << endl;cout << "请输入要修改成绩学生的学号:";cin >> s;while ((stu[i].num - s) != 0 && i < n)i++;if (i == n) {cout << "======>>    对不起,无法找到该学生......    <<======" << endl;}else {cout << "------------------------------------------------------------------------------------" << endl;cout << "班级" << "\t" << "学号"  << "\t" << "姓名" << "\t"<< "电子" << "\t" << "C++"  << "\t" << "多媒体" << "\t"<< "英语" << "\t" << "数学"  << "\t" << "体育" << "\t"<< "政治" << "\t" << "平均分" << endl;cout << "------------------------------------------------------------------------------------" << endl;cout << stu[i].class_0 << "\t" << stu[i].num       << "\t" << stu[i].name  << "\t"<< stu[i].elec    << "\t" << stu[i].c_program << "\t" << stu[i].media << "\t"<< stu[i].english << "\t" << stu[i].math      << "\t" << stu[i].sport << "\t"<< stu[i].polity  << "\t" << stu[i].average   << endl;cout << endl << "请重新输入该学生成绩: " << endl;cout << "电子技术成绩:";cin >> stu[i].elec;cout << "C++成绩:";cin >> stu[i].c_program;cout << "多媒体技术成绩:";cin >> stu[i].media;cout << "大学英语成绩:";cin >> stu[i].english;cout << "高等数学成绩:";cin >> stu[i].math;cout << "大学体育成绩:";cin >> stu[i].sport;cout << "马克思主义基本原理成绩:";cin >> stu[i].polity;stu[i].average = (stu[i].elec + stu[i].c_program + stu[i].media +stu[i].english + stu[i].math + stu[i].sport + stu[i].polity) / 7;cout << "平均分:" << stu[i].average << endl;char c;cout << "======>>    是否保存数据 ?(y/n)";cin >> c;if (c != 'n' && c != 'N')Write(stu, n);}
}void Delete(Student stu[]) {system("cls");int n = Read(stu);int s;int i = 0, j ;cout << endl << "======>>    删除学生成绩    <<======" << endl;cout << "请输入要删除的学生的学号:";cin >> s;while ((stu[i].num - s) != 0 && i < n)i++;if (i == n) {cout << "======>>    对不起,无法找到该学生......    <<======" << endl;}else {for (j = i; j < n - 1; j++) {strcpy(stu[j].class_0,stu[j + 1].class_0);stu[j].num = stu[j + 1].num;strcpy(stu[j].name, stu[j + 1].name);stu[j].elec = stu[j + 1].elec;stu[j].c_program = stu[j + 1].c_program;stu[j].media = stu[j + 1].media;stu[j].english = stu[j + 1].english;stu[j].math = stu[j + 1].math;stu[j].sport = stu[j + 1].sport;stu[j].polity = stu[j + 1].polity;stu[j].average = stu[j + 1].average;}cout << "======>>    提示:已成功删除!" << endl;}Write(stu, n - 1);
}void Insert(Student stu[]) {system("cls");int n = Read(stu);char s='0';cout << endl << "=======>>    增加学生成绩    <<========" << endl;while (s != 'n' && s != 'N') {cout << "班级:";cin >> stu[n].class_0;cout << "学号:";cin >> stu[n].num;cout << "姓名:";cin >> stu[n].name;cout << "电子技术成绩:";cin >> stu[n].elec;cout << "C++成绩:";cin >> stu[n].c_program;cout << "多媒体技术成绩:";cin >> stu[n].media;cout << "大学英语成绩:";cin >> stu[n].english;cout << "高等数学成绩:";cin >> stu[n].math;cout << "大学体育成绩:";cin >> stu[n].sport;cout << "马克思主义基本原理成绩:";cin >> stu[n].polity;stu[n].average = (stu[n].elec + stu[n].c_program + stu[n].media +stu[n].english + stu[n].math + stu[n].sport + stu[n].polity) / 7;cout << "平均分:" << stu[n].average << endl;n++;cout << "======>>    是否继续插入(y/n)";cin >> s;}Write(stu, n);
}void Sort(Student stu[]) {system("cls");int i, j, k;float s;char t[20];cout << endl << "======>>    降序排列    <<======" << endl;int n = Read(stu);for (i = 0; i < n-1; i++) {for (j = 0; j < n - 1; j++) {if (stu[j].average < stu[j + 1].average) {//交换课程strcpy(t, stu[j + 1].class_0);strcpy(stu[j + 1].class_0, stu[j].class_0);strcpy(stu[j].class_0, t);//numk = stu[j + 1].num;stu[j + 1].num = stu[j].num;stu[j].num = k;//namestrcpy(t, stu[j + 1].name);strcpy(stu[j + 1].name, stu[j].name);strcpy(stu[j].name, t);//elecs = stu[j + 1].elec;stu[j + 1].elec = stu[j].elec;stu[j].elec = s;//c_programs = stu[j + 1].c_program;stu[j + 1].c_program = stu[j].c_program;stu[j].c_program = s;//medias = stu[j + 1].media;stu[j + 1].media = stu[j].media;stu[j].media = s;//englishs = stu[j + 1].english;stu[j + 1].english = stu[j].english;stu[j].english = s;//maths = stu[j + 1].math;stu[j + 1].math = stu[j].math;stu[j].math = s;//sports = stu[j + 1].sport;stu[j + 1].sport = stu[j].sport;stu[j].sport = s;//politys = stu[j + 1].polity;stu[j + 1].polity = stu[j].polity;stu[j].polity = s;//averages = stu[j + 1].average;stu[j + 1].average = stu[j].average;stu[j].average = s;}}}cout << "------------------------------------------------------------------------------------" << endl;cout << "班级" << "\t" << "学号" << "\t" << "姓名" << "\t"<< "电子" << "\t" << "C++" << "\t" << "多媒体" << "\t"<< "英语" << "\t" << "数学" << "\t" << "体育" << "\t"<< "政治" << "\t" << "平均分" << endl;cout << "------------------------------------------------------------------------------------" << endl;for (int i = 0; i < n; i++) {stu[i].order = i + 1;cout << stu[i].class_0 << "\t" << stu[i].num       << "\t" << stu[i].name << "\t"<< stu[i].elec    << "\t" << stu[i].c_program << "\t" << stu[i].media << "\t"<< stu[i].english << "\t" << stu[i].math      << "\t" << stu[i].sport << "\t"<< stu[i].polity  << "\t" << stu[i].average   << endl;}Write(stu, n);
}void Output(Student stu[]) {system("cls");int n = Read(stu);cout << endl << "======>>    显示全部学生成绩    <<======" << endl;if (!stu) {cout << "没有记录";}else {cout << "------------------------------------------------------------------------------------" << endl;cout << "班级" << "\t" << "学号"  << "\t" << "姓名"  << "\t" << "电子" << "\t" << "C++"  << "\t" << "多媒体" << "\t" << "英语" << "\t" << "数学"  << "\t" << "体育"  << "\t" << "政治" << "\t" << "平均分" << endl;cout << "------------------------------------------------------------------------------------" << endl;for (int i = 0; i < n; i++) {cout << stu[i].class_0 << "\t" << stu[i].num       << "\t" << stu[i].name  << "\t"<< stu[i].elec    << "\t" << stu[i].c_program << "\t" << stu[i].media << "\t"<< stu[i].english << "\t" << stu[i].math      << "\t" << stu[i].sport << "\t"<< stu[i].polity  << "\t" << stu[i].average   << endl;}cout << "------------------------------------------------------------------------------------" << endl;}
}int menu() {char c;do {system("cls");cout << "******************************************************" << endl;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 << "    *          【0】退出管理系统                  *    " << endl;cout << "******************************************************" << endl;cout << "请选择您的操作 (0-8):" << endl;c = getchar();} while (c < '0' || c > '8');return (c - '0');
}int main() {for (;;) {switch (menu()) {case 1:Input(stu);break;case 2:Statistic(stu);break;case 3:Lookup(stu);system("pause");break;case 4:Modify(stu);system("pause");break;case 5:Delete(stu);system("pause");break;case 6:Insert(stu);system("pause");break;case 7:Sort(stu);system("pause");break;case 8:Output(stu);system("pause");break;case 0:cout << endl << "================感谢您使用学生成绩管理系统==============\n" << endl;exit(0);}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/164870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于5G+物联网+SaaS+AI的农业大数据综合解决方案:PPT全文44页,附下载

关键词&#xff1a;智慧农业大数据&#xff0c;5G智慧农业&#xff0c;物联网智慧农业&#xff0c;SaaS智慧农业&#xff0c;AI智慧农业&#xff0c;智慧农业大数据平台 一、智慧农业大数据建设背景 1、应对全球人口快速增长带来的粮食生产压力&#xff0c;未来的粮食生产力必…

宣传技能培训1——《新闻摄影技巧》光影魔法:理解不同光线、角度、构图的摄影效果,以及相机实战操作 + 新闻摄影实例讲解

新闻摄影技巧 写在最前面摘要 构图与拍摄角度景别人物表情与叙事远景与特写 构图与拍摄角度案例 主体、陪体、前景、背景强调主体利用前景和背景层次感的创造 探索新闻摄影中的构图技巧基本构图技巧构图技巧的应用实例实例分析1. 黄金分割和九宫格2. 三角型构图3. 引导线构图4.…

1)业务平台集成电子签章平台

1.前言 电子签章平台随着企业数字化转型逐步渗透到日常运营项目中&#xff0c;如合同盖章/规章制度发布/法审意见等场景下引入电子章解决盖章需求。 作为特定业务下的统一处理方案&#xff0c;需要在业务管理平台与电子签章平台之间构建一个桥梁&#xff0c;简化电子签章平台…

Spring配置其他注解Spring注解的解析原理

Spring配置其他注解 Primary注解用于标注相同类型的Bean优先被使用权&#xff0c;Primary是Spring 3.0引入的&#xff0c;与Component和Bean一起使用&#xff0c;标注该Bean的优先级更高&#xff0c;则在通过类型获取Bean或通过Autowired根据类型进行注入时&#xff0c;会选用优…

【C++11并发】future库 笔记

简介 C11之前&#xff0c;主线程要想获取子线程的返回值&#xff0c;一般都是通过全局变量&#xff0c;或者类似机制。C11开始为我们提供了一组方法来获取子线程的返回值&#xff0c;并保证其原子性。 头文件 #include <future>std::promise 在promise中保存了一个值…

Python 的字符串格式化指南

字符串格式化 Python 中控制字符串格式通常有三种形式&#xff1a; % 占位符&#xff08;格式化符&#xff09;str.format() 函数f-string 内嵌式 Python 最先开始格式化字符串是用 %&#xff0c;但它的致命缺点是支持的类型有限制&#xff0c;只支持 int&#xff0c;str&am…

【从零开始实现意图识别】中文对话意图识别详解

前言 意图识别&#xff08;Intent Recognition&#xff09;是自然语言处理&#xff08;NLP&#xff09;中的一个重要任务&#xff0c;它旨在确定用户输入的语句中所表达的意图或目的。简单来说&#xff0c;意图识别就是对用户的话语进行语义理解&#xff0c;以便更好地回答用户…

XUbuntu22.04之解决gpg keyserver receive failed no data(一百九十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

DevExpress WinForms TreeMap组件,用嵌套矩形可视化复杂分层数据

DevExpress WinForms TreeMap控件允许用户使用嵌套的矩形来可视化复杂的平面或分层数据结构。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。同时能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风…

中文rlhf数据集50w条数据解析

中文rlhf数据集50w条数据解析 解析代码数据名代码解析 解析代码 import jieba from tqdm import tqdm import re import pandas as pd import numpy as npdef find_non_english_text(text):pattern re.compile(r[^a-zA-Z])return pattern.sub(, text)def find_chinese_text(t…

教育数字化转型:塑造未来学习新范式

在国家教育数字化战略行动指引下&#xff0c;我国正积极推动数字化赋能教育高质量发展&#xff0c;以塑造教育发展的新优势。如今&#xff0c;随着科技新基建的普及和数字化赋能教育的深入推进&#xff0c;未来的教育模型正在逐渐形成。 在新的教育模型中&#xff0c;数字化学…

算法基础(python版本)

第二章 算法设计思想 一、搜索排序 1.排序算法 https://visualgo.net/zh/sorting (1)冒泡排序 # 思路&#xff1a; # (1)比较相邻元素&#xff0c;如果第一个比第二个大&#xff0c;则交换他们 # (2)第一轮下来&#xff0c;可以保证最后一个数一定是最大的&#xff1b;第二…

2023最全的Web自动化测试介绍

做测试的同学们都了解&#xff0c;做Web自动化&#xff0c;我们主要用Selenium或者是QTP。 有的人可能就会说&#xff0c;我没这个Java基础&#xff0c;没有Selenium基础&#xff0c;能行吗&#xff1f;测试虽然属于计算机行业&#xff0c;但其实并不需要太深入的编程知识&…

介绍一个功能强大的shopify app——TINYIMG

各位观众老爷&#xff0c;南来的北往的&#xff0c;东去的西走的&#xff0c;今天给大家推荐一个功能很强大的shopify app 当当当 那就是 tinyimg 这个app有多牛逼呢&#xff0c;且听我慢慢道来 首先这个app可以用来优化图片大小&#xff0c;给你的网站提提速 然后这个app还可…

Android使用AIDL+MemoryFile传递大数据

Android进程间通信经常会使用AIDL&#xff0c;简单方便&#xff0c;但是数据量有限制&#xff0c;超过一定值会报错&#xff1a; E !!! FAILED BINDER TRANSACTION !!! (parcel size 2073744) 可以通过使用AIDLMemoryFile传递大数据 新建AIDL接口&#xff1a; interface On…

CCFCSP试题编号:201803-2试题名称:碰撞的小球

一、题目描述 二、思路 1.首先妾身分析这个题目&#xff0c;想要解题&#xff0c;得得解决2个问题。 1&#xff09;判断小球到达端点或碰撞然后改变方向&#xff1b; 2&#xff09;每时刻都要改变位置 两个问题都比较好解决&#xff0c;1&#xff09;只要简单判断坐标&…

形态学操作—膨胀

在 OpenCV 中&#xff0c;图像形态学操作是一组基于图像形状的处理技术&#xff0c;其中膨胀&#xff08;Dilation&#xff09;是其中之一。膨胀操作可用于图像处理中的特征增强、去噪、分割和边缘检测等。其基本原理是利用结构元素&#xff08;Kernel 或 Structuring Element&…

Tomcat实现WebSocket即时通讯 Java实现WebSocket的两种方式

HTTP协议是“请求-响应”模式&#xff0c;浏览器必须先发请求给服务器&#xff0c;服务器才会响应该请求。即服务器不会主动发送数据给浏览器。 实时性要求高的应用&#xff0c;如在线游戏、股票实时报价和在线协同编辑等&#xff0c;浏览器需实时显示服务器的最新数据&#x…

UML建模图文详解教程06——顺序图

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;《UML面向对象分析、建模与设计&#xff08;第2版&#xff09;》吕云翔&#xff0c;赵天宇 著 顺序图概述 顺序图(sequence diagram&#xff0c;也…

(三)C语言之for语句概述

&#xff08;三&#xff09;C语言之for语句概述 一、使用for语句实现打印华氏温度与摄氏温度转换二、for语句概述三、练习 一、使用for语句实现打印华氏温度与摄氏温度转换 #include <stdio.h> /*当华氏温度为 0,20,40,...300时&#xff0c;打印出华氏温度与摄氏温度对照…