成绩记录簿 编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能: (1)创建信息链表并以磁盘文件保存; (2)读取磁盘文件并显示输出所有学生的成绩; (3)按学号或姓名查询成绩; (4)添加成绩记录; (5)修改指定姓名或学号的学生的成绩并可存盘; (6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。
时间: 2023-05-21 22:06:19 浏览: 124
答案:非常好,这是一个标准的C语言管理系统的实现,我很高兴为您提供帮助。以下是具体实现步骤:
(1) 根据需要创建一个包含学号、姓名和成绩的学生结构体,并在结构体中添加成员变量。
(2) 在主函数中,创建一个链表结构体,用于存储所有学生的信息,并且将数据保存到磁盘文件中。
(3) 读取磁盘文件并显示输出所有学生的成绩。您可以使用fopen()函数打开文件,使用fscanf()函数从文件中读取数据,并使用printf()函数在屏幕上输出学生信息。
(4) 按学号或姓名查询成绩。您可以使用strcmp()函数比较学生姓名或学号,并使用if语句来确定是否有匹配学生信息。
(5) 添加成绩记录。您可以使用malloc()函数为新的学生信息分配内存空间,并将新的学生信息链接到已有的学生信息结构体中。
(6) 修改指定姓名或学号的学生的成绩并可存盘。您可以使用strcmp()函数来比较学生姓名或学号,并使用if语句来确定是否有匹配学生信息。修改学生成绩后,使用fopen()函数打开磁盘文件,并使用fprintf()函数将修改后的成绩写入文件中。
(7) 显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。您可以使用if语句的嵌套语法来确定学生分数所属的分数段。
要注意的是,在代码实现的过程中,需要注意代码的可读性、健壮性以及安全性。
相关问题
编制一个有GUI界面的Python成绩记录簿,每个学生信息包括:学号,姓名,Python成绩。具体功能如下: (1)输入学生信息并保存到文件中 (2)读取文件并显示输出所有学生的成绩; (3)按学号或姓名查询成绩 (4)添加成绩记录; (5)修改指定姓名或学号的学生的成绩并可存盘 (6)显示输出60分以下,60-79,80-89,90分以上各分数段的学生信息
好的,我可以帮你编写这个Python成绩记录簿的GUI程序。我们可以使用Tkinter模块来实现GUI界面,使用文件来保存学生信息和成绩记录。具体实现步骤如下:
1. 导入Tkinter模块和文件操作模块
```python
import tkinter as tk
from tkinter import messagebox
import os
```
2. 定义主窗口和相关控件
```python
root = tk.Tk()
root.title("Python成绩记录簿")
# 定义标签控件和输入框控件
label_id = tk.Label(root, text="学号:")
entry_id = tk.Entry(root)
label_name = tk.Label(root, text="姓名:")
entry_name = tk.Entry(root)
label_score = tk.Label(root, text="Python成绩:")
entry_score = tk.Entry(root)
# 定义按钮控件
button_add = tk.Button(root, text="添加记录", command=add_record)
button_query = tk.Button(root, text="查询记录", command=query_record)
button_modify = tk.Button(root, text="修改记录", command=modify_record)
button_show = tk.Button(root, text="显示记录", command=show_record)
button_show_stat = tk.Button(root, text="显示统计", command=show_stat)
```
3. 定义相关函数
(1)添加记录函数
```python
def add_record():
# 获取输入框内容
id = entry_id.get()
name = entry_name.get()
score = entry_score.get()
# 判断输入框是否为空
if not id or not name or not score:
messagebox.showwarning("警告", "请完整填写学生信息和成绩!")
return
# 判断成绩是否是数字
try:
score = int(score)
except ValueError:
messagebox.showwarning("警告", "成绩必须是数字!")
return
# 判断学号是否已存在
if check_id_exists(id):
messagebox.showwarning("警告", "该学号已存在,请重新输入!")
return
# 将学生信息和成绩记录保存到文件中
with open("students.txt", "a") as f:
f.write("{},{},{}\n".format(id, name, score))
# 清空输入框内容
entry_id.delete(0, tk.END)
entry_name.delete(0, tk.END)
entry_score.delete(0, tk.END)
messagebox.showinfo("提示", "添加记录成功!")
```
(2)查询记录函数
```python
def query_record():
# 获取输入框内容
id = entry_id.get()
name = entry_name.get()
# 判断输入框是否为空
if not id and not name:
messagebox.showwarning("警告", "请输入学号或姓名!")
return
# 查询学生信息和成绩记录
records = []
with open("students.txt", "r") as f:
for line in f:
fields = line.strip().split(",")
if (id and fields[0] == id) or (name and fields[1] == name):
records.append(fields)
# 显示查询结果
if len(records) == 0:
messagebox.showinfo("提示", "未查询到任何记录!")
else:
messagebox.showinfo("查询结果", "\n".join(["学号:{},姓名:{},Python成绩:{}".format(record[0], record[1], record[2]) for record in records]))
```
(3)修改记录函数
```python
def modify_record():
# 获取输入框内容
id = entry_id.get()
name = entry_name.get()
score = entry_score.get()
# 判断输入框是否为空
if not id and not name:
messagebox.showwarning("警告", "请输入学号或姓名!")
return
if not score:
messagebox.showwarning("警告", "请输入成绩!")
return
# 判断成绩是否是数字
try:
score = int(score)
except ValueError:
messagebox.showwarning("警告", "成绩必须是数字!")
return
# 查询学生信息和成绩记录
records = []
with open("students.txt", "r") as f:
for line in f:
fields = line.strip().split(",")
if (id and fields[0] == id) or (name and fields[1] == name):
records.append(fields)
# 显示查询结果并修改记录
if len(records) == 0:
messagebox.showinfo("提示", "未查询到任何记录!")
elif len(records) == 1:
# 修改成绩记录
records[0][2] = str(score)
# 保存修改后的记录到文件中
with open("students.txt", "w") as f:
for record in records:
f.write("{},{},{}\n".format(record[0], record[1], record[2]))
messagebox.showinfo("提示", "修改记录成功!")
else:
messagebox.showwarning("警告", "查询到多条记录,请输入唯一的学号或姓名!")
```
(4)显示记录函数
```python
def show_record():
# 读取所有学生信息和成绩记录
records = []
with open("students.txt", "r") as f:
for line in f:
fields = line.strip().split(",")
records.append(fields)
# 显示所有记录
if len(records) == 0:
messagebox.showinfo("提示", "未查询到任何记录!")
else:
messagebox.showinfo("所有记录", "\n".join(["学号:{},姓名:{},Python成绩:{}".format(record[0], record[1], record[2]) for record in records]))
```
(5)显示统计函数
```python
def show_stat():
# 读取所有学生信息和成绩记录
records = []
with open("students.txt", "r") as f:
for line in f:
fields = line.strip().split(",")
records.append(fields)
# 统计各分数段的学生数量
under_60, between_60_79, between_80_89, above_90 = 0, 0, 0, 0
for record in records:
if int(record[2]) < 60:
under_60 += 1
elif 60 <= int(record[2]) <= 79:
between_60_79 += 1
elif 80 <= int(record[2]) <= 89:
between_80_89 += 1
else:
above_90 += 1
# 显示统计结果
messagebox.showinfo("统计结果", "60分以下:{}人\n60-79分:{}人\n80-89分:{}人\n90分以上:{}人".format(under_60, between_60_79, between_80_89, above_90))
```
(6)检查学号是否已存在函数
```python
def check_id_exists(id):
with open("students.txt", "r") as f:
for line in f:
fields = line.strip().split(",")
if fields[0] == id:
return True
return False
```
4. 将控件添加到主窗口中
```python
label_id.grid(row=0, column=0)
entry_id.grid(row=0, column=1)
label_name.grid(row=1, column=0)
entry_name.grid(row=1, column=1)
label_score.grid(row=2, column=0)
entry_score.grid(row=2, column=1)
button_add.grid(row=3, column=0)
button_query.grid(row=3, column=1)
button_modify.grid(row=4, column=0)
button_show.grid(row=4, column=1)
button_show_stat.grid(row=5, columnspan=2)
```
5. 运行主窗口
```python
root.mainloop()
```
完整代码如下:
学生籍贯信息记录簿(使用数据库) 编制一个学生籍贯(到省一级就行,不用到市)信息记录簿,每个学生信息包括:学号、姓名、籍贯。功能要求: (1)按学号或姓名查询其籍贯; (2)按籍贯查询并输出该籍贯的所有学生; (3)能添加、删除和修改学生的籍贯信息; (4)籍贯从JComboBox中选择。
这是一个简单的学生籍贯信息记录簿的数据库设计。可以使用MySQL或其他关系型数据库来实现。
**学生表(Student)**
| 字段名 | 数据类型 | 描述 |
| --- | --- | --- |
| id | int(11) | 学号 |
| name | varchar(50) | 姓名 |
| province | varchar(20) | 籍贯省份 |
**查询学生信息**
根据学号或姓名查询学生信息,可以使用如下的SQL语句:
```sql
-- 根据学号查询学生信息
SELECT * FROM Student WHERE id = '20180101';
-- 根据姓名查询学生信息
SELECT * FROM Student WHERE name = '张三';
```
**查询籍贯信息**
根据籍贯查询学生信息,可以使用如下的SQL语句:
```sql
SELECT * FROM Student WHERE province = '广东省';
```
**添加、删除和修改学生信息**
添加学生信息,可以使用如下的SQL语句:
```sql
INSERT INTO Student (id, name, province) VALUES ('20180101', '张三', '广东省');
```
删除学生信息,可以使用如下的SQL语句:
```sql
DELETE FROM Student WHERE id = '20180101';
```
修改学生信息,可以使用如下的SQL语句:
```sql
UPDATE Student SET province = '江苏省' WHERE id = '20180101';
```
**使用JComboBox选择籍贯信息**
可以使用Swing或JavaFX构建一个表单,其中包含一个JComboBox选择框,用于选择学生籍贯信息。当用户选择某个籍贯时,程序可以执行相应的查询操作,并将结果显示在界面上。对于添加、删除和修改学生信息,可以通过表单中的按钮来触发相应的数据库操作。