1.录入几位学生信息(姓名,学号,饭卡余额),并保存到student.txt文件中;2.能够依据学号对饭卡充值,每次充值的金额为10的倍数;3.能够按照学号查询饭卡余额,如果谁的余额少于10元,就给出充值提示。要求:软件至少应具有“输入初始数据”、“饭卡充值”、“查询余额”、“退出”4项菜单。要求用c语言编写,程序尽可能简单,并在每一步后面注释其作用

时间: 2023-12-11 08:03:49 浏览: 27
好的,下面是用C语言编写的学生饭卡管理系统代码,注释中标明了每一步的作用: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义学生结构体 typedef struct { char name[20]; char id[10]; int balance; } Student; // 定义函数原型 void input_students(Student students[], int *num_students); void save_students(Student students[], int num_students); void recharge_balance(Student students[], int num_students); void check_balance(Student students[], int num_students); int main() { Student students[100]; // 最多存储100个学生信息 int num_students = 0; // 学生数量 int choice; // 用户选择的操作编号 while (1) { // 输出菜单 printf("请选择操作:\n"); printf("1. 输入初始数据\n"); printf("2. 饭卡充值\n"); printf("3. 查询余额\n"); printf("4. 退出\n"); printf("请输入序号:"); scanf("%d", &choice); switch (choice) { case 1: input_students(students, &num_students); // 录入学生信息 save_students(students, num_students); // 保存学生信息到文件 break; case 2: recharge_balance(students, num_students); // 饭卡充值 save_students(students, num_students); // 保存学生信息到文件 break; case 3: check_balance(students, num_students); // 查询余额 break; case 4: printf("谢谢使用,再见!\n"); return 0; default: printf("输入有误,请重新输入!\n"); } } return 0; } // 录入学生信息 void input_students(Student students[], int *num_students) { int i, n; printf("请输入学生数量:"); scanf("%d", &n); for (i = 0; i < n; i++) { printf("请输入第%d个学生的姓名:", *num_students + 1); scanf("%s", students[*num_students].name); printf("请输入第%d个学生的学号:", *num_students + 1); scanf("%s", students[*num_students].id); printf("请输入第%d个学生的饭卡余额:", *num_students + 1); scanf("%d", &students[*num_students].balance); (*num_students)++; } } // 保存学生信息到文件 void save_students(Student students[], int num_students) { FILE *fp = fopen("student.txt", "w"); int i; for (i = 0; i < num_students; i++) { fprintf(fp, "%s\t%s\t%d\n", students[i].name, students[i].id, students[i].balance); } fclose(fp); } // 饭卡充值 void recharge_balance(Student students[], int num_students) { char id[10]; // 学号 int amount; // 充值金额 int i; printf("请输入学生学号:"); scanf("%s", id); for (i = 0; i < num_students; i++) { if (strcmp(students[i].id, id) == 0) { // 找到对应学号的学生 printf("请输入充值金额(10的倍数):"); scanf("%d", &amount); if (amount % 10 != 0) { printf("充值金额必须为10的倍数!\n"); return; } students[i].balance += amount; // 更新余额 printf("充值成功,当前余额为%d元。\n", students[i].balance); return; } } printf("该学生不存在!\n"); } // 查询余额 void check_balance(Student students[], int num_students) { char id[10]; // 学号 int i; printf("请输入学生学号:"); scanf("%s", id); for (i = 0; i < num_students; i++) { if (strcmp(students[i].id, id) == 0) { // 找到对应学号的学生 printf("%s的饭卡余额为%d元。\n", students[i].name, students[i].balance); if (students[i].balance < 10) { printf("余额不足,请及时充值!\n"); } return; } } printf("该学生不存在!\n"); } ``` 在主函数中,我们首先定义了一个存储学生信息的数组和学生数量,然后进入一个循环,根据用户选择的操作执行相应的函数。 在录入学生信息函数中,我们先让用户输入学生数量,然后循环录入每个学生的姓名、学号、余额,并将学生数量加1。 在保存学生信息到文件函数中,我们打开文件,循环写入每个学生的信息,最后关闭文件。 在饭卡充值函数中,我们先让用户输入学号,然后循环遍历学生数组,找到对应学号的学生,让用户输入充值金额,如果金额不是10的倍数,则提示错误,否则更新余额并输出充值成功信息。 在查询余额函数中,我们先让用户输入学号,然后循环遍历学生数组,找到对应学号的学生,输出余额并给出充值提示。 每个函数都有相应的注释,方便理解和修改。

相关推荐

最新推荐

recommend-type

ASP.NET课程-学生信息管理系统实验报告.doc

2. 学生成绩管理:对已经录入的学生信息进行添加、删除、修改学习成绩,并可以通过关键字进行查询。 3. 课程信息管理:支持对授课教师、课程编号及授课老师所授课的年级进行添加、删除、修改等操作。 4. 课程管理...
recommend-type

Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法

主要介绍了Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法,涉及java文件I/O操作及字符串遍历、运算实现统计功能相关技巧,需要的朋友可以参考下
recommend-type

学生信息管理系统(报告).doc

◆将系统录入的信息保存在文件中; ◆能够输出管理系统信息。 1.2 设计要求 要求设计程序输出如下: 1.总的要求: 用链表实现应用系统,完成链表建立(至少包括50个节点) ,以及链表中信息(节点)的插入、...
recommend-type

c语言作业——学生成绩统计.docx

(1)学生基本信息(学号、姓名、…….)录入; (2)学生成绩录入; (3)统计学生成绩分布情况(每个分数段人数); (4)查找最高分、最低分;计算学生成绩均值和方差;并输出这四个结果; (5)判断成绩是否服从...
recommend-type

java实现学生成绩录入系统

主要为大家详细介绍了java实现学生成绩录入系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。