学生缴费注册系统的开发

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

相关文章

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具