WIP: feat: scoreboard (#15) #31
52
internal/scoreboard/scoreboard.go
Normal file
52
internal/scoreboard/scoreboard.go
Normal file
|
@ -0,0 +1,52 @@
|
|||
package scoreboard
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
)
|
||||
|
||||
type Question struct {
|
||||
Name string `json:"name"`
|
||||
Score int `json:"score"`
|
||||
Comment string `json:"comment"`
|
||||
}
|
||||
|
||||
type ScoreboardData struct {
|
||||
StudentName string `json:"studentname"`
|
||||
StudentId string `json:"studentid"`
|
||||
Questions []Question `json:"questions"`
|
||||
}
|
||||
|
||||
type Scoreboard struct {
|
||||
scoreboard ScoreboardData
|
||||
}
|
||||
|
||||
func (b *Scoreboard) Init(studentName string, studentId string) {
|
||||
b.scoreboard.StudentName = studentName
|
||||
b.scoreboard.StudentId = studentId
|
||||
b.scoreboard.Questions = make([]Question, 0)
|
||||
}
|
||||
|
||||
func (b *Scoreboard) AddScore(questionName string, score int) {
|
||||
flag := false
|
||||
for i, question := range b.scoreboard.Questions {
|
||||
if question.Name == questionName {
|
||||
b.scoreboard.Questions[i].Score = score
|
||||
flag = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if flag {
|
||||
b.scoreboard.Questions = append(b.scoreboard.Questions, Question{Name: questionName, Score: score})
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Scoreboard) SaveFile(filePath string) {
|
||||
json_file, _ := os.Create(filePath)
|
||||
defer json_file.Close()
|
||||
|
||||
encoder := json.NewEncoder(json_file)
|
||||
encoder.SetEscapeHTML(false)
|
||||
encoder.SetIndent("", " ")
|
||||
_ = encoder.Encode(b.scoreboard)
|
||||
}
|
Loading…
Reference in New Issue
Block a user