作業所屬課程 | 班級連結 |
---|---|
作業要求 | 作業要求連結 |
作業的目標 | Speak with AI的原型設計+概要設計 |
團隊名稱 | 愛碼單車隊 |
成員1 | 102201542--曾慶徽 |
成員2 | 102201211--池家益 |
成員3 | 102201302--毛震 |
成員4 | 102201420--林傳昊 |
成員5 | 102201425--鄭禮鑫 |
成員6 | 102201538--黃志梁 |
成員7 | 102201630--嶽俊傑 |
成員8 | 102201227--陳銘揚 |
成員9 | 102201239--翁林靖 |
成員10 | 102201257--王黨兵 |
一.原型設計
這是我們的原型連結:https://j58t0t.axshare.com/?id=z3hodb&p=登入介面&sc=3&g=1
原型真機演示動畫:
特色說明(這裡的圖片參考我們的原型設計加概要設計的pdf):
1.核心功能介紹:
場景模擬對話:使用者可以選擇不同的日常生活場景進行模擬對話,以提高實際對話能力。
自然語言對話生成:透過整合AI,生成自然語言對話,提供語音互動功能。
發音糾正:利用呼叫語音識別技術,系統分析使用者發音的準確性,並提供改進建議。
值得注意的是我們開發了語種選擇功能,以便後續擴充到不同語種,初始時是英語(ENGLISH)。
2.主介面:
頂部顯示當前語種
左上角為“個人”圖示,點選可進入個人中心頁面--(中心介面裡可以看到歷史對話記錄,可以做到快速覆盤),
中間區域為對話視窗,顯示AI和使用者的對話歷史,
底部為輸入區域,包含麥克風圖示和“按住說話”提示。
使用者透過按住麥克風圖示說話,AI響應後以文字形式顯示在對話視窗。
下方“示例回答”“場景選擇”“翻譯”和“設定”選項分別對應其功能,其中“場景選擇”可以切換對話場景,“設定”可以切換對話難。
3.總結:
可以看到我們的原型裡的介面設計主要就是簡化操作流程,保持使用者介面簡潔友好。
同時還支援快速切換不同學習場景和翻譯,示例回答等功能,方便使用者操作,快速上手練習。
二.概要設計
這部分內容主要圍繞圖片來展示,分為兩部分UML設計和資料庫設計:
UML設計:
用例圖:
活動圖:
時序圖:
類圖:
協作圖:
資料庫設計:
E-R圖:
關係資料模型:
物件關係對映:
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
// User 表
@Entity
@Table(name = "User")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int userId;
private String username;
private String profession;
private String voice;
private String speechSpeed;
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
private UserLogin userLogin;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<LearningRecord> learningRecords;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<UserEnglishScore> englishScores;
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
private Settings settings;
// Getters and Setters
}
// UserLogin 表
@Entity
@Table(name = "UserLogin")
public class UserLogin {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int loginId;
@OneToOne
@JoinColumn(name = "user_id")
private User user;
private String password;
private Timestamp lastLogin;
// Getters and Setters
}
// UserEnglishScore 表
@Entity
@Table(name = "UserEnglishScore")
public class UserEnglishScore {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int scoreId;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
private String scoreType;
private int score;
private Date examDate;
// Getters and Setters
}
// LearningRecord 表
@Entity
@Table(name = "LearningRecord")
public class LearningRecord {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int recordId;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
private String studyContent;
private String studyFeedback;
private int studyTimes;
@OneToMany(mappedBy = "learningRecord", cascade = CascadeType.ALL)
private List<Dialogue> dialogues;
@OneToMany(mappedBy = "learningRecord", cascade = CascadeType.ALL)
private List<AudioRecord> audioRecords;
// Getters and Setters
}
// Scene 表
@Entity
@Table(name = "Scene")
public class Scene {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int sceneId;
private String sceneTopic;
private String sceneDescription;
@OneToMany(mappedBy = "scene", cascade = CascadeType.ALL)
private List<Dialogue> dialogues;
// Getters and Setters
}
// Dialogue 表
@Entity
@Table(name = "Dialogue")
public class Dialogue {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int dialogueId;
@ManyToOne
@JoinColumn(name = "record_id")
private LearningRecord learningRecord;
@ManyToOne
@JoinColumn(name = "scene_id")
private Scene scene;
private String dialogueContent;
private int score;
@OneToOne(mappedBy = "dialogue", cascade = CascadeType.ALL)
private ScoreDetail scoreDetail;
// Getters and Setters
}
// AudioRecord 表
@Entity
@Table(name = "AudioRecord")
public class AudioRecord {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int audioId;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@ManyToOne
@JoinColumn(name = "record_id")
private LearningRecord learningRecord;
private String audioPath;
private Timestamp uploadTime;
@OneToOne(mappedBy = "audioRecord", cascade = CascadeType.ALL)
private Transcription transcription;
// Getters and Setters
}
// Transcription 表
@Entity
@Table(name = "Transcription")
public class Transcription {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int transcriptionId;
@OneToOne
@JoinColumn(name = "audio_id")
private AudioRecord audioRecord;
private String transcribedText;
private Timestamp transcriptionTime;
// Getters and Setters
}
// ScoreDetail 表
@Entity
@Table(name = "ScoreDetail")
public class ScoreDetail {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int scoreId;
@OneToOne
@JoinColumn(name = "dialogue_id")
private Dialogue dialogue;
private int pronunciationScore;
private int grammarScore;
private int fluencyScore;
private int overallScore;
private String feedback;
@OneToMany(mappedBy = "scoreDetail", cascade = CascadeType.ALL)
private List<Feedback> feedbacks;
// Getters and Setters
}
// Feedback 表
@Entity
@Table(name = "Feedback")
public class Feedback {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int feedbackId;
@ManyToOne
@JoinColumn(name = "score_id")
private ScoreDetail scoreDetail;
private String suggestion;
private String improvementArea;
// Getters and Setters
}
// Settings 表
@Entity
@Table(name = "Settings")
public class Settings {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int settingsId;
@OneToOne
@JoinColumn(name = "user_id")
private User user;
private String transcriptionLanguage;
private String scoringStandard;
private boolean notificationPreference;
// Getters and Setters
}
三.團隊協作記錄
預計計劃安排表:
周次 | 日期範圍 | 里程碑 | 產出 |
---|---|---|---|
第1周 | 11月2日 - 11月8日 | 後端開發初步完成 | 完成API介面文件,完成基礎功能開發 |
第2周 | 11月9日 - 11月15日 | 前端開發初步完成 | 完成前端頁面開發,進行初步整合測試 |
第3周 | 11月16日 - 11月22日 | 完成系統整合 | 提交整合測試報告,完成系統功能演示 |
第4周 | 11月23日 - 11月29日 | 程式碼審查與最佳化,使用者測試與反饋 | 完成程式碼審查,進行效能最佳化,收集使用者反饋,修復bug,完善功能 |
預計開發計劃分工:
姓名 | 角色 | 負責的開發部分 |
---|---|---|
曾慶徽 | 組長 | 專案整體規劃與管理,進度跟蹤與溝通 |
嶽俊傑,池家益 | 前端開發人員 | 前端介面設計與開發,使用者互動功能實現 |
鄭禮鑫,黃志梁 | 後端開發人員 | API設計與實現,資料庫管理與介面整合 |
毛震 陳銘揚 | 測試人員 | 測試計劃制定,功能測試與bug反饋 |
翁林靖 | 文件編寫人員 | 專案文件撰寫,需求文件與使用者手冊編寫 |
林傳昊 | UI/UX設計師 | 使用者介面設計,使用者體驗最佳化 |
王黨兵 | 資料分析員 | 資料收集與分析,使用者反饋彙總與改進建議 |
團隊協作記錄:
專案管理平臺:
GitHubDesktop
團隊協作記錄:
四.倉庫連線以及下載連結:
github團隊倉庫連結:https://github.com/zqh666nb/home
愛碼單車隊_系統設計說明書.pdf:連結: https://pan.baidu.com/s/12UcIY0JMM8qMuRfVsh4MpA?pwd=1234 提取碼: 1234
愛碼單車隊_資料庫設計說明書.pdf:連結: https://pan.baidu.com/s/1MFtuVeA3aXwvwj8e06MByg?pwd=1234 提取碼: 1234
愛碼單車隊_原型設計+概要設計答辯PPT.pdf:連結: https://pan.baidu.com/s/1d6F2WHHuza-jBAupIC5PDg?pwd=1234 提取碼: 1234