软件工程第一次作业

课程 202601-软件工程第一次作业
作业要求 2026秋软件工程个人作业(第一次)
作业目标 1.准备一个GitHub账号,请在GitHub官网上注册账号,完善各项个人信息,并准备一个博客园账号,建立个人技术博客,完善各项个人信息(昵称,头像等),设置好博客园的样式等。
2.在hugging face官网注册个人账号并获取API,调用Flux模型生成一张最贴近真实世界的图像,掌握开源社区资源使用与AI模型接口调用方法。
3.在GitHub上完成个人主页建设。
4.梳理当前的技能树和技术偏好,并进行自我评估。
5.学习Markdown语法与写作方式。
学号 102401218

准备工作

Huggingface-API的调用

注册账号并获取Token

  • 注册账号后进入设置界面获取Token。
    image

项目实现

1.项目结构,使用Gradio简化代码,无需分别编写前端和后端接口。

Flux-webapp
└──app.py

2.项目代码

import gradio as gr
from huggingface_hub import InferenceClient

HF_TOKEN = "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"

client = InferenceClient(provider="fal-ai", api_key=HF_TOKEN)


# 定义核心生成函数
def generate_image(prompt):
    if not prompt:
        return None, "请输入提示词"
    try:
        # 调用 Flux-RealismLora 模型
        image = client.text_to_image(
            prompt,
            model="XLabs-AI/flux-RealismLora",
        )
        return image, "生成成功!"
    except Exception as e:
        return None, f"出错了:{str(e)}"


# 创建网页界面
with gr.Blocks(title="Flux 真实感图像生成器") as demo:
    gr.Markdown("Flux 真实感图像生成器")
    gr.Markdown("基于 XLabs-AI/flux-RealismLora模型,输入英文描述生成逼真图像。")

    with gr.Row():
        with gr.Column(scale=1):
            prompt_input = gr.Textbox(
                label="输入提示词 (Prompt)",
                placeholder="例如:A photorealistic portrait of a young woman, soft lighting...",
                lines=4
            )
            # 添加示例提示词按钮
            gr.Examples(
                examples=[
                    ["A cinematic photo of a futuristic city at sunset, neon lights, 8k"],
                    ["A macro shot of a dewdrop on a red rose, sharp focus, bokeh"],
                    ["A photorealistic portrait of an elderly man with a white beard, dramatic light"]
                ],
                inputs=prompt_input,
                label="点击试试这些示例"
            )
            submit_btn = gr.Button("生成图像", variant="primary")
        with gr.Column(scale=1):
            output_image = gr.Image(label="生成的图像", type="pil")
            output_status = gr.Textbox(label="状态信息")

    # 绑定按钮点击事件
    submit_btn.click(
        fn=generate_image,
        inputs=prompt_input,
        outputs=[output_image, output_status]
    )

# 启动服务
if __name__ == "__main__":
    demo.launch(theme=gr.themes.Soft())

项目成功运行,打开浏览器并访问 http://127.0.0.1:7860 ,输入提示词后点击生成图片。
image

生成效果展示

image

提示词设计思路与修改

  • 设计思路:
    1.主体+环境(亚洲城市,霓虹灯,湿沥青)
    2.氛围锚定:雨后,浓雾(决定光线散射方式)
    3.模仿专业相机摄影
  • 修改方案:
    放弃长曝光,改为高速快门凝固瞬间,同时统一焦距为20mm广角,增强建筑纹理细节。
    image

image

光影效果与建筑纹理较第一版更为真实。

心得体会

  • 掌握了构建项目与调用API的基本能力。
  • 理解了提示词设计方法与设计思路。
    -理解了前后端数据交互的过程。

Github个人主页搭建

参考资料:github个人主页搭建
完整github个人主页:https://john-ship-it5552.github.io/
效果图:
image

个人随笔

个人技能评估:

1.计算机科学基础:具备一定的计算机基础知识,掌握数据结构与算法、操作系统、计算机网络、计算机组成原理等核心课程内容。
2.C/C++基础:熟悉C/C++编程语言,掌握指针、内存管理、面向对象编程(继承、多态、虚函数等)及STL标准库使用。
3.熟练掌握Java语言特性,包括集合框架、多线程并发、I/O流、反射、注解等。
4.熟悉Web开发基础技术,包括HTML/CSS/JavaScript,了解HTTP/HTTPS协议、Cookie与Session、前后端交互原理。

代码量现状与目标

代码量5000行左右,希望在本学期结束能达到10000行,并积累大型项目开发经验。

期望学习的知识和收获

  • 规划软件结构:学会在设计阶段想清楚各个部分如何分工、如何衔接,避免边写边改、越改越乱。
  • 编写可靠代码:掌握写代码的基本规则和习惯,让程序能正常运行,并且尽量少出问题。
  • 检查并修复错误:学会自己测试程序,找到隐藏的问题,并一步步修正,保证交付时质量过关。
  • 管理代码版本:学会用工具保存每次修改记录,方便回溯历史,也方便多人同时工作而不互相覆盖。
  • 团队协作开发:学会和队友分工配合,定期交流进度,互相检查代码,共同完成一个完整项目。

AI生成的软件工程学习指南及分析

  1. 先搭建整体认知框架
    了解一个软件从无到有要经历哪些阶段,各自解决什么问题。
  2. 学会用工具管好代码
    掌握代码存档、多版本切换、多人合并的方法,并养成每次存代码时简单说明改了什么。
  3. 边学边做,从小项目练手
    每学一个新知识,立刻在一个迷你项目里用上,完整走完需求定义、编码、自测、整理文档的过程。
  4. 写得清楚比写得快更重要
    注意变量命名、代码排版,随手加上简短注释,并写一份简单的使用说明。
  5. 主动参与小组任务
    在小组里认领职责,定期同步进度,互相检查代码,共同决策。
  6. 每完成一个阶段就回头反思
    记录下遇到的困难和自己的处理方式,思考有没有更好的办法。

分析:
这份学习指南亮点突出,围绕软件全流程搭建学习体系,聚焦实战练手、代码规范、团队协作与复盘反思,贴合入门和职场开发需求,能有效规避盲目刷题、忽视规范协作等低效学习问题,树立科学的编程学习理念。但指南实操性不足,仅给出核心学习方向,缺少各学习环节的落地细则、操作标准、梯度规划与验收要求,无具体工具用法、编码规范、协作流程及复盘模板,内容偏理论,需根据自身实际情况,结合课程执行。

博客编辑截图

image

posted @ 2026-09-08 22:03  LYnan  阅读(12)  评论(0)    收藏  举报