LetmeLetmeLetme 2023-03-12 07:29 采纳率: 66.7%
浏览 83
已结题

关于#简历生成器#的问题,如何解决?

简历生成器

题目如下:
Step1. 将自己简历里的字段结构化为一个 json 文件
Step2. 参考下图,我们对简历显示规则字段做以下约定:
"[1|1|1]":表示一行显示3个字段,以 1:1:1 的形式显示;
"[2|1]":表示一行显示2个字段,以 2:1 的形式显示;
"-": 表示一行显示1个字段,等价于[1]。
请按照以上规则,自定义你的简历显示规则。例如:"-[1|1|1]---"。
Step3. 写一个函数,接受 Step2 设定的规则字符串和 Step1 的 json 为条件:
function generPaper(layoutStr, json){}
生成简历页面,样式自行决定。(也可传入控制显示字段顺序的相关信息)

延伸要求:

手机端第一个区块部分滚动时依然在顶部
页面支持打印

img

  • 写回答

3条回答 默认 最新

  • dahe0825 2023-03-12 08:00
    关注

    参考GPT和自己的思路,首先,你需要将你的简历信息结构化为一个 JSON 文件。这个文件应该包含你的个人信息、教育背景、工作经历、技能、项目经验等。每个部分都应该是一个对象,具有相应的属性和值。例如:

    {
      "personalInfo": {
        "name": "张三",
        "email": "zhangsan@example.com",
        "phone": "13800000000",
        "address": "北京市海淀区"
      },
      "education": [
        {
          "degree": "本科",
          "major": "计算机科学与技术",
          "school": "清华大学",
          "startDate": "2012年09月",
          "endDate": "2016年07月"
        },
        {
          "degree": "硕士",
          "major": "计算机科学与技术",
          "school": "清华大学",
          "startDate": "2016年09月",
          "endDate": "2018年07月"
        }
      ],
      "workExperience": [
        {
          "company": "阿里巴巴",
          "position": "软件工程师",
          "startDate": "2018年08月",
          "endDate": "2020年06月",
          "responsibilities": [
            "负责支付宝用户体验优化",
            "参与支付宝国际化项目"
          ]
        },
        {
          "company": "字节跳动",
          "position": "高级软件工程师",
          "startDate": "2020年07月",
          "endDate": "至今",
          "responsibilities": [
            "负责抖音直播核心功能开发",
            "参与抖音直播技术架构设计"
          ]
        }
      ],
      "skills": [
        "Java",
        "Python",
        "JavaScript",
        "React",
        "Vue",
        "Node.js",
        "Spring",
        "MySQL",
        "MongoDB"
      ],
      "projects": [
        {
          "name": "在线教育平台",
          "description": "一个基于 Spring Boot 和 Vue.js 的在线教育平台,提供在线课程和考试",
          "responsibilities": [
            "负责后端开发",
            "参与前端开发"
          ],
          "technologies": [
            "Java",
            "Spring Boot",
            "Vue.js",
            "MySQL"
          ]
        },
        {
          "name": "微信小程序",
          "description": "一个用于记录每日开销的微信小程序",
          "responsibilities": [
            "负责前端开发",
            "参与后端开发"
          ],
          "technologies": [
            "JavaScript",
            "Node.js",
            "MongoDB"
          ]
        }
      ]
    }
    

    接下来,你需要定义一个函数来根据指定的布局规则和 JSON 数据生成简历页面。这个函数应该首先解析布局规则,确定每一行应该包含哪些字段。然后,根据每一行的字段,从 JSON 数据中提取相应的值,生成 HTML 元素,并将它们拼接在一起,形成简历页面的 HTML 代码。

    这个函数的大致逻辑如下:

    1.解析布局规则,确定每一行应该包含哪些字段;
    2.从 JSON 数据中提取相应的值;
    3.生成 HTML 元素,并将它们拼接在一起;
    4.返回拼接好的 HTML 代码。
    下面是一个示例实现:

    function generateResume(layoutStr, jsonData) {
      // 解析布局规则,确定每一行应该包含哪些字段
      const layout = layoutStr.split("|").map((s) => s.split(":").map(Number));
    
      // 从 JSON 数据中提取相应的值
      const personalInfo = jsonData.personalInfo;
      const education = jsonData.education;
      const workExperience = jsonData.workExperience;
      const skills = jsonData.skills;
      const projects = jsonData.projects;
    
      // 生成 HTML 元素,并将它们拼接在一起
      let html = "";
    
      // 个人信息部分
      html += '<div class="section">';
      html += '<h2>个人信息</h2>';
      html += '<ul>';
      if (layout[0].length === 1) {
        html += `<li>${personalInfo.name}</li>`;
      } else if (layout[0].length === 2) {
        html += `<li>${personalInfo.name}</li>`;
        html += `<li>${personalInfo.email}</li>`;
      } else {
        html += `<li>${personalInfo.name}</li>`;
        html += `<li>${personalInfo.email}</li>`;
        html += `<li>${personalInfo.phone}</li>`;
      }
      html += '</ul>';
      html += '</div>';
    
      // 教育背景部分
      html += '<div class="section">';
      html += '<h2>教育背景</h2>';
      for (let i = 0; i < education.length; i++) {
        const edu = education[i];
        html += '<ul>';
        if (layout[i+1].length === 1) {
          html += `<li>${edu.degree} - ${edu.major}</li>`;
        } else {
          html += `<li>${edu.degree} - ${edu.major}</li>`;
          html += `<li>${edu.school}</li>`;
          html += `<li>${edu.startDate} - ${edu.endDate}</li>`;
        }
        html += '</ul>';
      }
      html += '</div>';
    
      // 工作经历部分
      html += '<div class="section">';
      html += '<h2>工作经历</h2>';
      for (let i = 0; i < workExperience.length; i++) {
        const exp = workExperience[i];
        html += '<ul>';
        if (layout[i+3].length === 1) {
          html += `<li>${exp.company} - ${exp.position}</li>`;
        } else {
          html += `<li>${exp.company} - ${exp.position}</li>`;
          html += `<li>${exp.startDate} - ${exp.endDate}</li>`;
          html += '<li><ul>';
          for (let j = 0; j < exp.responsibilities.length; j++) {
            const res = exp.responsibilities[j];
            html += `<li>${res}</li
      }
      html += '</ul></li>';
    }
    html += '</ul>';
    // 返回拼接好的 HTML 代码
    return html;
    }
    

    这个函数中,我们首先解析了布局规则,然后从 JSON 数据中提取了个人信息、教育背景、工作经历、技能和项目经历这些部分的数据。接下来,我们根据布局规则,生成相应的 HTML 元素,最后将它们拼接在一起,形成完整的简历页面。

    回答不易,还请采纳!!!

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月12日
  • 赞助了问题酬金15元 3月12日
  • 修改了问题 3月12日
  • 展开全部

悬赏问题

  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部