c语言文件

最终代码:

主要函数块

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<time.h>
 5 struct student    //定义结构体
 6 {
 7     char name[20];
 8     int number;
 9     int class;
10     char gender[10];
11     char score[20];
12 }stu[500]; 
13 int i;
14 int n;
15 char ch[10];
16 char name1[20];
17 char name2[20];
18 int num,class;
19 char sex[10];
20 char score[20];
21 FILE *fp;
22 int main()
23 {
24     int x;
25     Menu();
26     while(1)
27     {
28         scanf("%d", &x);
29         switch(x)
30         {
31             case 1: Txt_Read();
32                 break;
33             case 2: Txt_Write();
34                 break;
35             case 3: Txt_Up();
36                 break;
37             case 4: Txt_Remove();
38                 break;
39             case 5:
40                 system("clear");
41                 printf("\n已退出\n");
42                 printf("欢迎下次使用:)\n");
43                 return 0;
44             default:
45             system("clear");
46             printf("请检查你的输入:(\n");
47             Menu();
48         }
49     }
50     return 0;
51 }

菜单函数块

 1 void Head()
 2 {
 3     char str[100];    //时间显示
 4     time_t t;         //无法显示实时秒数
 5     struct tm *lt;
 6     t = time(NULL);
 7     lt = localtime(&t);
 8     strftime(str,100,"%Y-%m-%d  %H:%M ",lt);
 9     printf("\t\t\t\t    ╭═════════════════════════════════○●○●═══╮\n");
10     printf("\t\t\t\t    │            学生信息管理系统            │\n");
11     printf("\t\t\t\t    │                 ● ▽ ●                  │  \n");
12     printf("\t\t\t\t    │           %s           │  \n",str);
13     printf("\t\t\t\t    ╰═══○●○●═════════════════════════════════╯\n");
14     printf("\n");
15 }
16 void Menu()
17 {
18     Head();
19     printf("\t\t\t\t    ╭════════════════════════════════○●○●════╮\n");
20     printf("\t\t\t\t    │                                        │\n");
21     printf("\t\t\t\t    │  [1] 查询信息            [2] 添加信息  │\n");
22     printf("\t\t\t\t    │  [3] 修改信息            [4] 移除信息  │\n");
23     printf("\t\t\t\t    │  [5] 退出程序                          │\n");
24     printf("\t\t\t\t    │                                        │\n");
25     printf("\t\t\t\t    ╰═══○●○●═════════════════════════════════╯\n\n");
26     printf("\t\t\t\t    请选择(0-5):");
27 }

 

添加函数块

 1 void Txt_Write()  //写入txt
 2 {
 3     system("cls");
 4     Head();
 5     printf("请输入所添加的人数:\n");
 6     scanf("%d",&n);
 7     printf("请输入姓名,学号,班级,性别,线代成绩:\n");
 8     for(i=1;i<=n;i++)
 9     {
10         scanf("%s",name1);
11         strcpy(name2,name1);
12         strcat(name1,".txt");
13         if ((fp = fopen(name1,"w")) == NULL)
14         {
15             printf("打开失败:(\n");
16             }
17         fprintf(fp,"姓名           学号            班级            性别            线代成绩\n");
18         scanf("%d%d%s%s",&num,&class,sex,score);
19         fprintf(fp,"%-17s%-17d%-15d%-19s%-s",name2,num,class,sex,score); //数据对齐
20         fclose(fp);
21         fp = fopen(name1,"r");
22         fscanf(fp,"%*[^\n]"); //略过第一行
23         fscanf(fp,"%s %d %d %s %s",&stu[i].name,&stu[i].number,&stu[i].class,&stu[i].gender,&stu[i].score);
24         printf("姓名           学号            班级            性别            线代成绩\n");
25         printf("%-17s%-17d%-15d%-19s%-s\n",stu[i].name,stu[i].number,stu[i].class,stu[i].gender,stu[i].score);
26     }
27     printf("数据已创建,请打开文件夹查看:)\n");
28     printf("是否继续输入?[Y/N]\n");
29     scanf("%s",ch);
30     if(ch[0]=='y'||ch[0]=='Y'){
31         system("cls");
32         return Txt_Write();
33     }else if(ch[0]=='n'||ch[0]=='N'){
34         system("cls");
35         return Menu();
36     }
37     exit(0);
38 }

查询函数块

 1 void Txt_Read()  //读取txt
 2 {
 3     system("cls");
 4     Head();
 5     printf("请输入所查询姓名(按’#‘返回菜单):\n");
 6     scanf("%s",name1);
 7     if(name1[0]=='#')
 8     {
 9         printf("\n\n\n");
10         system("cls");
11         printf("已返回菜单:)\n");
12         return Menu();
13     }else{
14         strcpy(name2,name1);
15         strcat(name1,".txt");
16         if ((fp = fopen(name1,"r")) == NULL)
17         {
18             printf("请检查输入(1秒后重新输入)\n");
19             sleep(1000000);
20             return Txt_Read();
21         }
22         fp = fopen(name1,"r");
23         fscanf(fp,"%*[^\n]"); //略过第一行
24         fscanf(fp,"%s %d %d %s %s",&stu[i].name,&stu[i].number,&stu[i].class,&stu[i].gender,&stu[i].score);
25         printf("姓名           学号            班级            性别            线代成绩\n");
26         printf("%-17s%-17d%-15d%-19s%-s\n",stu[i].name,stu[i].number,stu[i].class,stu[i].gender,stu[i].score);
27         sleep(3000000);
28         fclose(fp);
29         return Txt_Read();
30         }
31     exit(0);
32 }

修改函数块

 1 void Txt_Up()
 2 {
 3     system("cls");
 4     Head();
 5     printf("请输入姓名:\n");
 6     scanf("%s",name1);
 7     strcpy(name2,name1);
 8     strcat(name1,".txt");
 9     if ((fp = fopen(name1,"r")) == NULL)
10     {
11         printf("打开失败:(\n请检查输入是否正确\n");
12         sleep(1000000);
13         return Txt_Up();
14         }
15     fp = fopen(name1,"r");
16     fscanf(fp,"%*[^\n]"); //略过第一行
17     fscanf(fp,"%s %d %d %s %s",&stu[i].name,&stu[i].number,&stu[i].class,&stu[i].gender,&stu[i].score);
18     printf("姓名           学号            班级            性别            线代成绩\n");
19     printf("%-17s%-17d%-15d%-19s%-s\n",stu[i].name,stu[i].number,stu[i].class,stu[i].gender,stu[i].score);
20     printf("请输入学号、班级、性别、现代成绩以进行更新:\n");
21     scanf("%d%d%s%s",&num,&class,sex,score);
22     fp = fopen(name1,"w");
23     fprintf(fp,"姓名           学号            班级            性别            线代成绩\n");
24     fprintf(fp,"%-17s%-17d%-15d%-19s%-s",name2,num,class,sex,score); 
25     fclose(fp);
26     fp = fopen(name1,"r");
27     fscanf(fp,"%*[^\n]"); //略过第一行
28     fscanf(fp,"%s %d %d %s %s",&stu[i].name,&stu[i].number,&stu[i].class,&stu[i].gender,&stu[i].score);
29     printf("姓名           学号            班级            性别            线代成绩\n");
30     printf("%-17s%-17d%-15d%-19s%-s\n",stu[i].name,stu[i].number,stu[i].class,stu[i].gender,stu[i].score);
31     fclose(fp);
32     printf("数据已更新,请打开文件夹查看:)\n");
33     printf("是否继续修改?[Y/N]\n");
34     scanf("%s",ch);
35     if(ch[0]=='y'||ch[0]=='Y'){
36         system("cls");
37         return Txt_Up();
38     }else if(ch[0]=='n'||ch[0]=='N'){
39         system("cls");
40         return Menu();
41     }
42     exit(0);
43 }

移除函数块

 1 void Txt_Remove()
 2 {
 3     system("cls");
 4     Head();
 5     printf("请输入您要删除的文件名: ");
 6     scanf("%s",name1);
 7     strcat(name1,".txt");
 8     if(remove(name1) == 0)
 9         printf("文件已删除:)\n");
10     else{
11         printf("失败:(\n");
12         printf("失败原因分析:\n");
13         printf("可能是因为你没给我买大白兔奶糖:(\n");
14         }
15     printf("是否继续输入?[Y/N]\n");
16     scanf("%s",ch);
17     if(ch[0]=='y'||ch[0]=='Y')
18     {
19         system("cls");
20         return Txt_Remove();
21     }
22     if(ch[0]=='n'||ch[0]=='N')
23     {
24         system("cls");
25         return Menu();
26     }
27 }

运行结果:

菜单界面

添加信息

 查询信息

 

 修改信息

 删除信息

(删除后废纸篓里找不到)

退出程序

任务四:

system("pause"):实现冻结屏幕

system("cls"):实现清屏操作

system("clear"):同上

system("color 0A"):其中color后面的0是背景色代号,A是前景色代号

各颜色代码如下:

0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色

9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色

system("mkdir D:\zero\one") 可以在D盘下建立一个文件夹zero,在zero下面建立一个文件夹one

system("data"):  显示使用者当时使用时间

总结:

1.熟悉了文件基本操作相关函数的使用

2.结构体的使用使数据处理的方式高效简洁

3.了解缓冲区及EOF的概念,尝试如何打开二进制文件

posted @ 2019-12-16 19:25  阿尔法个贝塔  阅读(306)  评论(0编辑  收藏  举报