第三次博客园作业

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("----------------------------------------------------------------\n");
    printf("               欢迎使用学生成绩查询与管理系统\n ");
    printf("1 查询成绩\n");
    printf(" 2 新建成绩文件\n");
    printf(" 3 界面颜色修改\n");
    printf(" 4 退出\n");
    printf("输入相应数字执行下一步:\n"); 
    scanf("%d",&n);
    switch(n)// 输入数字执行相应函数 
    {
        case 1:Check();break;
        case 2:Make();break;
        case 3:Menu();break;
        case 4:printf("退出系统\n");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("请输入你要查询的数目:\n");
     scanf("%d",&i);
     while(i>0)
     {
         printf("请输入查询者的姓名:\n");
         scanf("%s",&name1[i]);
         strcpy(name2[i],name1[i]);//将姓名复制以便后续输出 
         strcat(name1[i],".txt");
         if((fp1=fopen(name1[i],"r"))==NULL)//若文件为空 
         {
             printf("此人无信息\n");
         }
         fp1=fopen(name1[i],"r");
         fscanf(fp1, "%s %s %s %s", &stu1[i].num, &stu1[i].sex, &stu1[i].cla, &stu1[i].score);//提取文件中的数据 
         printf(" 姓名 学号 性别 班级 成绩\n");
         printf("%s %s %s %s %s\n",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("请输入你要新建的数目:\n");
    scanf("%d",&n);
    printf("姓名 学号 性别 班级 成绩\n");
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("无法建立文件\n"); 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("无法关闭文件!\n"); exit(0); } printf("成功 已建立%d个文件\n",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函数去执行一些简单的指令来改变窗口样貌。但是,我的程序执行时的美观度还是不够高,结构体的运用仍不够娴熟,代码也不够简洁完美,我会在之后的课程中总结学习以便加以改进。

 

 

posted @ 2019-12-20 00:04  MIKELOVE  阅读(159)  评论(0编辑  收藏  举报