C语言实战——学生管理系统

C语言实战

学生管理系统

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

struct Stu
{
	char name[32];
	char num[24];
	int grade;
};


int main()
{
	int max = 0,min;
	int sum = 0;
	int t;
	float ave = 0;
	char a[30];
	printf("请输入文件名\n");
	scanf("%s",a);
	strcat(a,".csv");
	
	
	int n;
	printf("请输入学生人数\n");
	scanf("%d",&n);
	struct Stu str[n];
	min = n-1;
	
	
	FILE *pFile = fopen(a,"w");
	printf("使用方法:同一行的不同数据之间使用空格来隔开\n下一行使用回车键来换行\n");
	printf("请输入数据 (姓名 学号 成绩)\n");
	
	system("pause");
	system("cls");
	
	
	int i;
	for(i = 0 ; i < n ; i++)
	{
		fflush(stdin);
		scanf("%s %s %d",&str[i].name,&str[i].num,&str[i].grade);
		sum+=str[i].grade;
	}
	ave = (float)sum/(float)n;
	
	
	
	for(i = 0 ; i < n ; i++)
	{
		if(str[max].grade < str[i].grade)
		{
			max = i;
		}
		
		if(str[min].grade > str[i].grade)
		{
			min = i;
		}
	}
	
	
	fprintf(pFile, "姓名,学号,成绩\n");
	for(i = 0 ; i < n ; i++)
	{
		fprintf(pFile,"%s,'%s,%d\n",str[i].name,str[i].num,str[i].grade);	
	} 
	fputs("\n",pFile);
	fprintf(pFile,",,average=%.2f\n",ave);
	fprintf(pFile,"%s,'%s,%d\n",str[max].name,str[max].num,str[max].grade);
	fprintf(pFile,"%s,'%s,%d\n",str[min].name,str[min].num,str[min].grade);
	
	
	char* buffer = getcwd(NULL,0);
	printf("输入成功,请查看文件,保存目录为:%s\\%s",buffer,a);
	fclose(pFile);
	system("pause");
	return 0;
} 
  • 这是一个比较简单的使用文件操作来进行csv文件的读写程序。下面介绍知识点:
  1. 结构体数组,使用了一个数组来装每个学生的信息,这也是很多c语言程序中都有的一个技巧。
  2. 文件名拼接,使用了strcat函数,在输入的文件名后面拼接上后缀,确保我们创建的是既能使用EXCEL打开,又能被c语言写入的csv文件
  3. 还是要注意fopen的第二个参数,如果是要在上一个程序中写入没写完的数据,应使用"a"
  4. 使用了暂停,和清屏指令,提高程序可执行性。
  5. 使用fprintf时,一定要注意在数据之间,使用英文输入法下的逗号,隔开,这样在csv里面会自动当成本行中的下一列,换行要使用\n
  6. 在最后使用了函数getcwd,其作用是返回当前操作位置的路径的地址,所以使用指针变量取装,该函数的参数意义不大,所以我们直接分别写NULL,0即可。
  7. 最后一定不要忘记fclose函数,有打开一定有关闭。
  8. 在最后还要加上system("pause");指令,防止程序在scanf进行完之后直接闪退,不要养成dev带来的坏习惯。
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lanciberrr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值