C语言文件
1,主要代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> struct student{//结构定义 char name[10]; char num[10]; char sex[10]; char cla[10]; char score[10]; }; void Check();//定义三个函数用于执行三个功能 :查询,新建文件,修改界面 void Make(); void Menu(); int main(){ int n; struct student stu[10]; printf("---------------------------------------------------------------- "); printf(" 欢迎使用学生成绩查询与管理系统 "); printf("1 查询成绩 "); printf(" 2 新建成绩文件 "); printf(" 3 界面颜色修改 "); printf(" 4 退出 "); printf("输入相应数字执行下一步: "); scanf("%d",&n); switch(n)// 输入数字执行相应函数 { case 1:Check();break; case 2:Make();break; case 3:Menu();break; case 4:printf("退出系统 ");exit(0); default :printf("输入错误!");system("pause");break; } return 0; } void Check()//查询函数 { system("cls");//system函数实现清屏操作 char name1[20][20]; char name2[20][20]; char num[10]; char sex[10]; char cla[10]; char score[10]; int i; struct student stu1[100]; FILE *fp1;//文件 printf("请输入你要查询的数目: "); scanf("%d",&i); while(i>0) { printf("请输入查询者的姓名: "); scanf("%s",&name1[i]); strcpy(name2[i],name1[i]);//将姓名复制以便后续输出 strcat(name1[i],".txt"); if((fp1=fopen(name1[i],"r"))==NULL)//若文件为空 { printf("此人无信息 "); } fp1=fopen(name1[i],"r"); fscanf(fp1, "%s %s %s %s", &stu1[i].num, &stu1[i].sex, &stu1[i].cla, &stu1[i].score);//提取文件中的数据 printf(" 姓名 学号 性别 班级 成绩 "); printf("%s %s %s %s %s ",name2[i],stu1[i].num,stu1[i].sex,stu1[i].cla,stu1[i].score);//表达文件数据 fclose(fp1);//关闭文件 i--; } printf("查询结束"); system("pause");//冻结屏幕 exit(1); } void Make()//新建文件函数 { system("cls");//清屏操作 FILE *fp2; char name[10][10]; char name3[20][20]; char num[10]; char sex[10]; char cla[10]; char score[10]; int n,i,j; printf("请输入你要新建的数目: "); scanf("%d",&n); printf("姓名 学号 性别 班级 成绩 ");
j=1; for(i=0;i<n;i++) { scanf("%s",name[i]); strcpy(name3[i],name[i]); strcat(name[i],".txt");//命名加上“txt” FILE *fp2=fopen(name[i],"w+");//建立文件 fclose(fp2); if((fp2=fopen(name[i],"r+"))==NULL) { printf("无法建立文件 "); exit(0); } printf(" "); scanf(" %s %s %s %s",&num[i],&sex[i],&cla[i],&score[i]); fprintf(fp2,"%s %s %s %s ",&num[i],&sex[i],&cla[i],&score[i]);//输入进入文件 if(fclose(fp2)){ printf("无法关闭文件! "); exit(0); } printf("成功 已建立%d个文件 ",j); //统计已建立的文件数 j++; } } void Menu() { system("color 70");//改变界面颜色 }
2,运行截图展示:
基础界面:
任务1,2:建立txt文件,并写入数据。
任务3:读取数据并存入数组(查询)
利用fscanf对文件进行读取。
任务4:system函数
颜色切换
以及程序中所使用的system("cls") 清屏
system("pause") 冻结窗口
system("color ab") 切换界面颜色和字体颜色
等......
3,总结
这一次在写代码的过程中遇到了很多困难,很多不熟悉的知识点,为了解决它们我翻了不少书,问了不少人,还看了很多同学的代码来寻找解决办法。在这一次的作业中我也了解了打开文件并写入和读取的方法,掌握了一些有关文件缓存区和EOF的知识,也学会了如何使用system函数去执行一些简单的指令来改变窗口样貌。但是,我的程序执行时的美观度还是不够高,结构体的运用仍不够娴熟,代码也不够简洁完美,我会在之后的课程中总结学习以便加以改进。