学生缴费注册系统的开发

2024-06-02 21:32

本文主要是介绍学生缴费注册系统的开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*包含必要的头文件*/typedef struct student
{int cno;//班号int sno;//学号char name[20];//姓名char sex[12];//性别float money[3];//应缴  实缴  找零
}Stu;//学生结构体int read(Stu s[])//文件读
{FILE *fp;int i = 0;if ((fp = fopen("student.txt", "r+")) == NULL)//‘r’允许读 打开文件 如果打开失败 返回0{return 0;}while (!feof(fp))//当文件没有读取到末尾 循环读取到数组{fscanf(fp,"%d%d%s%s%f%f%f",&s[i].cno,&s[i].sno,s[i].name,s[i].sex,&s[i].money[0],&s[i].money[1],&s[i].money[2]);i++;//数组每次长度+1}fclose(fp);		//关闭文件return i;//返回读取到的数组长度
}void write(Stu s[],int n)//文件写
{FILE *fp;int i;if(n==0)return;//如果没有记录  不需要写入if ((fp = fopen("student.txt", "w+")) == NULL)//打开文件 打开失败则返回 w+:会自动创建新文件或者覆盖旧文件{return;}for (i = 0; i < n-1; i++)//循环写入文件{fprintf(fp,"%-10d %-10d %-10s %-10s %-10f %-10f %-10f\n",s[i].cno,s[i].sno,s[i].name,s[i].sex,s[i].money[0],s[i].money[1],s[i].money[2]);}//最后一行不写入回车 不然读取的时候会读取一行乱码fprintf(fp,"%-10d %-10d %-10s %-10s %-10f %-10f %-10f",s[i].cno,s[i].sno,s[i].name,s[i].sex,s[i].money[0],s[i].money[1],s[i].money[2]);fclose(fp);										//关闭文件
}/*添加新学生缴费信息*/
int addnew(Stu s[],int n)
{system("cls");printf("请输入班级:");scanf("%d",&s[n].cno);//直接放在数组尾部s[n]printf("请输入学号:");scanf("%d",&s[n].sno);printf("请输入姓名:");scanf("%s",s[n].name);printf("请输入性别:");scanf("%s",s[n].sex);printf("请输入应缴金额:");scanf("%f",&s[n].money[0]);printf("请输入实缴金额:");scanf("%f",&s[n].money[1]);s[n].money[2]=s[n].money[1]-s[n].money[0];//自动计算找零printf("录入成功!\n");system("pause");return n+1;//缴费记录加1
}/*显示全部学生缴费信息*/
void display(Stu s[],int n)
{int i;system("cls");printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","班级","学号","姓名","性别","应缴金额","实缴金额","找零金额");for(i=0;i<n;i++){printf("%-10d%-10d%-10s%-10s%-10.2f%-10.2f%-10.2f\n",s[i].cno,s[i].sno,s[i].name,s[i].sex,s[i].money[0],s[i].money[1],s[i].money[2]);}system("pause");/*暂停屏幕函数*/
}
/*菜单  让用户观看*/
void menu()
{printf("1:添加缴费记录\n");printf("2:查看缴费记录\n");printf("3:删除缴费记录\n");printf("4:查询缴费记录\n");printf("5:统计缴费记录\n");printf("0:退出\n");printf("请输入选项:");
}/*删除学生缴费信息*/
int delRecord(Stu s[],int n)
{int i,cno,sno,flag=0;system("cls");printf("请输入要删除的班号以及学生编号:");scanf("%d%d",&cno,&sno);for(i=0;i<n;i++){if(s[i].cno==cno&&s[i].sno==sno)//判断学号和班级号是否一致{flag=1;//记录找到过记录printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","班级","学号","姓名","性别","应缴金额","实缴金额","找零金额");printf("%-10d%-10d%-10s%-10s%-10.2f%-10.2f%-10.2f\n",s[i].cno,s[i].sno,s[i].name,s[i].sex,s[i].money[0],s[i].money[1],s[i].money[2]);}}if(flag==0)//如果没找到{printf("无该学生缴费记录!\n");system("pause");return n;}for(i;i<n;i++)//按次序覆盖删除 就是用每一个元素的后一个元素 覆盖自己 1 2 3变成 2 3 3 长度-1 变成2 3s[i]=s[i+1];printf("删除成功!\n");system("pause");/*暂停屏幕函数*/return n-1;//长度-1
}/*查询学生缴费信息*/
void find(Stu s[],int n)
{int i,cno,sno,flag=0;system("cls");printf("请输入要查询的班号以及学生编号:");scanf("%d%d",&cno,&sno);for(i=0;i<n;i++){if(s[i].cno==cno&&s[i].sno==sno){flag=1;printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","班级","学号","姓名","性别","应缴金额","实缴金额","找零金额");printf("%-10d%-10d%-10s%-10s%-10.2f%-10.2f%-10.2f\n",s[i].cno,s[i].sno,s[i].name,s[i].sex,s[i].money[0],s[i].money[1],s[i].money[2]);}}if(flag==0){printf("无该学生缴费记录!\n");system("pause");}system("pause");/*暂停屏幕函数*/
}/*统计学生缴费信息*/
void total(Stu s[],int n)
{int i;float sum=0;system("cls");for(i=0;i<n;i++){sum+=s[i].money[0];//累加所有的金额}printf("共有%d条缴费记录\n",n);printf("共计收费%.2f元\n",sum);system("pause");/*暂停屏幕函数*/
}/*主函数*/
int main()
{int choice;Stu stu[100];int n=read(stu);//读取文件数据do{system("cls");menu();scanf("%d",&choice);switch(choice)//根据选择进入相应的功能{case 1:n=addnew(stu,n);break;case 2:display(stu,n);break;case 3:n=delRecord(stu,n);break;case 4:find(stu,n);break;case 5:total(stu,n);break;}}while(choice!=0);write(stu,n);//写入文件return 0;
}

这篇关于学生缴费注册系统的开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025138

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详