C语言课程设计---学生信息管理系统

2023-11-10

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
#include <conio.h>




typedef struct student
{
	char id[20];//学号
	char name[10];//姓名
	char sex[10];//性别
	char bothdate[20];//出生年月
	char jor[20];//专业
	char like[50];//爱好
	int sore;//成绩
	float money;//消费记录

}student;

student soredata[200];//存蓄成绩数据
student moneydata[200];//存储消费金额数据
int snum;//成绩数据个数
int mnum;//消费数据个数



void SorePrintf(student p)
{
	printf("--------------------------------------------\n");
	printf("学号:%s  姓名:%s  性别: %s\n",p.id,p.name,p.sex);
	printf("出生年月:%s  专业:%s  爱好: %s\n",p.bothdate,p.jor,p.like);
	printf("成绩: %d\n",p.sore);
	printf("--------------------------------------------\n");
}

void MoneyPrintf(student p)
{
	printf("--------------------------------------------\n");
	printf("学号:%s  姓名:%s  性别: %s\n",p.id,p.name,p.sex);
	printf("出生年月:%s  专业:%s  爱好: %s\n",p.bothdate,p.jor,p.like);
	printf("消费额: %.1f\n",p.money);
	printf("--------------------------------------------\n");
}




void read()//读文件数据
{

		//文件
	FILE *fp;
	
	//以读的方式打开文件
	fp=fopen("score.txt","r"); 
	if(fp==NULL)
	{
	    printf("打开文件失败!\n");
	    return;   
	}

	snum =0;
    while(!feof(fp))    
	{   
	   //读文件数据到数组

		fscanf(fp,"%s%s%s",soredata[snum].id,soredata[snum].name,soredata[snum].sex); 
		fscanf(fp,"%s%s%s",soredata[snum].bothdate,soredata[snum].jor,soredata[snum].like); 
		fscanf(fp,"%d",&soredata[snum].sore);
		snum++;//个数加1
	}

	//关闭文件
	fclose(fp);


		//以读的方式打开文件
	fp=fopen("money.txt","r"); 
	if(fp==NULL)
	{
	    printf("打开文件失败!\n");
	    return;   
	}

	mnum =0;
    while(!feof(fp))    
	{   
	   //读文件数据到数组

		fscanf(fp,"%s%s%s",moneydata[mnum].id,moneydata[mnum].name,moneydata[mnum].sex); 
		fscanf(fp,"%s%s%s",moneydata[mnum].bothdate,moneydata[mnum].jor,moneydata[mnum].like); 
		fscanf(fp,"%f",&moneydata[mnum].money);
		mnum++;//个数加1
	}

	//关闭文件
	fclose(fp);

}



void SaveScore()//保存数据
{
			//文件
	FILE *fp;
	int i;
	
	//以读的方式打开文件
	fp=fopen("score.txt","w"); 
	if(fp==NULL)
	{
	    printf("打开文件失败!\n");
	    exit(0);   
	}

	for(i=0;i<snum-1;i++)
	{
		fprintf(fp,"%s  %s  %s  ",soredata[i].id,soredata[i].name,soredata[i].sex); 
		fprintf(fp,"%s  %s  %s  ",soredata[i].bothdate,soredata[i].jor,soredata[i].like); 
		fprintf(fp,"%d\n",soredata[i].sore);
	 
	}
	fprintf(fp,"%s  %s  %s  ",soredata[i].id,soredata[i].name,soredata[i].sex); 
	fprintf(fp,"%s  %s  %s  ",soredata[i].bothdate,soredata[i].jor,soredata[i].like); 
	fprintf(fp,"%d",soredata[i].sore);


	//关闭文件
	fclose(fp);
	
}


void SaveMoney()//保存数据
{
			//文件
	FILE *fp;
	int i;
	
	//以读的方式打开文件
	fp=fopen("money.txt","w"); 
	if(fp==NULL)
	{
	    printf("打开文件失败!\n");
	    exit(0);   
	}

	for(i=0;i<mnum-1;i++)
	{
		fprintf(fp,"%s  %s  %s  ",moneydata[i].id,moneydata[i].name,moneydata[i].sex); 
		fprintf(fp,"%s  %s  %s  ",moneydata[i].bothdate,moneydata[i].jor,moneydata[i].like); 
		fprintf(fp,"%.1f\n",moneydata[i].money);
	 
	}
	fprintf(fp,"%s  %s  %s  ",moneydata[i].id,moneydata[i].name,moneydata[i].sex); 
	fprintf(fp,"%s  %s  %s  ",moneydata[i].bothdate,moneydata[i].jor,moneydata[i].like); 
	fprintf(fp,"%.1f",moneydata[i].money);


	//关闭文件
	fclose(fp);
	
}




void AddScore()
{
	

	printf("请输入学号:");
	scanf("%s",soredata[snum].id);
	printf("请输入姓名:");
	scanf("%s",soredata[snum].name);
	printf("请输入性别:");
	scanf("%s",soredata[snum].sex);

	printf("请输入出生年月(2000-02):");
	scanf("%s",soredata[snum].bothdate);
	printf("请输入专业:");
	scanf("%s",soredata[snum].jor);
	printf("请输入爱好:");
	scanf("%s",soredata[snum].like);

	printf("请输入成绩:");
	scanf("%d",&soredata[snum].sore);
	snum++;//加1
	SaveScore();
	printf("添加成功\n");
	printf("任意键回到菜单....\n");
	getch();
}


void AddMoney()
{
	

	printf("请输入学号:");
	scanf("%s",moneydata[mnum].id);
	printf("请输入姓名:");
	scanf("%s",moneydata[mnum].name);
	printf("请输入性别:");
	scanf("%s",moneydata[mnum].sex);

	printf("请输入出生年月(2000-02):");
	scanf("%s",moneydata[mnum].bothdate);
	printf("请输入专业:");
	scanf("%s",moneydata[mnum].jor);
	printf("请输入爱好:");
	scanf("%s",moneydata[mnum].like);

	printf("请输入消费金额:");
	scanf("%f",&moneydata[mnum].money);

	mnum++;
	SaveMoney();
	
	printf("添加成功\n");
	printf("任意键回到菜单....\n");
	getch();
}



void FindScore()//查询
{

	int i;
	char id[20];
	printf("请输入需要查询的学号:\n");
	scanf("%s",id);


	for(i =0;i<snum;i++)
	{
		if(strcmp(soredata[i].id,id) == 0)
		{
			printf("查找到的信息如下:\n");
			SorePrintf(soredata[i]);
			printf("任意键回到菜单....\n");
			getch();
			return;


		}

	}

	printf("信息不存在\n");
	printf("任意键回到菜单....\n");
	getch();


}


void FindMoney()//查询
{

	int i;
	char id[20];
	printf("请输入需要查询的学号:\n");
	scanf("%s",id);


	for(i =0;i<mnum;i++)
	{
		if(strcmp(moneydata[i].id,id) == 0)
		{
			printf("查找到的信息如下:\n");
			MoneyPrintf(moneydata[i]);
			printf("任意键回到菜单....\n");
			getch();
			return;


		}

	}

	printf("信息不存在\n");
	printf("任意键回到菜单....\n");
	getch();


}





void FixScore()//修改 
{
	int i;
	char id[20];
	printf("请输入需要修改的学号:\n");
	scanf("%s",id);


	for(i =0;i<snum;i++)
	{
		if(strcmp(soredata[i].id,id) == 0)
		{
			printf("修改前信息如下:\n");
			SorePrintf(soredata[i]);

			printf("请输入修改后的成绩:\n");
			scanf("%d",&soredata[i].sore);
			
			SaveScore();//保存
			printf("修改成功");
			printf("任意键回到菜单....\n");
			getch();
			return;


		}

	}

	printf("信息不存在\n");
	printf("任意键回到菜单....\n");
	getch();


}



void FixMoney()//修改 
{

	int i;
	char id[20];
	printf("请输入需要修改的学号:\n");
	scanf("%s",id);


	for(i =0;i<mnum;i++)
	{
		if(strcmp(moneydata[i].id,id) == 0)
		{
			printf("查找到的信息如下:\n");
			MoneyPrintf(moneydata[i]);
			printf("请输入修改后的消费金额:\n");
			scanf("%f",&moneydata[i].money);
			
			SaveMoney();//保存
			printf("修改成功\n");
			printf("任意键回到菜单....\n");
			getch();
			return;


		}

	}

	printf("信息不存在\n");
	printf("任意键回到菜单....\n");
	getch();


}





void DeleScore()//删除 
{
	int i;
	char id[20];
	printf("请输入需要删除的学号:\n");
	scanf("%s",id);


	for(i =0;i<snum;i++)
	{
		if(strcmp(soredata[i].id,id) == 0)
		{
			printf("删除信息如下:\n");
			SorePrintf(soredata[i]);

			for(;i<snum;i++)
			{
				soredata[i] = soredata[i+1];
			}
			snum--;
			SaveScore();

			printf("删除成功\n");
			printf("任意键回到菜单....\n");
			getch();
			return;


		}

	}

	printf("信息不存在\n");
	printf("任意键回到菜单....\n");
	getch();
}




void DeleMoney()//删除 
{

	int i;
	char id[20];
	printf("请输入需要删除的学号:\n");
	scanf("%s",id);


	for(i =0;i<mnum;i++)
	{
		if(strcmp(moneydata[i].id,id) == 0)
		{
			printf("删除信息如下:\n");
			MoneyPrintf(moneydata[i]);

			for(;i<mnum;i++)
			{
				moneydata[i] = moneydata[i+1];
			}


			mnum--;
			SaveMoney();//保存
			printf("删除成功\n");
			printf("任意键回到菜单....\n");
			getch();
			return;


		}

	}

	printf("信息不存在\n");
	printf("任意键回到菜单....\n");
	getch();
}


void ShowScore()
{
	int i;
	int total=0;

	for(i =0;i<snum;i++)
	{
		
		SorePrintf(soredata[i]);
		total = total + soredata[i].sore;//计算总成绩
		
	}
	printf("总成绩:%d\n",total);

	
	printf("任意键回到菜单....\n");
	getch();


}


void ShowMoney()
{
	int i;
	float total=0;

	for(i =0;i<mnum;i++)
	{
		
		MoneyPrintf(moneydata[i]);
		total = total + moneydata[i].money;//计算总成绩
		
	}
	printf("总消费金额:%.1f\n",total);

	
	printf("任意键回到菜单....\n");
	getch();


}


void ScoreMenu()
{

	char ch;
	system("cls");
	printf("**************************************\n");
	printf("**      欢迎来到学生成绩模块        **\n");
	printf("**                                  **\n");
	printf("**         1.添加信息               **\n");
	printf("**                                  **\n");
	printf("**         2.查询信息               **\n");
	printf("**                                  **\n");
	printf("**         3.修改信息               **\n");
	printf("**                                  **\n");
	printf("**         4.删除信息               **\n");
	printf("**                                  **\n");
	printf("**         5.显示所有               **\n");
	printf("**                                  **\n");
	printf("**         6.返回上一层             **\n");
	printf("**                                  **\n");
	printf("**         7.退出系统               **\n");
	printf("**                                  **\n");
	printf("**************************************\n");
	printf("请输入序号: ");
	//输入选择
	scanf("%c",&ch);
	switch(ch){
	case '1':
		AddScore();
		break;
	case '2':
		FindScore();
		break;
	case '3':
		FixScore(); 
		break;
	case '4':
		DeleScore();
		break;
	case '5':
		ShowScore();
		break;

	case '6':
		return;
		break;
	case '7':
		exit(0);
		break;


	default:
		break;
	}

	ScoreMenu();
}




void MoneyMenu()
{

	char ch;
	system("cls");
	printf("**************************************\n");
	printf("**      欢迎来到学生消费管理模块    **\n");
	printf("**                                  **\n");
	printf("**         1.添加信息               **\n");
	printf("**                                  **\n");
	printf("**         2.查询信息               **\n");
	printf("**                                  **\n");
	printf("**         3.修改信息               **\n");
	printf("**                                  **\n");
	printf("**         4.删除信息               **\n");
	printf("**                                  **\n");
	printf("**         5.显示所有               **\n");
	printf("**                                  **\n");
	printf("**         6.返回上一层             **\n");
	printf("**                                  **\n");
	printf("**         7.退出系统               **\n");
	printf("**                                  **\n");
	printf("**************************************\n");
	printf("请输入序号: ");
	//输入选择
	scanf("%c",&ch);
	switch(ch){
	case '1':
		AddMoney();
		break;
	case '2':
		FindMoney();
		break;
	case '3':
		FixMoney(); 
		break;
	case '4':
		DeleMoney();
		break;
	case '5':
		ShowMoney();
		break;

	case '6':
		return;
		break;
	case '7':
		exit(0);
		break;


	default:
		break;
	}

	MoneyMenu();
}


void Menu()
{

	char ch;

	system("cls");
	printf("**************************************\n");
	printf("**      欢迎来到学生信息系统        **\n");
	printf("**                                  **\n");
	printf("**         1.成绩管理模块           **\n");
	printf("**                                  **\n");
	printf("**         2.消费管理模块           **\n");
	printf("**                                  **\n");
	printf("**         3.退出系统               **\n");
	printf("**                                  **\n");
	printf("**************************************\n");
	printf("请输入序号: ");
	//输入选择
	scanf("%c",&ch);
	switch(ch){
	case '1':
		ScoreMenu();
		break;
	case '2':
		MoneyMenu();
		break;
	case '3':
		 exit(0);
		break;

	default:
		break;
	}
	Menu();
}
int main()
{		
	read();
	Menu();
	while(1);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言课程设计---学生信息管理系统 的相关文章

随机推荐

  • 无线ap ntp服务器,我有一优科 ZoneFlex 7982 的无线AP,怎样可以进AP系统进行设置...

    满意答案 zisedeL 2015 10 09 采纳率 49 等级 7 已帮助 308人 1 用手机或笔记本连上优科 产品反面MAC地址后6位 的无线信号 2 1 xp系统 右击网络邻居选择属性 看到无线网络连接再右击选择属性 选择Inte
  • pygame游戏模块详解

    目录 一 下载pygame第三方模块 二 pygame模块知识点化 把模块分为n多个知识点 1 使用pygame知识制作一个可以关闭的空白窗体 这里我就不用文字说明了 直接上代码 简洁明了 2 使用精灵显示背景 背景的循环展示 3 使用精灵
  • Win11:软件图标丢失

    问题描述 Win11 软件图标丢失 有空白的 也有带图案的 问题截图 开始页面 桌面 问题原因 文件路径权限丢失 权限异常 解决方案 有用 添加权限 文件夹右键 属性 安全 高级 更改 高级 立即查找 选择当前登录账户 一路点击确定 应用即
  • PFR简介---Cisco技术

    什么是 PfR Performance Routing PfR 是 Cisco Systems 的最新 WAN 线路优化技术 能够发挥现有 Cisco 设备的作用 该技术可以优化两条或更多条 WAN 连接之间的流量 既可以节省带宽成本 又能
  • 恶意流量监测开源系统:Maltrail

    20210309 0 引言 一般来说 通过IDS来监测一些攻击流量 或者说恶意流量也是可以的 但是现在看到的这个开源软件 1 是专门利用IOC来识别恶意流量 具体细节我没有深入去研究 例如流量捕获部分到底是什么引擎来启动的 1 系统简介 在
  • 【STM32+cubemx】0020 HAL库开发:以太网ENC28J60芯片和TCP、UDP简单应用

    MCU通过以太网通信有很多种方式 有的内部自带以太网接口 如stm32f107的某些型号 如果没有 也可以在外围连接以太网芯片来实现 外接的以太网芯片 又分为带网络协议栈和不带协议栈的 带网络协议栈的典型如W5500 不带网络协议栈的典型的
  • python数据分页pandas_使用python pandas&刮分页网页表美丽的汤

    I am a beginner in python pandas i am trying to scrap a paginated table using beautiful soup package the data is scraped
  • 有了它,你还想用postman吗

    Apifox 介绍 Apifox 是 API 文档 API 调试 API Mock API 自动化测试一体化协作平台 定位 Postman Swagger Mock JMeter 通过一套系统 一份数据 解决多个系统之间的数据同步问题 只要
  • Java常见面试题汇总-----------数据库(数据库索引及其实现)

    54 数据库索引 索引的优缺点 优点 1 大大加快数据的检索速度 2 创建唯一性索引 保证数据库表中每一行数据的唯一性 3 加速表和表之间的连接 4 在使用分组和排序子句进行数据检索时 可以显著减少查询中分组和排序的时间 缺点 1 索引需要
  • 应用程序如何调用驱动

    以write函数举例 详细调用流程 insmod驱动程序 申请设备名 设备号以及指定fops方法 这些可以在 proc devices中获得 从 proc devices中获得主设备号 并使用mknode命令来建立设备节点文件 这是通过主设
  • 软件测试第一次做项目之银行项目【操作细节总结】

    在我们的日常在金融或银行软件测试工作中都有哪些内容需要测试 在这些测试的内容中如何去更好的掌握测试技能保证测试质量 一起来学习探讨交流 下面为银行测试点的概括 根据上图 我们可以从以下几个方面重点关注 1 管理端的测试主要是在管理后端对用户
  • osgEarth的Rex引擎原理分析(四十八)osgEarth::Drivers::RexTerrainEngine::DrawState的作用

    目标 四十五 中的110 每帧都会创建一个DrawState 创建在TerrainRenderData setup 这里存在内存泄漏的问题 因为只有new没有delete 不存在的 drawState是智能指针 超出范围时会自动销毁 也就是
  • Windows Update Blocker,windows系统关闭自动更新工具

    今天打开电脑发现系统又自动更新了 这一天天更新真的太烦了 然后我从网上找到一个工具 可以自由开启和关闭系统自动更新 这里分享一下网址 https www filehorse com download windows update block
  • ScriptableObject保存数据的几个坑

    public class GraphData ScriptableObject public string Title HideInInspector public string hide private int pri public Ty
  • 互联网摸鱼日报(2022-10-16)

    互联网摸鱼日报 2022 10 16 博客园新闻 百度商标维权获赔超千万 又一公司冒用 百度 一审被判赔60万 Meta首席产品设计主管 副总裁宣布将离职 Temu冲至美区苹果商店购物类前五 拼多多的低价策略在海外也奏效了 特斯拉 撞车 疑
  • flex 实现三栏等分布局

    ul li 左 li li 中 li li 右 li ul 将下列布局三等分如下图 方法一 父子元素宽度设为相等宽度 父元素 display flex 子元素 flex auto 即 flex 1 1 auto 解析 可以看到width的设
  • 电容传感器

    背景介绍 去年 博后师兄从新西兰购买了一款电容传感器 能够对大变形进行测量 可以用来人体动作捕捉 在智能穿戴 医疗复健等领域具有广阔的应用前景 本推文对相关内容进行介绍 具体如下图所示 电容传感器主要包含两部分内容 1 传感器部分 师兄对电
  • 重装ubuntu后Samba从windows不能登录

    Samba登录问题 ubuntu被搞挂了 重装了下 apt get samba后导入之前的smb conf竟然在windows里无法登录 折腾了几个小时后突然发现sb服务器竟然没有从linux里自动倒入密码 所以如下路径 新装ubuntu后
  • Virtio SCSI设备介绍

    emu的存储栈 在KVM虚拟化环境中 当客户机的内核存储系统像在物理机上一样通过页缓存 文件系统 通用块设备层运行到实际设备驱动时 这时驱动对设备寄存器的访问会触发CPU从客户机代码切换到物理机内的KVM内核模块 进而这个I O请求会被分发
  • C语言课程设计---学生信息管理系统

    include