1.录入几位学生信息(姓名,学号,饭卡余额),并保存到student.txt文件中;2.能够依据学号对饭卡充值,每次充值的金额为10的倍数;3.能够按照学号查询饭卡余额,如果谁的余额少于10元,就给出充值提示。要求:软件至少应具有“输入初始数据”、“饭卡充值”、“查询余额”、“退出”4项菜单。
时间: 2023-12-25 13:06:26 浏览: 67
好的,你的问题是如何开发一个学生饭卡管理系统,包括录入学生信息,饭卡充值,查询余额等功能,对吧?下面是一个简单的实现过程:
1. 首先创建一个student.txt文件,用于保存学生信息,格式如下:
```
姓名\t学号\t余额\n
张三\t001\t100\n
李四\t002\t50\n
```
2. 创建一个菜单,包括“输入初始数据”、“饭卡充值”、“查询余额”、“退出”四项功能。
3. 实现“输入初始数据”功能,即读取student.txt文件中的数据,存储到一个列表中。
4. 实现“饭卡充值”功能,即根据学号查询到对应的学生信息,然后让用户输入充值金额,每次充值的金额为10的倍数,最后更新学生信息并写入student.txt文件中。
5. 实现“查询余额”功能,即根据学号查询到对应的学生信息,然后输出该学生的余额,如果余额小于10元,给出充值提示。
6. 实现“退出”功能,即退出程序。
下面是一个简单的Python代码实现:
相关问题
用python语言编写软件完成以下任务: 1.录入几位学生信息(姓名,学号,饭卡余额),并保存到student.txt文件中; 2.能够依据学号对饭卡充值,每次充值的金额为10的倍数; 3.能够按照学号查询饭卡余额,如果谁的余额少于10元,就给出充值提示。 要求:软件至少应具有“输入初始数据”、“饭卡充值”、“查询余额”、“退出”4项菜单。
好的,以下是用Python编写的实现以上任务的示例代码:
```python
def main():
# 读取学生信息
students = []
with open('student.txt', 'r') as f:
for line in f:
name, id, balance = line.strip().split(',')
students.append({'name': name, 'id': id, 'balance': float(balance)})
# 用户界面菜单
while True:
print('请选择操作:')
print('1. 输入初始数据')
print('2. 饭卡充值')
print('3. 查询余额')
print('4. 退出')
choice = input()
if choice == '1':
# 输入初始数据
students = []
n = int(input('请输入学生人数:'))
for i in range(n):
name = input('请输入第{}位学生的姓名:'.format(i+1))
id = input('请输入第{}位学生的学号:'.format(i+1))
balance = float(input('请输入第{}位学生的饭卡余额:'.format(i+1)))
students.append({'name': name, 'id': id, 'balance': balance})
# 保存学生信息
with open('student.txt', 'w') as f:
for student in students:
f.write('{},{},{}\n'.format(student['name'], student['id'], student['balance']))
elif choice == '2':
# 饭卡充值
id = input('请输入要充值的学生学号:')
for student in students:
if student['id'] == id:
amount = int(input('请输入充值金额(必须是10的倍数):'))
if amount % 10 != 0:
print('充值金额必须是10的倍数!')
break
student['balance'] += amount
print('充值成功!')
break
else:
print('没有找到该学生!')
# 保存学生信息
with open('student.txt', 'w') as f:
for student in students:
f.write('{},{},{}\n'.format(student['name'], student['id'], student['balance']))
elif choice == '3':
# 查询余额
id = input('请输入要查询的学生学号:')
for student in students:
if student['id'] == id:
print('学生姓名:{},饭卡余额:{}'.format(student['name'], student['balance']))
if student['balance'] < 10:
print('饭卡余额不足,请及时充值!')
break
else:
print('没有找到该学生!')
elif choice == '4':
# 退出程序
print('退出程序...')
break
else:
print('请输入正确的操作编号!')
```
你可以根据需要对代码进行修改和优化。
实验题目:模拟饭卡充值一、实验内容1.录入几位学生信息(姓名,学号,饭卡余额),并保存到student.txt文件中;2.能够依据学号对饭卡充值,每次充值的金额为10的倍数;3.能够按照学号查询饭卡余额,如果谁的余额少于10元,就给出充值提示。要求:软件至少应具有“输入初始数据”、“饭卡充值”、“查询余额”、“退出”4项菜单。要求使用c语言编写,程序尽可能简单,并在每一步程序后面注释其作用
好的,接下来我将为你提供一个可供参考的C语言程序,实现上述要求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100 // 最多学生数
#define FILENAME "student.txt" // 存储学生信息的文件名
// 定义学生结构体
typedef struct {
char name[20];
char id[10];
float balance; // 饭卡余额
} Student;
// 学生信息数组
Student students[MAX_STUDENTS];
int num_students = 0; // 学生数
// 读取学生信息文件
void read_students() {
FILE* fp;
fp = fopen(FILENAME, "r"); // 打开文件,只读模式
if (fp != NULL) {
while (!feof(fp) && num_students < MAX_STUDENTS) {
fscanf(fp, "%s %s %f", students[num_students].name, students[num_students].id, &students[num_students].balance);
num_students++;
}
fclose(fp); // 关闭文件
}
}
// 保存学生信息到文件
void save_students() {
FILE* fp;
fp = fopen(FILENAME, "w"); // 打开文件,写入模式
if (fp != NULL) {
for (int i = 0; i < num_students; i++) {
fprintf(fp, "%s %s %.2f\n", students[i].name, students[i].id, students[i].balance);
}
fclose(fp); // 关闭文件
}
}
// 根据学号查找学生
int find_student(char id[]) {
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].id, id) == 0) {
return i;
}
}
return -1; // 没有找到
}
// 输入初始数据
void input_students() {
char name[20], id[10];
float balance;
while (1) {
printf("请输入学生姓名(输入0结束):");
scanf("%s", name);
if (strcmp(name, "0") == 0) {
break;
}
printf("请输入学号:");
scanf("%s", id);
printf("请输入饭卡余额:");
scanf("%f", &balance);
strcpy(students[num_students].name, name);
strcpy(students[num_students].id, id);
students[num_students].balance = balance;
num_students++;
if (num_students >= MAX_STUDENTS) {
printf("学生数已达到最大值%d,无法继续添加!\n", MAX_STUDENTS);
break;
}
}
}
// 饭卡充值
void recharge() {
char id[10];
int index;
float amount;
printf("请输入学号:");
scanf("%s", id);
index = find_student(id);
if (index == -1) {
printf("没有找到该学生!\n");
} else {
printf("请输入充值金额(必须为10的倍数):");
scanf("%f", &amount);
if ((int)amount % 10 != 0) {
printf("充值金额必须为10的倍数!\n");
} else {
students[index].balance += amount;
printf("充值成功!当前余额为%.2f元。\n", students[index].balance);
}
}
}
// 查询余额
void query_balance() {
char id[10];
int index;
printf("请输入学号:");
scanf("%s", id);
index = find_student(id);
if (index == -1) {
printf("没有找到该学生!\n");
} else {
printf("%s的饭卡余额为%.2f元。\n", students[index].name, students[index].balance);
if (students[index].balance < 10) {
printf("余额不足10元,请及时充值!\n");
}
}
}
// 主函数
int main() {
int choice;
read_students(); // 读取学生信息文件
while (1) {
printf("1. 输入初始数据\n");
printf("2. 饭卡充值\n");
printf("3. 查询余额\n");
printf("4. 退出\n");
printf("请选择功能:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_students();
save_students();
break;
case 2:
recharge();
save_students();
break;
case 3:
query_balance();
break;
case 4:
return 0;
default:
printf("输入有误,请重新输入!\n");
}
}
return 0;
}
```
上述程序中,我们使用了结构体来表示学生信息,使用文件来存储和读取学生信息。程序中包含了输入初始数据、饭卡充值、查询余额和退出四个菜单选项。每个菜单选项用一个函数实现,程序尽可能简单易懂,并在每一步后面都注释了其作用。