一、代码展示
#include<stdio.h> #include<stdlib.h> #include<string.h> struct student { char name[20]; int number; int clas; char gender[10]; char score[20]; }; int i; void menu(){ //目录 printf(" ☆★☆★☆★☆★☆★☆★☆★☆ ★ "); printf(" ★欢迎使用学生成绩信息管理系统 ☆ "); printf(" ☆ 请选择您所使用的服务: ★ "); printf(" ★ 查询[1] ☆ "); printf(" ☆ 添加or修改[2] ★ "); printf(" ★ 退出[0] ☆ "); printf(" ☆★☆★☆★☆★☆★☆★☆★☆ ★ "); } void Txt_Write() //写入txt { system("cls"); int n,j; char name1[20]; char name2[20]; int num,clas; char sex[10]; char score[20]; FILE *fp; struct student stu[500]; printf("请输入所添加的人数: "); scanf("%d",&n); j=n-1; if(n>9) { printf("一次输入这么多,你不累我都累了!!! "); printf("在秃头之路上“猪突猛进”!!! "); } for(i=1;i<=n;i++) { printf("请输入 姓名 学号 班级 性别 线代成绩: "); scanf("%s",name1); strcpy(name2,name1); strcat(name1,".txt"); if ((fp = fopen(name1,"w")) == NULL) { printf("查无此人!!! "); } fprintf(fp,"姓名 学号 班级 性别 线代成绩 "); scanf("%d%d%s%s",&num,&clas,sex,score); fprintf(fp,"%-10s%-10d%-10d%-10s%s",name2,num,clas,sex,score); //数据对齐 fclose(fp); fp = fopen(name1,"r"); fscanf(fp,"%*[^ ]"); //略过第一行 fscanf(fp,"%s %d %d %s %s",&stu[i].name,&stu[i].number,&stu[i].clas,&stu[i].gender,&stu[i].score); printf("姓名 学号 班级 性别 线代成绩 "); printf("%-10s%-10d%-10d%-10s%s ",stu[i].name,stu[i].number,stu[i].clas,stu[i].gender,stu[i].score); system("pause"); system("cls"); if(j>0) { printf("剩余输入:%d ",j--); } } system("cls"); if(n==0){ printf("好玩吗?GUN呐!!! "); system("pause"); system("cls"); return menu(); } else{ printf("数据已更新!!! "); system("pause"); system("cls"); return menu(); } } void Txt_Read() //读取txt { system("cls"); char name1[20]; char name2[20]; int num,clas; char sex[10]; char score[20]; FILE *fp; struct student stu[200]; while(1) { printf("请输入所查询姓名(输入*退出查询!):"); scanf("%s",name1); strcpy(name2,name1); if(name2[0]=='*'&&name2[1]!=0){ system("cls"); printf("哪个憨憨名字是这样的!!! ") ; system("pause"); system("cls"); return menu();//返回目录 } if(name2[0]=='*'&&name2[1]==0){ system("cls"); return menu();//返回目录 } strcat(name1,".txt"); if ((fp = fopen(name1,"r")) == NULL) { system("cls"); printf("查无此人!!! "); system("pause"); return Txt_Read(); } fp = fopen(name1,"r"); fscanf(fp,"%*[^ ]"); //略过第一行 fscanf(fp,"%s %d %d %s %s",&stu[i].name,&stu[i].number,&stu[i].clas,&stu[i].gender,&stu[i].score); printf("姓名 学号 班级 性别 线代成绩 "); printf("%-10s%-10d%-10d%-10s%s ",stu[i].name,stu[i].number,stu[i].clas,stu[i].gender,stu[i].score); fclose(fp); system("pause"); system("cls"); } exit(0); } int main() { system("color FD"); //界面颜色 int n; menu(); while(1) { scanf("%d", &n); switch(n) { case 1: Txt_Read(); break; case 2: Txt_Write(); break; case 0: system("cls"); printf("告辞!!! "); return 0; default: printf("输入错误!!! "); break; } } return 0; }
二、运行展示
添加or修改功能,输入相同名字可进行修改。
查询功能,输入*可返回目录。
退出。
创建的txt文件。
对应的信息。
三、system()
system("pause")
使程序在此时暂停,使程序有阶段的进行。
system("CLS")
可以实现清屏操作。
system("color ab");
其中color后面的a是背景色,b是字体色。
0=黑色 8=灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
四、总结
1.了解文件基本操作相关函数的使用
2.学会了运用system()来美化运行界面(这个有点好玩!)
3.初步了解了缓冲区以及EOF概念