7-18 对象关系映射(orm_name)---PTA实验C++

一、题目描述

一开始看到对象关系映射,其实我是拒绝的。这三个词凑一块,能是给C++初学者的题吗?

再仔细读需求,才发现在课设项目已经用过这功能。Object Relational Mapping(ORM)就是面向对象(OO)侧的模型类、对象、属性与数据库(DB)的表(关系)、记录(行)、列对应,由ORM框架完成两侧的相互转换。

语言侧标识符区分大小写,使用驼峰表示法。而数据库的标识符不区分大小写,要用下划线分隔单词。例如:

  • 语言中的属性studentId,对应数据库的student_id。就是大写字母要改成小写,并且如果不是首个字母,还要在前面追加一个下划线。
  • 语言侧的类名StudentHonor,对应数据库的表名student_honor,对应。与属性不同,类名首字母要大写。

这种标识符映射在做课设项目特别是Repository类里惹了不少乱子。为了彻底弄清这个知识点,亲自实现标识符映射功能是个好办法。

先导题:标识符。

输入规格
  • 每行一组数据,读取到EOF为止。
  • 每组数据有类型、标识符两个字符串,间隔若干空白符。
    • 类型:class field table column四种之一。
    • 标识符:待转换的字符串。
  • 本题不考察算法的时空复杂度。
输出规格
  • 每行输出一组转换结果。
样例输入
class StudentHonor
field studentId
table course
column pre_course_id
样例输出
table student_honor
column student_id
class Course
field preCourseId
样例解释
  • 第1组:class对应table,字母全改成小写,中间的大写字母前要插入下划线分割。
  • 第2组:field对应column,同上。
  • 第3组:table对应class,首字母大写,去掉下划线,下划线后续字母也大写。
  • 第4组:column对应field,去掉下划线,下划线后续字母改大写。

二、注意事项

str一次只能拼接一个变量值,否则会出现乱码

str+='_';

str+=c;

三、完整C++代码实现

#include<iostream>
using namespace std;
#include<string>
string t_x(string s){string str="";for(int i=0;i<s.size();i++){char c=s[i];if(c>='A'&&c<='Z'){c+=32;if(i!=0){str+='_';str+=c;}else{str+=c;}}else{str+=c;}}return str;
}
string x_t(string type,string s){string str="";for(int i=0;i<s.size();i++){char c=s[i];if(i==0&&type=="table"){c-=32;}if(c=='_'){i++;c=s[i]-32;str+=c;}else{str+=c;}}return str;
}
string x_t_2(string s){}int main(){string type,id;while(cin>>type>>id){if(type=="class"){cout<<"table"<<" "<<t_x(id)<<endl;}else  if(type=="field"){cout<<"column"<<" "<<t_x(id)<<endl;} if(type=="table"){cout<<"class"<<" "<<x_t(type,id)<<endl;} if(type=="column"){cout<<"field"<<" "<<x_t(type,id)<<endl;}}}

四、测评详情

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

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

相关文章

《平渊》· 柒 —— 大道至简?真传一句话,假传万卷书!

《平渊》 柒 "真传一句话, 假传万卷书" 对于 "大道至简"&#xff0c;不少专家可能会说出一大堆乱七八糟的名词, 比如这样&#xff1a; 所谓 "大道" 即支撑天地运转的 "系统自动力"&#xff0c;更具体地来说&#xff0c;即是天地人以…

快手游戏《无尽梦回》官宣开测:热血动作肉鸽来袭

易采游戏网最新消息&#xff1a;5月30日11:00&#xff0c;快手自研的梦境主题动作冒险手游《无尽梦回》正式宣布开启测试。此次测试名为“肉鸽进化实验”&#xff0c;旨在测试多角色技能交会的玩法。游戏将开放32人同局竞技&#xff0c;让玩家在激烈的战斗中角逐出唯一的胜利者…

HTML如何让文字底部线条不紧贴在文字下面(既在内容下方又超出内容区域)

hello&#xff0c;大家好&#xff0c;星途星途今天给大家带来的内容是如何让文字底部线条不紧贴在文字下面。 话不多说&#xff0c;先上效果图 简单来说就是padding和margin的区别。 在网页设计中&#xff0c;有时我们想要给某个元素添加一个装饰性的线条&#xff0c;比如底部…

过滤器、监听器、拦截器的区别

过滤器、监听器、拦截器的区别 过滤器&#xff08;filter&#xff09;、监听器&#xff08;Listener&#xff09;是JavaWeb的三大组件。而拦截器&#xff08;Interceptor&#xff09;是Spring框架中的。 我们主要是要分清除过滤器和拦截器的区别&#xff1a; 实现原理&#…

overleaf 写参考文献引用

目录 1、 新建.bib 文件 2、导入引用 3、在文档中引用参考文献 4、生成参考文献列表 1、 新建.bib 文件 在Overleaf项目中&#xff0c;你可以选择导入现有的 .bib 文件或在项目中创建一个新的 .bib 文件来管理你的参考文献。 导入.bib 文件&#xff1a; 在项目文件树中点击…

11. RBAC权限管理从零到一实现(二)

前端页面已提交至git https://github.com/SJshenjian/cloud-web默认用户名密码admin 1

【自然语言处理】【Scaling Law】Observational Scaling Laws:跨不同模型构建Scaling Law

相关博客 【自然语言处理】【Scaling Law】Observational Scaling Laws&#xff1a;跨不同模型构建Scaling Law 【自然语言处理】【Scaling Law】语言模型物理学 第3.3部分&#xff1a;知识容量Scaling Laws 【自然语言处理】Transformer中的一种线性特征 【自然语言处理】【大…

jmeter性能优化之tomcat配置与基础调优

一、 修改tomcat初始和最大堆内存 进入到/usr/local/tomcat7-8083/bin目录下&#xff0c;编辑catalina.sh文件&#xff0c;&#xff0c;默认堆内存是600m&#xff0c;初始堆内存和最大堆内存保持一致&#xff0c; 可以更改到本机内存的70%&#xff0c;对于Linux系统&#xff0…

conda创建虚拟环境并激活

1 conda activate base 2 conda creat -n aaa python** 3 conda activate aaa 4 interpreter里面去选择刚搞好的编译器 ...../conda.exe

【SpringBoot】四种读取 Spring Boot 项目中 jar 包中的 resources 目录下的文件

本文摘要&#xff1a;四种读取 Spring Boot 项目中 jar 包中的 resources 目录下的文件 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号&#xf…

设计模式(十三)行为型模式---命令模式

文章目录 命令模式简介结构UML图具体实现UML图代码实现 命令模式简介 命令模式&#xff08;command pattern&#xff09;也叫动作模式或者事务模式。它是将请求&#xff08;命令&#xff09;封装成对象&#xff0c;使得可以用不同的请求对客户端进行参数化&#xff0c;具体的请…

MD中 面料的物理属性参数

该图片是Marvelous Designer软件中"Fabric Physical Properties"(面料物理属性)面板的截图,用于调整面料在弯曲、折叠时的硬度(Buckling Stiffness)。 目标部分解释了调整Buckling Stiffness的作用:通过调整该百分比值来决定面料角落处的硬度。进入80%的Buckling St…

NXP RT1060学习总结 - CANFD功能

1、RT1060-CAN FD功能简介 这里使用RT1060系列的1064芯片进行开发&#xff0c;测试板是官方提供的开发板&#xff1b;RT1060系列支持3路CAN功能&#xff0c;CAN1和CAN2只能最为普通的CAN外设&#xff0c;支持CAN2.0&#xff0c;而CAN3支持CAN-FD功能&#xff1b;CAN-FD功能这里…

CS和msf的权限传递,利用mimikatz抓取win10明文密码

一、Cobaltstrike的安装 http://t.csdnimg.cn/yhZin 安装CobaltStrike&#xff0c;浏览博主的上篇文章即可&#xff01;&#xff01;&#xff01; 这里我在自己的本机win11上执行了Client去连接kali中的Server端&#xff0c;直接执行.cmd文件即可&#xff01;&#xff01;&…

【计算机毕业设计】基于SSM++jsp的校园驿站管理系统【源码+lw+部署文档】

目录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信息流…

C语言| 输出菱形*

C语言| 输出*三角形-CSDN博客 输出菱形。 【分析思路】 学会输出*的三角形之后输出菱形就很简单了。我们分析一下&#xff0c;菱形是由两个对称的三角形组成的&#xff0c;也因为是对称的&#xff0c;所以输出的菱形的行数肯定是一个奇数。 1 我们在编程的时候&#xff0c;要…

基于卷积-小波神经网络的SAR图像海冰变化检测方法(MATLAB R2018A)

海冰是冰冻圈的重要组成部分&#xff0c;海冰的变化信息对航行安全和自然资源开采等非常重要&#xff0c;许多船舶没有加固防冰设备&#xff0c;因此&#xff0c;必须避开所有的冰区。尤其当冰压很高时&#xff0c;即使破冰船也很难在冰层中前行。为了安全航行&#xff0c;获取…

leetCode.89. 格雷编码

leetCode.89. 格雷编码 题目思路 代码 class Solution { public:vector<int> grayCode(int n) {vector<int> res(1,0); // n 0时&#xff0c;之后一位0while (n--) {// 想要实现对象超下来&#xff0c;就从末尾开始&#xff0c;让vector里面 加 元素for (int i …

Stable Diffusion Webui--安装与使用

最近进行的课程汇报&#xff0c;学习了2023年的CVPR文章《DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation》&#xff0c;因此尝试使用了几种方法对这篇文章的工作进行了一定的复现。本文主要介绍Stable Diffusion Web UI(webui)的安装…

【因果推断python】10_分组和虚拟变量回归1

目录 分组数据回归 分组数据回归 并非所有数据点都是一样的。 如果我们再次查看我们的 ENEM 数据集&#xff0c;相比小规模学校的分数&#xff0c;我们更相信规模较大的学校的分数。 这并不是说大型学校更好或什么&#xff0c; 而只是因为它们的较大规模意味着更小的方差。 i…