C语言文件
一、代码展示
#include<stdio.h> #include<stdlib.h> #include<string.h> struct students { //定义结构体 char name[20]; char num[15]; char sex[10]; char Class[10]; char score[10]; }; void menu(); //主页面 void beauty();//改变字体和背景颜色,窗口大小 void add_to();//录入 void query();//查询 int main() { beauty(); int n = 3; while (n>0) { menu(); int x; scanf("%d", &x); switch (x) //功能选择 { case 1: query(); break; case 2: add_to(); break; case 0: printf("已退出!\n"); return 0; break; default: printf("输入错误,请重新输入!");//输入错位提示 system("pause");//冻住窗口,防止直接跳过 break; } n--; } } void beauty() { system("mode con cols=80 lines=34");//DOS窗口的尺寸会变为34行79列 system("color 70");//7指改变背景为白色,0指改变字体颜色为黑色。 } void menu() { printf("--------------------------------------------------------------------------------\n"); printf("********************************************************************************\n"); printf("--------------------------------------------------------------------------------\n"); printf(" 欢迎使用成绩查询录入系统\n"); printf(" 请选择您的业务:\n"); printf(" [1].查询\n"); printf(" [2].录入\n"); printf(" [0].退出\n\n\n\n"); printf("--------------------------------------------------------------------------------\n"); printf("********************************************************************************\n"); printf("--------------------------------------------------------------------------------\n"); } void add_to() { system("cls");//清空界面 char name1[10][20]; char name2[10][20]; char sex[10]; char num[15]; char Class[10]; char score[10]; int n; struct students a[500]; FILE* fp; printf("添加的人数:"); scanf("%d", &n); printf(" 姓名 学号 性别 班级 线代成绩\n"); for (int i = 0; i < n; i++) { printf("\n"); printf(" "); scanf("%s", name1[i]);//输入姓名 strcpy(name2[i], name1[i]); strcat(name1[i], ".txt");//将txt文件用名字命名 FILE* fp = fopen(name1[i], "w+"); fclose(fp); if ((fp = fopen(name1[i], "r+")) == NULL) { printf("File open error!\n"); exit(0); } scanf(" %s %s %s %s", &a[i].num,&a[i]. sex,&a[i].Class, &a[i].score); fprintf(fp, "%s %s %s %s", &a[i].num, &a[i].sex, &a[i].Class, &a[i].score);//将数据存入文本文档 if (fclose(fp)) { printf("Can not close the file!\n"); exit(0); } } printf("\n 添加成功!\n");//提示添加成功 exit(0); } void query() { system("cls"); char name1[20]; char name2[20]; char sex[10]; char num[15]; char Class[10]; char score[10]; int i; printf("请输入查询个数:"); scanf("%d", &i); struct students a[500]; FILE* fp; printf("请输入姓名:"); while (i > 0) { scanf("%s", name1); strcpy(name2, name1); strcat(name1, ".txt"); if ((fp = fopen(name1, "r")) == NULL) { printf("Failed to open file\n"); } fp = fopen(name1, "r");//打开对应文本文档 fscanf(fp, "%s %s %s %s", &a[i].num, &a[i].sex, &a[i].Class, &a[i].score);//从文件中读取数据 printf(" 姓名 学号 性别 班级 线代成绩\n"); printf(" %s %s %s %s %s", name2, a[i].num, a[i].sex, a[i].Class, a[i].score); fclose(fp); i--; } system("pause");//暂停页面,防止退出 exit(1); }
二、运行截图
任务一
任务二
任务三
主页及提示
查询
录入
三、system()
1.system("pause"):暂停界面,可以停留仔细查看信息。
2.system(“cls”)清除界面,是界面信息更直观简洁。
3.system(“date”)显示使用时间,防成谜。
4.system( "color ab") a是背景颜色,b是字体颜色。
四、总结
1.通过学习书本和询问他人,学会了基本的建立、写入、读取文件。
2.运用结构体,将不同函数之间联系起来,读写数据更为方便。
3.学会了system(),改变运算窗口的设置,是运算更为美观。
4.了解缓冲区以及EOF概念,并未用到二进制文件,但对其有初步了解。