go语言中package student的作用
时间: 2024-06-14 11:00:54 浏览: 14
在Go语言中,package student的作用是用于组织和管理相关的代码文件。一个package可以包含多个.go文件,这些文件可以共享同一个package的变量、函数和类型定义。
通过将相关的代码文件放在同一个package中,可以提高代码的可读性和可维护性。同时,package也可以作为代码的封装单元,可以控制代码的访问权限,对外部代码提供接口。
在Go语言中,每个源代码文件都必须声明所属的package,这个声明位于文件的开头。例如,如果一个文件声明为package student,那么其中定义的函数、变量和类型都属于student这个package。
相关问题
go语言学生管理系统
以下是一个使用Go语言实现的学生管理系统的示例代码,包括学生信息的增删改查和成绩排序功能:
```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
type Student struct {
id int
name string
score int
}
var studentList []Student
func main() {
for {
fmt.Println("请选择操作:")
fmt.Println("1. 添加学生信息")
fmt.Println("2. 删除学生信息")
fmt.Println("3. 修改学生信息")
fmt.Println("4. 查询学生信息")
fmt.Println("5. 成绩排序")
fmt.Println("6. 退出")
var choice int
fmt.Scanln(&choice)
switch choice {
case 1:
addStudent()
case 2:
deleteStudent()
case 3:
modifyStudent()
case 4:
queryStudent()
case 5:
sortStudent()
case 6:
os.Exit(0)
default:
fmt.Println("无效的选择,请重新输入")
}
}
}
func addStudent() {
fmt.Println("请输入学生信息,格式为:学号 姓名 成绩")
scanner := bufio.NewScanner(os.Stdin)
if scanner.Scan() {
line := scanner.Text()
fields := strings.Fields(line)
if len(fields) != 3 {
fmt.Println("输入格式错误,请重新输入")
return
}
id, err := strconv.Atoi(fields[0])
if err != nil {
fmt.Println("学号必须为数字,请重新输入")
return
}
score, err := strconv.Atoi(fields[2])
if err != nil {
fmt.Println("成绩必须为数字,请重新输入")
return
}
student := Student{id, fields[1], score}
studentList = append(studentList, student)
fmt.Println("添加成功")
}
}
func deleteStudent() {
fmt.Println("请输入要删除的学生学号")
var id int
fmt.Scanln(&id)
for i, student := range studentList {
if student.id == id {
studentList = append(studentList[:i], studentList[i+1:]...)
fmt.Println("删除成功")
return
}
}
fmt.Println("未找到该学生")
}
func modifyStudent() {
fmt.Println("请输入要修改的学生学号")
var id int
fmt.Scanln(&id)
for i, student := range studentList {
if student.id == id {
fmt.Println("请输入修改后的学生信息,格式为:姓名 成绩")
scanner := bufio.NewScanner(os.Stdin)
if scanner.Scan() {
line := scanner.Text()
fields := strings.Fields(line)
if len(fields) != 2 {
fmt.Println("输入格式错误,请重新输入")
return
}
score, err := strconv.Atoi(fields[1])
if err != nil {
fmt.Println("成绩必须为数字,请重新输入")
return
}
student.name = fields[0]
student.score = score
studentList[i] = student
fmt.Println("修改成功")
}
return
}
}
fmt.Println("未找到该学生")
}
func queryStudent() {
fmt.Println("请输入要查询的学生学号")
var id int
fmt.Scanln(&id)
for _, student := range studentList {
if student.id == id {
fmt.Printf("学号:%d,姓名:%s,成绩:%d\n", student.id, student.name, student.score)
return
}
}
fmt.Println("未找到该学生")
}
func sortStudent() {
sort.Slice(studentList, func(i, j int) bool {
return studentList[i].score > studentList[j].score
})
fmt.Println("排序结果:")
for _, student := range studentList {
fmt.Printf("学号:%d,姓名:%s,成绩:%d\n", student.id, student.name, student.score)
}
}
```
go语言编写一个学生实验平台
好的,下面是一个简单的学生实验平台的Go语言实现,包括学生信息的增删改查和实验结果的上传和查看。
```go
package main
import (
"fmt"
"os"
"bufio"
)
type Student struct {
id string
name string
age int
}
type Experiment struct {
id string
name string
result string
}
func addStudent() {
var student Student
fmt.Println("请输入学生ID:")
fmt.Scanln(&student.id)
fmt.Println("请输入学生姓名:")
fmt.Scanln(&student.name)
fmt.Println("请输入学生年龄:")
fmt.Scanln(&student.age)
// 将学生信息写入文件
file, err := os.OpenFile("students.txt", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
fmt.Println("文件打开失败:", err)
return
}
defer file.Close()
writer := bufio.NewWriter(file)
fmt.Fprintf(writer, "%s,%s,%d\n", student.id, student.name, student.age)
writer.Flush()
fmt.Println("添加成功!")
}
func listStudents() {
file, err := os.Open("students.txt")
if err != nil {
fmt.Println("文件打开失败:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
var student Student
fmt.Sscanf(line, "%s,%s,%d", &student.id, &student.name, &student.age)
fmt.Printf("ID:%s\t姓名:%s\t年龄:%d\n", student.id, student.name, student.age)
}
}
func deleteStudent() {
var id string
fmt.Println("请输入要删除的学生ID:")
fmt.Scanln(&id)
// 读取文件内容,找到需要删除的学生
file, err := os.Open("students.txt")
if err != nil {
fmt.Println("文件打开失败:", err)
return
}
defer file.Close()
reader := bufio.NewReader(file)
writer, err := os.OpenFile("students.tmp", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
fmt.Println("临时文件打开失败:", err)
return
}
defer writer.Close()
writerWriter := bufio.NewWriter(writer)
for {
line, err := reader.ReadString('\n')
if err != nil {
break
}
if line == "" {
continue
}
var student Student
fmt.Sscanf(line, "%s,%s,%d", &student.id, &student.name, &student.age)
if student.id != id {
fmt.Fprintf(writerWriter, "%s,%s,%d\n", student.id, student.name, student.age)
}
}
writerWriter.Flush()
// 删除原始文件并将临时文件重命名
os.Remove("students.txt")
os.Rename("students.tmp", "students.txt")
fmt.Println("删除成功!")
}
func editStudent() {
var id string
fmt.Println("请输入要编辑的学生ID:")
fmt.Scanln(&id)
// 读取文件内容,找到需要编辑的学生
file, err := os.Open("students.txt")
if err != nil {
fmt.Println("文件打开失败:", err)
return
}
defer file.Close()
reader := bufio.NewReader(file)
writer, err := os.OpenFile("students.tmp", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
fmt.Println("临时文件打开失败:", err)
return
}
defer writer.Close()
writerWriter := bufio.NewWriter(writer)
for {
line, err := reader.ReadString('\n')
if err != nil {
break
}
if line == "" {
continue
}
var student Student
fmt.Sscanf(line, "%s,%s,%d", &student.id, &student.name, &student.age)
if student.id == id {
fmt.Println("请输入学生姓名:")
fmt.Scanln(&student.name)
fmt.Println("请输入学生年龄:")
fmt.Scanln(&student.age)
fmt.Fprintf(writerWriter, "%s,%s,%d\n", student.id, student.name, student.age)
} else {
fmt.Fprintf(writerWriter, "%s,%s,%d\n", student.id, student.name, student.age)
}
}
writerWriter.Flush()
// 删除原始文件并将临时文件重命名
os.Remove("students.txt")
os.Rename("students.tmp", "students.txt")
fmt.Println("编辑成功!")
}
func addExperiment() {
var experiment Experiment
fmt.Println("请输入实验ID:")
fmt.Scanln(&experiment.id)
fmt.Println("请输入实验名称:")
fmt.Scanln(&experiment.name)
fmt.Println("请输入实验结果:")
fmt.Scanln(&experiment.result)
// 将实验结果写入文件
file, err := os.OpenFile("experiments.txt", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
fmt.Println("文件打开失败:", err)
return
}
defer file.Close()
writer := bufio.NewWriter(file)
fmt.Fprintf(writer, "%s,%s,%s\n", experiment.id, experiment.name, experiment.result)
writer.Flush()
fmt.Println("添加成功!")
}
func listExperiments() {
file, err := os.Open("experiments.txt")
if err != nil {
fmt.Println("文件打开失败:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
var experiment Experiment
fmt.Sscanf(line, "%s,%s,%s", &experiment.id, &experiment.name, &experiment.result)
fmt.Printf("ID:%s\t名称:%s\t结果:%s\n", experiment.id, experiment.name, experiment.result)
}
}
func main() {
for {
fmt.Println("请选择操作:")
fmt.Println("1. 添加学生")
fmt.Println("2. 查看学生")
fmt.Println("3. 删除学生")
fmt.Println("4. 编辑学生")
fmt.Println("5. 添加实验结果")
fmt.Println("6. 查看实验结果")
fmt.Println("0. 退出")
var choice int
fmt.Scanln(&choice)
switch choice {
case 1:
addStudent()
case 2:
listStudents()
case 3:
deleteStudent()
case 4:
editStudent()
case 5:
addExperiment()
case 6:
listExperiments()
case 0:
return
default:
fmt.Println("无效的操作")
}
}
}
```
这个实现使用了文件存储学生和实验信息。学生信息保存在`students.txt`文件中,每行包括学生ID、姓名和年龄,用逗号分隔。实验结果保存在`experiments.txt`文件中,每行包括实验ID、名称和结果,也用逗号分隔。
运行程序后,根据提示进行相应的操作即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)