az77927792
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    ## 1、项目可行性分析 ### 1.1 技术可行性分析 在技术方面,我们采用了以下架构和工具: - **操作系统**:前端开发使用 Windows 10 或更新版本,后端开发使用 Linux。 - **前端开发工具**:我们选择了 Qt 6.6.0 进行桌面图形开发。 - **代码同步工具**:我们使用 Git 进行代码的组织和同步。 - **数据库**:我们使用 MySQL 进行数据存储与管理。 - **后端语言**:我们使用 Python 进行后台系统和接口的构建。 - **计算机网络架构**:使用经典的客户端/服务器(C/S)模型。 - **网络通信**:前后端通信采用 Socket,并使用 JSON 进行数据交换。 这些技术和开发工具都是比较简单的或者在学校中有所接触了解,具体优势及选择原因: - **Windows桌面系统**:作为用户量最大的桌面操作系统,使用上没有太大问题。 - **Linux桌面系统**:桌面版的Linux系统(Ubuntu)提供图像界面,更易使用,也方便作为本地服务器进行测试 - **Linux服务器**:可看作只有终端的Linux桌面系统,学习一些基础指令即可完成大部分功能。 - **Qt**:具有图形化UI界面,在基础控件的使用上与cocos2d-x相似,且具有详细规范的开发文档与学习资源,学习起来很容易上手。 - **MySQL**:具有较高的性能和稳定性,此外它支持跨平台操作,可以在各种操作系统上运行 - **Python**:具有简单易学、代码简洁、生态丰富等优点。 - **Socket**:通过Socket,前后端可以方便地进行数据交换和通信。 - **Git**:操作简单,易于理解,可以有效地管理多人的开发过程,确保代码的组织和同步,且大部分现代IDE都有提供Git图形操作界面。 - **JSON**:作为轻量级的数据交换格式,JSON易于人的阅读和编写,且大多数语言都有解析JSON的模块或者第三方库,可以方便的在多种语言之间进行数据交换。 综上所述,我们认为这些技术的选择可以使得开发过程具有较低的难度和阻力,并且可以辅助使用 ChatGPT 进行开发,从技术层面来看是可行的。 ### 1.2 经济可行性分析 “MyChat”聊天软件的开发中虽然使用了适合Windows的免费开发系统和工具,减少了初期的技术投入,但由于软件预定要公网上线,我们需要考虑到额外的成本,包括服务器的费用,以及确保数据加密和用户隐私保护的相关开支。由于“MyChat”仅支持Windows平台,这简化了开发流程并减少了需要为多个操作系统进行适配和测试的成本。然而,我们仍需进行充分的测试以确保软件在Windows环境下的稳定性和性能。 **开发成本分析表** | 项目 | 费用 | | :------- | :----------------- | | 软件投入 | ¥0 | | 硬件投入 | ¥2,2500 | | 系统开发 | ¥0 | | 运行维护 | ¥2000/户 | | 成本总计 | ¥2,4500 | **收益分析表** | 项目 | 收益 | | :----------- | :----------------- | | 软件费用 | ¥6000 /套| | 每年维护费用 | ¥3000 /年 | | 广告费用 | ¥? | | 收益总计 | ¥? | **分析说明:** **开发成本:** - **软件投入**:开源软件以及免费软件。 - **硬件投入**:用于测试和开发的服务器和设备,需要服务器和对应的windows的设备进行软件测试,确保稳定性。 - **系统开发**:软件开发人员和用户界面设计人员来构建和完善软件,确保用户体验。 - **运行维护**:包括服务器租用费、软件更新、技术支持和数据备份等费用。 **收益:** - **软件费用**:用户支付一次费用,获得软件的永久使用权。 - **广告收入**:通过软件内广告来生成收入,这部分收益依赖于用户的活跃度和广告策略的效果。 - **每年维护费用**:服务器费用,数据备份和恢复,软件升级和补丁以及技术支持。 从长期来看,如果"MyChat"能够吸引足够数量的用户,并有效地管理运营成本,项目的经济可行性将是正面的。然而,要达到盈利状态,项目团队需要有效地执行市场推广策略,持续增加用户基础,并优化收益模型。 ### 1.3 操作可行性分析 为确保"MyChat"项目在用户操作上的可行性,我们进行了详细的设计与规划,以提升用户体验并降低操作难度。以下是我们采取的措施: - **直观的用户界面**:我们设计了一个简洁且直观的用户界面,让用户能够轻松找到所需功能,如发送消息、分享文件和进行视频通话等。这包括明确的图标、简单的菜单结构和易于理解的指引。 - **交互式教程和帮助文档**:为新用户提供交互式教程,引导他们完成基本操作,快速上手。同时,应用内嵌详尽的帮助文档和常见问题解答(FAQ),帮助用户解决使用中遇到的问题。 - **多语言支持**:针对不同国家的用户,提供多种语言版本,确保每位用户都能在其母语环境中使用软件,减少语言障碍带来的操作困难。 - **用户反馈系统**:建立一个易于访问的用户反馈系统,让用户可以直接报告问题或提出改进建议。这不仅帮助我们持续改进产品,也让用户感受到他们的意见被重视。 通过这些设计和措施,我们确保"MyChat"在操作上的易用性和可访问性,使得用户无论技术背景如何,都能轻松、高效地使用该应用。这些特性将极大地提高用户满意度并促进应用的普及。 ### 1.4 社会可行性分析 “MyChat”项目作为一个即时通讯软件,其市场需求显而易见。在数字化、网络化日益发展的今天,人们对于即时沟通工具的依赖不断增强。"MyChat"旨在提供一个稳定、高效且用户友好的通讯平台,以满足用户日益增长的沟通需求和社交需求。 - **目标用户群**:目标用户群: 初期主要面向企业用户和专业人士,提供多功能的通讯解决方案,包括文本、文件共享等。 - **市场定位**:结合高效的通信能力和稳定的系统性能,"MyChat"特别适用于需要远程办公和团队协作的商业环境。 - **数据保护**:随着个人数据保护法律法规的日益严格,"MyChat"在设计时已充分考虑到数据加密和用户隐私保护的要求,确保所有用户数据的安全和隐私。 - **合规性**:项目团队将密切关注国内外信息安全与隐私保护的最新法规,确保软件更新和服务实践始终符合法律法规的要求。 - **文化适应性**:在设计和功能开发上,"MyChat"考虑到不同文化和地区的特定需求,例如提供多语言支持,以及符合地域文化特征的界面和交互设计。 - **经济影响**:"MyChat"的成功运营将创造就业机会,从软件开发、市场营销到客户服务等多个方面提供新的职业机会。 - **用户接受度**:"MyChat"通过提供简洁友好的用户界面和丰富的功能,以及确保高度的用户数据安全,来获得用户的信任和青睐。 - **社会责任**:公司计划定期参与和资助社会公益项目,如教育和技术普及活动,以提高公司形象并回馈社会。 综合考虑以上因素,从社会可行性角度来看,"MyChat"项目具备高度的社会接受度和积极的社会影响潜力。项目的实施预计能够得到社会的广泛支持,同时为社会的数字化转型和技术发展贡献力量。 ## 2、UML ### 2.1 用例 #### 2.1.1 用例图 <img src="./用例图.jpg" alt="暂未添加用例图" style="max-width:60%" /> [点击编辑用例图](https://www.processon.com/v/662752d5e059f44f0ca4473c?cid=662752c2fc41004d850f2e67) #### 2.1.2 登录 - **参与者**: 用户 - **触发条件**: 启动软件后自动触发 - **前置条件**: 用户已下载并打开聊天软件 - **后置条件**: 登录成功跳转到主界面,失败弹出对应提示 - **基本流程**: 1. 系统显示登录信息填写界面 2. 用户输入账号密码 3. 系统验证账号密码格式和存在性 4. 系统验证账号密码匹配性 5. 登录成功,跳转到主界面 - **扩展流程**: - 用户输入账号密码格式错误,提示用户并返回步骤1 - 账号不存在,提示用户并返回步骤1 - 账号密码不匹配,提示用户并返回步骤1 #### 2.1.3 注册 - **参与者**: 用户 - **触发条件**: 用户在登录界面点击注册 - **前置条件**: 用户已进入登录界面 - **后置条件**: 注册成功跳转到登录界面,失败弹出对应提示 - **基本流程**: 1. 系统显示注册信息填写界面 2. 用户输入账号密码 3. 系统验证账号密码格式和唯一性 4. 注册成功,跳转到登录界面 - **扩展流程**: - 用户输入账号密码格式错误,提示用户并返回步骤1 - 账号已存在,提示用户并返回步骤1 #### 2.1.4 设置 - **参与者**: 用户 - **触发条件**: 用户在主界面点击“设置”按钮 - **前置条件**: 用户已登录且在主界面 - **后置条件**: 设置更改保存成功,应用新设置 - **基本流程**: 1. 系统展示设置菜单,包括选项如账户信息、退出登录等 2. 用户修改设置 3. 用户确认更改 4. 系统验证更改 5. 系统保存更改并给出成功提示 - **扩展流程**: - 用户选择登出,则返回登录页面 - 用户选择修改密码,系统提示用户输入现在的密码,验证成功后跳转设置新密码页面 #### 2.1.5 接收消息 - **参与者**: 用户 - **触发条件**: 有其他用户向当前用户发送消息 - **前置条件**: 用户已登录且与发送消息用户为联系人 - **后置条件**: 当前用户与发送消息用户的聊天界面弹出新消息框 - **基本流程**: 1. 系统接收用户发送的消息内容并验证 2. 检验通过后,将此消息以新消息框的形式弹出至聊天界面 3. 通知用户有未读新消息 - **扩展流程**: - 用户长按消息框,弹出菜单窗口,提示用户进行复制或删除操作 #### 2.1.6 发送消息 - **参与者**: 用户 - **触发条件**: 用户想要发送消息给某个联系人 - **前置条件**: 用户已选择某个联系人,并进入聊天窗口 - **后置条件**: 接收方成功接收到消息 - **基本流程**: 1. 用户在聊天框输入文字 2. 用户点击发送按钮 3. 系统处理并发送消息 4. 系统在聊天窗口显示发送的消息 5. 接收方的聊天窗口更新,显示接收到的新消息 #### 2.1.7 选择联系人/群 - **参与者**: 用户 - **触发条件**: 用户在主界面点击“联系人”按钮,选择联系人/群 - **前置条件**: 用户已登录且在主界面,联系人列表可见 - **后置条件**: 系统展示所选联系人的聊天窗口 - **基本流程**: 1. 系统展示联系人列表 2. 用户选择联系人/群 3. 系统打开所选联系人/群的聊天窗口 #### 2.1.8 添加 - **参与者**: 用户 - **触发条件**: 用户在主界面点击“添加”按钮 - **前置条件**: 用户已登录且在主界面 - **后置条件**: 系统显示添加菜单,用户继续进行操作 - **基本流程**: 1. 系统展示添加菜单,包括选项添加联系人/群、新建群聊等 2. 用户选择菜单内具体功能 3. 根据用户点击的功能按钮,系统跳转到对应功能 #### 2.1.9 查看通知 - **参与者**: 用户 - **触发条件**: 用户选择查看通知 - **前置条件**: 用户已成功登录 - **后置条件**: 系统展示查看通知界面 - **基本流程**: 1. 用户选择查看的通知 2. 显示对应的通知 #### 2.1.10 查看群通知 - **参与者**: 用户 - **触发条件**: 用户进入查看通知界面并选择查看群通知 - **前置条件**: 用户已成功登录 - **后置条件**: 系统显示群通知 - **基本流程**: 1. 系统显示群通知 2. 用户对可操作通知进行允许 1. 系统将申请加群的用户(自己)添加到自己管理的群(别人管理的群) 2. 系统将添加成功的消息发送给申请加群的用户(邀请自己进群的用户) 3. 用户对可操作通知进行拒绝 1. 系统将拒绝添加的消息发送给申请加群的用户(邀请自己进群的用户) - **扩展流程**: - 用户选择不可操作的通知则仅展示通知内容(有人退群等) #### 2.1.11 查看好友通知 - **参与者**: 用户 - **触发条件**: 用户进入查看通知界面并选择查看好友通知 - **前置条件**: 用户已成功登录 - **后置条件**: 系统显示好友通知 - **基本流程**: 1. 系统显示好友通知 2. 用户对可操作通知进击选择(同意或拒绝) 1. 系统将申请添加自己的用户添加到自己的联系人列表 2. 系统将添加成功的消息发送给申请加好友的用户 3. 用户对可操作通知进行拒绝 1. 系统将拒绝添加的消息发送给申请加好友的用户 #### 2.1.12 添加用户到群 - **参与者**: 系统 - **触发条件**: 用户(群主)同意入群 - **前置条件**: 用户(群主)同意入群 - **后置条件**: 用户成功添加到群中 - **基本流程**: 1. 系统将用户添加到群的用户列表 #### 2.1.13 添加用户到联系人列表 - **参与者**: 系统 - **触发条件**: 用户同意好友申请 - **前置条件**: 用户同意好友申请 - **后置条件**: 用户成功添加联系人列表 - **基本流程**: 1. 系统将申请用户添加到被申请用户的联系人列表 2. 系统将被申请用户添加到申请用户的联系人列表 #### 2.1.14 添加联系人/群 - **参与者**: 用户 - **触发条件**: 用户在添加界面并点击“添加联系人/群”按钮 - **前置条件**: 用户已成功登录 - **后置条件**: 添加成功或失败 - **基本流程**: 1. 用户搜索用户或群 2. 用户选择搜索结果并发送添加或入群请求 3. 系统验证是否已是好友或已在群中 4. 系统将请求发送到对应用户的通知 5. 等待对方处理 - **扩展流程**: - 如果系统验证到已经是好友或已经在群里则提示用户已经是好友或已经在群里 #### 2.1.15 查看用户/群信息 - **参与者**: 用户 - **触发条件**: 用户在联系人界面点击用户/群名称 - **前置条件**: 用户已成功登录 - **后置条件**: 系统显示用户/群的信息 - **基本流程**: 1. 用户点击用户/群 2. 系统展示用户/群的详细信息 #### 2.1.16 搜索用户/群 - **参与者**: 用户 - **触发条件**: 用户在主界面点击搜索用户/群按钮 - **前置条件**: 用户已成功登录 - **后置条件**: 在新界面显示搜索结果 - **基本流程**: 1. 系统显示搜索界面 2. 用户输入账号/群号 3. 点击搜索,系统显示搜索结果 4. 用户可点击搜索结果以查看用户/群信息 #### 2.1.17 新建群聊 - **参与者**: 用户 - **触发条件**: 用户在添加界面并点击“新建群聊”按钮 - **前置条件**: 用户已成功登录 - **后置条件**: 群聊创建成功 - **基本流程**: 1. 系统提醒填写群名称 2. 用户输入群名称 3. 点击立即创建 #### 2.1.18 修改用户信息 - **参与者**: 用户 - **触发条件**: 用户在设置界面并点击“修改用户信息”按钮 - **前置条件**: 用户已成功登录并进入设置界面 - **后置条件**: 系统提示修改成功 - **基本流程**: 1. 系统显示用户个人信息界面 2. 用户修改信息 3. 修改后,点击保存 - **扩展流程**: - 如果用户选择修改密码,则弹出输入框提示输入旧密码,验证成功后调整到设置新密码界面 #### 2.1.19 退出登录 - **参与者**: 用户 - **触发条件**: 用户在设置界面点击“退出登录” - **前置条件**: 用户已成功登录,且进入设置界面 - **后置条件**: 用户回到登陆界面 - **基本流程**: 1. 用户点击“退出登录” 2. 系统确认是否退出 3. 用户确认退出,则回到登录页面 #### 2.1.20 设置新密码 - **参与者**: 用户 - **触发条件**: 用户在设置或登录界面点击“设置新密码” - **前置条件**: 用户在找回密码或修改用户信息的界面验证完身份 - **后置条件**: 系统提示重新登录并回到登录页面 - **基本流程**: 1. 系统显示设置新密码界面 2. 用户输入新密码 3. 系统验证密码格式 4. 提示修改成功并返回登录页面 #### 2.1.21 找回密码 - **参与者**: 用户 - **触发条件**: 用户在登录界面点击“找回密码” - **前置条件**: 用户进入登录界面 - **后置条件**: 系统跳转登录界面 - **基本流程**: 1. 输入邮箱或UID 2. 系统验证邮箱或UID是否存在 3. 系统发送验证码至邮箱 4. 用户填写验证码 5. 系统验证验证码是否正确 6. 系统跳转设置新密码 - **扩展流程**: - 邮箱或UID不存在,返回步骤1 - 验证码不正确,返回步骤4

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully