qyl1111 2023-06-28 15:53 采纳率: 50%
浏览 73

想把程序录入的信息保存上后,关闭整个程序,再次打开时上次录入的信息依然存在,应该如何做,求帮助!


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 2
struct student 
{
    int number; 
    char name[20];
    char sex[20];
    char  cla[20];
    char score[20];
    char sum[20];
} stu[SIZE];
void menu();
void write();
void save(int x);
void SaveOneStudent(int i);
void SaveAllStudent(int n);
void inturn (struct student c[]);
void save2();
int AddStudent(int n);
void InputOnestudent(int i);
int DelStudent(int n);
void ModifyStudent(int n);
void OutputOneStudent(int i);
void SearchMenu(int n);
void SearchNumber(int n);
void SearchName(int n);
void SearchXueyuan(int n);
void SearchCla(int n);
void search();
void read();
void look();
int  main()
{
    int n=SIZE;
    int choice;
    printf("\n\n\n\n\n");
    printf("****************************欢迎使用学生档案管理系统****************************\n");
    while (1)
    {
        menu();
        printf("请选择0~5:");
        scanf("%d", &choice);
        if ( choice==0 )
        {
            printf("\t\t\t\t谢谢使用!!!");
            break;
        }
        switch(choice)
        {
        case 1:
            write();
            save(SIZE);
            break;
        case 2:
            look();
            break;
        case 3:
            DelStudent(n);
            break;
        case 4:
            ModifyStudent(n);
            break;
        case 5:
            SearchMenu(n);
            break;
        case 0:
            printf("\n谢谢使用!再见!\n");
        default:
            printf("\n按键错误!请重新选择!\n");
        }
    }
    return 0;
}
void menu()
{
    printf("\n\t\t\t\t请输入所需操作\n");
    printf("*************************************\n");
    printf("\t\t\t\t1.录入学生信息并保存\n");
    printf("\t\t\t\t2.浏览学生信息\n");
    printf("\t\t\t\t3.删除学生信息\n");
    printf("\t\t\t\t4.修改学生信息\n");
    printf("\t\t\t\t5.查询学生信息(按姓名查询)or(按生源地查询)\n");
printf("\t\t\t\t0.退出系统\n");
printf("**************组长:钱翼龙、组员:李明达、杨癸强**************\n");
    printf("\n\n\n");
}
void write()
{
    system("cls");
    int i;
    for(i=0; i<SIZE; i++)
    {
        printf("学号:");
        scanf("%d",&stu[i].number);
        printf("姓名:");
        scanf("%s",&stu[i].name);
        printf("性别:");
        scanf("%s",&stu[i].sex);
        printf("出生年月:");
        scanf("%s",&stu[i].cla);
        printf("生源地:");
        scanf("%s",&stu[i].score);
        printf("电话:");
        scanf("%s",&stu[i].sum);
    }
    printf("\n\n\n");
}
void save(int x)
{   system("cls");
    FILE *fp;
    int i;
    if((fp=fopen("student.dat","w"))==NULL)
    {
        printf("cannot open file\n");
        exit(1);
    }
    for(i=0; i<SIZE; i++)
        if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
            printf("file write error\n");
    fclose(fp);
    printf("\n信息保存成功!\n");
    printf("\n\n\n");
}
void SaveOneStudent(int i)
{   system("cls");
    FILE *fp;
    if((fp=fopen("student.dat","rb+"))==NULL)
    {
        printf("文件打开失败!\n");
        exit(1);
    }
    fseek(fp,i,0);
    fwrite(&stu[i],sizeof(struct student),1,fp);
    fclose(fp);
    printf("\n\n\n");
}
void SaveAllStudent(int n)
{   system("cls");
    FILE *fp;
    if((fp=fopen("student.dat","wb"))==NULL)
    {
        printf("文件打开失败!\n");
        exit(1);
    }
    fwrite(stu,sizeof(struct student),n,fp);
    fclose(fp);
    printf("\n\n\n");
}
void look()
{   system("cls");
    FILE *fp;
    if((fp=fopen("student.dat","r"))==NULL)
    {
        printf("文件打开失败!\n");
        exit(1);
    }
    int d=0,ans=0,i=0;
    while(!feof(fp))
    {
        if(stu[i].number==0) break;
fscanf(fp,"%d%s%s%s%s%s",&stu[i].number,stu[i].name,stu[i].sex,stu[i].cla,stu[i].score,stu[i].sum);
        printf("学号: ");
        printf("%d\n",stu[i].number);
        printf("姓名: ") ;
        printf("%s\n",stu[i].name);
        printf("性别: ");
        printf("%s\n",stu[i].sex);
        printf("出生时间:");
        printf("%s\n",stu[i].cla);
        printf("生源地:");
        printf("%s\n",stu[i].score);
        printf("电话: ");
        printf("%s\n\n\n\n",stu[i].sum);
        i++;
    }
    fclose(fp);
    printf("请输入任意键退出\n");
    {
        getchar();
        getchar();
        return;
    }
    printf("\n\n\n");
}
int AddStudent(int n)
{   system("cls");
    char c='y';
    FILE *fp;
    if((fp=fopen("student.dat","ab"))==NULL)
    {
        printf("文件打开失败!\n");
        exit(1);
    }
    while(c=='y')
    {
        printf("\n请输入要增加的同学的信息:");
        InputOnestudent(n);
        fwrite(&stu[n],sizeof(struct student),1,fp);        n++;        
printf("\n继续输入其他同学信息吗?\n");
        printf("确定进行增加请按1;不进行增加请按2\n");
        c=getchar();
        getchar();
    }
    printf("\n按任意键继续!\n");
    getchar();
    fclose(fp);
    return(n);
}
void InputOnestudent(int i)
{   system("cls");
    printf("学号\t姓名\性别\t出生日期\t生源地\t电话\n"); scanf("%d\t%s\t%s\t%s\t%s\t%s\n",&stu[i].number,stu[i].name,stu[i].sex,stu[i].cla,stu[i].score,stu[i].sum);
}
void OutputOneStudent(int i)
{   system("cls");
    printf("学号:%d  姓名:%s  性别:%s  \n",stu[i].number,stu[i].name,stu[i].sex);
    printf("出生日期:%s 生源地:%s  电话:%s \n",stu[i].cla,stu[i].score,stu[i].sum);
}
int DelStudent(int n)
{   system("cls");
    void OutputOneStudent(int i);
    int i,k=-1,x;
    char c1='y',c2;
    c2='n';
    printf("\n请输入要删除的同学的学号:");
    scanf("%d",&x);
    for(i=0; i<n; i++)
    {
        if(x==stu[i].number)
        {
            k=i;
            printf("\n该同学信息如下:\n");
            OutputOneStudent(k);
            printf("\n确定删除?\n");
            printf("确定进行删除请按1;不进行删除请按2\n");
            getchar();
            c2=getchar();
            if(c2=='1')
            {
                for(i=k; i<n; i++)
                    stu[i]=stu[i+1];
                n--;
                printf("删除成功!\n");
            }
        }
    }
if(k<0)
                printf("\n输入学号有误,请重新输入!");
save(n);
printf("\n按任意键继续!\n");
getchar();
return(n);
printf("\n\n\n");
}
void ModifyStudent(int n)
{   system("cls");
    struct student temp;
    int k=-1,x,i;
    char c1='y',c2;
    while(c1=='y')
    {
        c2='y';
        printf("\n请输入要修改的同学的学号:");
        scanf("%d",&x);
        for(i=0; i<n; i++)
            if(x==stu[i].number)
            {
                k=i;
                break;
            }
        if(k<0)
            printf("\n输入学号有误,请重新输入!");
        else
        {
            printf("请输入要修改学生修改后的的信息\n");
            printf("学号: ");
            scanf("%d",&temp.number);
            printf("姓名: ") ;
            scanf("%s",temp.name);
            printf("性别: ");
            scanf("%s",temp.sex);
            printf("出生时间:");
            scanf("%s",temp.cla);
            printf("生源地:");
            scanf("%s",temp.score);
            printf("电话: ");
            scanf("%s",temp.sum);
            stu[k]=temp;
            printf("\n修改成功!\n");
            break;
        }
        SaveAllStudent(k);
        printf("\n继续修改操作吗?");
        printf("\n继续修改请按1;不进行修改请按2\n");
        c1=getchar();
        getchar();
    }
    printf("\n按任意键继续!\n");
    getchar();
    printf("\n\n\n");
}
void SearchMenu(int n)
{   system("cls");
    int selet;
    while(1)
{
printf("**********************************************************\n");
        printf("******************** 欢迎进入查询系统  *******************\n");
        printf("**********************************************************\n");
        printf("\n");
        printf("*********************  请输入所需操作  *******************\n");  printf("**********************************************************\n");
        printf("1.按姓名查询\n");
        printf("2.按生源地查询\n");
        printf("0.返回主菜单\n"); printf("**********************************************************\n");
        printf("请输入操作选项:");
        scanf("%d",&selet);
        getchar();
        switch(selet)
        {
        case 1:
            SearchName(n);
            break;
        case 2:
            SearchNumber(n);
            break;
        case 0:
            return;
        default:
            printf("输入错误!请重新输入!\n");
        }
    }
    printf("\n\n\n");
}
void SearchName(int n)
{   system("cls");
    int i,j,k;
    char xname[20],c='y';
    k=-1;
    printf("\n请输入学生姓名:");
    gets(xname);
    for(i=0,j=1; i<n; i++) 
    {
        if(strcmp(stu[i].name,xname)==0)
        {
            k=i;
            printf("学生%d的信息:\n",j++);
            OutputOneStudent(k);
        }
        if(k==-1)
        {
            printf("\n抱歉!没有该学生信息!\n");
        }
        printf("\n按任意键继续!\n");
        getchar();
        printf("\n\n\n");
    }
}
void SearchNumber(int n)
{   system("cls");
    int i,j,k;
    char xname[20],c='y';
    k=-1;
    printf("\n请输入生源地:");
    gets(xname);
    for(i=0,j=1; i<n; i++) 
    {
        if(strcmp(stu[i].score,xname)==0)
        {
            k=i;
            printf("学生%d的信息:\n",j++);
            OutputOneStudent(k);
        }
        if(k==-1)
        {
            printf("\n抱歉!没有该学生信息!\n");
        }
        printf("\n按任意键继续!\n");
        getchar();
        printf("\n\n\n");
    }
}

展开全部

  • 写回答

3条回答 默认 最新

  • 梦幻精灵_cq 2023-06-28 16:26
    关注

      把录入的信息写入文本保存到磁盘,下次启动程序从磁盘文件读入内存,就达到了您的目的。


      数据写入磁盘文件有两种常用方式:一、数据输出为csv文本,下次程序启动读入还原成原来的数据结构。二、用json直接把数据序列化成文本写入文本文件保存到磁盘,下次启用直接读入内存还原成数据。序列化文本也可以用python 的专属工具pickle,用法几乎同json,但只在python 系统下通用。json是和csv文本一样的通用数据形式。

    • csv文本

      img


      img

    • json库和pickle工具
      json

      img


      pickle

      img


    评论 编辑记录
    qyl1111 2023-06-28 16:35

    能帮我编辑一下程序吗 感谢

    回复
    梦幻精灵_cq 回复 qyl1111 2023-06-28 22:12

    不能。我仅会点python 😭所以以python编程的感受说了下自己的经历。😭

    1
    回复
    梦幻精灵_cq 回复 qyl1111 2023-06-28 22:16

    您是C,可以用csv、json存储数据,这两者都是通用数据,与具体语言使用无关。当然,更可以用数据库来存放数据,这更科学便捷,但我也没学习,无从说起😭😭

    1
    回复
    展开全部4条评论
  • qzjhjxj 2023-06-29 08:57
    关注

    整体修改完善如下,改动处见注释,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define SIZE 50     // 修改
    struct student
    {
        int  number;
        char name[20];
        char sex[5];
        char cla[20];
        char score[20];
        char sum[20];
    } stu[SIZE];
    int n = 0;        // 修改
    
    void menu();
    void save(int x);
    void AddStudent();
    void InputOnestudent(int i);
    void DelStudent();             //修改
    void ModifyStudent();          // 修改 
    void OutputOneStudent(int i);
    void SearchMenu();            // 修改
    void SearchNumber();          // 修改 
    void SearchName();            // 修改
    void read();                  // 修改
    void look();                  // 修改
    
    int  main()
    {
        //int n = SIZE;  修改
        int choice;
        read();        //修改
        printf("\n\n\n\n\n");
        printf("****************************欢迎使用学生档案管理系统****************************\n");
        while (1)
        {
            menu();
            printf("请选择0~5:");
            scanf("%d", &choice);
            if (choice == 0)
            {
                save(n);     //  修改
                printf("\t\t\t\t谢谢使用!!!");
                break;
            }
            switch (choice)
            {
            case 1:
                AddStudent(); //  修改
                //write();    修改
                //save(n);    修改
                break;
            case 2:
                look();
                break;
            case 3:
                DelStudent();
                break;
            case 4:
                ModifyStudent();
                break;
            case 5:
                SearchMenu();
                break;
            //case 0:          修改
            //    printf("\n谢谢使用!再见!\n"); 修改
            default:
                printf("\n按键错误!请重新选择!\n");
            }
        }
        return 0;
    }
    void menu()
    {
        printf("\n\t\t\t\t请输入所需操作\n");
        printf("*************************************\n");
        printf("\t\t\t\t1.录入学生信息并保存\n");
        printf("\t\t\t\t2.浏览学生信息\n");
        printf("\t\t\t\t3.删除学生信息\n");
        printf("\t\t\t\t4.修改学生信息\n");
        printf("\t\t\t\t5.查询学生信息(按姓名查询)or(按生源地查询)\n");
        printf("\t\t\t\t0.退出系统\n");
        printf("**************组长:钱翼龙、组员:李明达、杨癸强**************\n");
        printf("\n\n\n");
    }
    
    void AddStudent()
    {
        system("cls");
        char c = 'y';
        while (c == 'y' || c == 'Y')
        {
            printf("\n请输入要增加的同学的信息:\n");
            InputOnestudent(n);
            n++;
            printf("\n继续增加信息吗?\n");
            printf("(Y/y).继续   (N/n).退出\n");
            scanf(" %c", &c);  //c = getchar();
        }
        printf("\n按任意键继续!\n");
        getchar();
    }
    void InputOnestudent(int i)
    {
        printf("学号:");
        scanf("%d", &stu[i].number);
        printf("姓名:");
        scanf("%s", stu[i].name); 
        printf("性别:");
        scanf("%s", stu[i].sex); 
        printf("出生年月:");
        scanf("%s", stu[i].cla); 
        printf("生源地:");
        scanf("%s", stu[i].score); 
        printf("电话:");
        scanf("%s", stu[i].sum);
    }
    
    void look()
    {
        system("cls");
        int i = 0;
        if (n == 0)
            printf("记录为空!\n");
        else {
            for (i = 0; i < n; i++)
                OutputOneStudent(i);
        }
        printf("请输入任意键退出\n");
        getchar();
        return;
    }
    
    void OutputOneStudent(int i)
    {
        printf("学号:%d  姓名:%s  性别:%s  \n", stu[i].number, stu[i].name, stu[i].sex);
        printf("出生日期:%s 生源地:%s  电话:%s \n\n", stu[i].cla, stu[i].score, stu[i].sum);
    }
    
    void DelStudent()
    {
        system("cls");
        int i, k = -1, x;
        char c1 = 'y', c2;
        c2 = 'n';
        if (n == 0) {
            printf("记录为空!\n");
            return;
        }
        printf("\n请输入要删除的同学的学号:");
        scanf("%d", &x);
        for (i = 0; i < n; i++)
        {
            if (x == stu[i].number)
            {
                k = i;
                printf("\n该同学信息如下:\n");
                OutputOneStudent(k);
                printf("\n确定删除?\n");
                printf("确定进行删除请按1;不进行删除请按2\n");
                getchar();
                c2 = getchar();
                if (c2 == '1')
                {
                    for (i = k; i < n - 1; i++)  //for (i = k; i < n; i++)
                        stu[i] = stu[i + 1];
                    n--;
                    printf("删除成功!\n");
                }
                break;
            }
        }
        if (k < 0)
            printf("\n输入学号有误,请重新输入!");
        printf("\n按任意键继续!\n");
        getchar();
        printf("\n");
    }
    
    void ModifyStudent()
    {
        system("cls");
        int k = -1, x, i;
        char c1 = 'y', c2;
        if (n == 0) {
            printf("记录为空!\n");
            return;
        }
        while (c1 == 'y')
        {
            c2 = 'y';
            printf("\n请输入要修改的同学的学号:");
            scanf("%d", &x);
            for (i = 0; i < n; i++)
                if (x == stu[i].number)
                {
                    k = i;
                    break;
                }
            if (k < 0)
                printf("\n输入学号有误,请重新输入!");
            else
            {
                printf("\n待修改的学生信息如下:\n");
                OutputOneStudent(k);
                printf("请输入修改信息:\n");
                InputOnestudent(k);
                printf("\n修改成功!\n");
            }
            printf("\n继续修改操作吗?");
            printf("\n继续修改请按 'y' ;不进行修改请按 'n' \n");
            scanf(" %c", &c1);  //c1 = getchar();
                                //getchar();
        }
        printf("\n按任意键继续!\n");
        getchar();
        printf("\n\n\n");
    }
    
    void SearchMenu()
    {
        system("cls");
        int selet;
        if (n == 0) {
            printf("记录为空!\n");
            return;
        }
        while (1)
        {
            printf("**********************************************************\n");
            printf("******************** 欢迎进入查询系统  *******************\n");
            printf("**********************************************************\n");
            printf("\n");
            printf("*********************  请输入所需操作  *******************\n");
            printf("**********************************************************\n");
            printf("1.按姓名查询\n");
            printf("2.按生源地查询\n");
            printf("0.返回主菜单\n");
            printf("**********************************************************\n");
            printf("请输入操作选项:");
            scanf("%d", &selet);
            getchar();
            switch (selet)
            {
            case 1:
                SearchName();  // 修改
                break;
            case 2:
                SearchNumber(); // 修改
                break;
            case 0:
                return;
            default:
                printf("输入错误!请重新输入!\n");
            }
        }
        printf("\n\n\n");
    }
    void SearchName()
    {
        system("cls");
        int i, j, k;
        char xname[20], c = 'y';
        k = -1;
        if (n == 0) {
            printf("记录为空!\n");
            return;
        }
        printf("\n请输入学生姓名:");
        gets_s(xname);
        for (i = 0, j = 1; i < n; i++)
        {
            if (strcmp(stu[i].name, xname) == 0)
            {
                k = i;
                printf("该学生的信息:\n");
                OutputOneStudent(k);      // 修改
                break;
            }
        }
        if (k == -1)
        {
            printf("\n抱歉!没有该学生信息!\n");
        }
        printf("\n按任意键继续!\n");
        getchar();
        printf("\n\n\n");
    }
    void SearchNumber()
    {
        system("cls");
        int i, j, k;
        char xname[20], c = 'y';
        k = -1;
        if (n == 0) {
            printf("记录为空!\n");
            return;
        }
        printf("\n请输入生源地:");
        gets_s(xname);
        for (i = 0, j = 1; i < n; i++)
        {
            if (strcmp(stu[i].score, xname) == 0)
            {
                k = i;
                printf("该学生的信息:\n");
                OutputOneStudent(k);      // 修改
                break;
            }
        }
        if (k == -1)
        {
            printf("\n抱歉!没有该学生信息!\n");
        }
        printf("\n按任意键继续!\n");
        getchar();
        printf("\n\n\n");
    }
    
    
    void save(int x)
    {
        system("cls");
        FILE* fp;
        int i;
        if ((fp = fopen("student.dat", "w")) == NULL)
        {
            printf("cannot open file\n");
            exit(1);
        }
        for (i = 0; i < x; i++)   //for (i = 0; i < SIZE; i++)
            if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
                printf("file write error\n");
        fclose(fp);
        printf("\n信息保存成功!\n");
        printf("\n\n\n");
    }
    
    void read()
    {
        FILE* fp;
        if ((fp = fopen("student.dat", "r")) == NULL){
            printf("文件打开失败!\n");
            return;  
        }
        int i = n;
        while (1) {
            if (fread(&stu[i], sizeof(struct student), 1, fp) == 1)
                i++;
            else
                break;
        }
        n = i;
        fclose(fp);
        printf("记录成功加载!\n");
    }
    
    
    //以下分界线,几个函数冗余了,可以删除。
    #if 0
    
    void write();
    void SearchXueyuan(int n);
    void SearchCla(int n);
    void search();
    void SaveOneStudent(int i);
    void SaveAllStudent(int n);
    void inturn(struct student c[]);
    void save2();
    
    void write()
    {
        system("cls");
        int i;
        for (i = 0; i < SIZE; i++)
        {
            printf("学号:");
            scanf("%d", &stu[i].number);
            printf("姓名:");
            scanf("%s", stu[i].name);  //scanf("%s", &stu[i].name);
            printf("性别:");
            scanf("%s", stu[i].sex); //scanf("%s", &stu[i].sex); 
            printf("出生年月:");
            scanf("%s", stu[i].cla); //scanf("%s", &stu[i].cla);
            printf("生源地:");
            scanf("%s", stu[i].score); //scanf("%s", &stu[i].score); 
            printf("电话:");
            scanf("%s", stu[i].sum);  //scanf("%s", &stu[i].sum);
        }
        printf("\n\n\n");
    }
    
    
    void look()
    {
        system("cls");
        FILE* fp;
        if ((fp = fopen("student.dat", "r")) == NULL)
        {
            printf("文件打开失败!\n");
            return;  //exit(1);
        }
        int d = 0, ans = 0, i = 0;
        while (1)   //while (!feof(fp))
        {
            //if (stu[i].number == 0) break;
            //fscanf(fp, "%d%s%s%s%s%s", &stu[i].number, stu[i].name, stu[i].sex, stu[i].cla, stu[i].score, stu[i].sum);
            if (fread(&stu[i], sizeof(struct student), 1, fp) == 1) {
                printf("学号: ");
                printf("%d\n", stu[i].number);
                printf("姓名: ");
                printf("%s\n", stu[i].name);
                printf("性别: ");
                printf("%s\n", stu[i].sex);
                printf("出生时间:");
                printf("%s\n", stu[i].cla);
                printf("生源地:");
                printf("%s\n", stu[i].score);
                printf("电话: ");
                printf("%s\n\n\n\n", stu[i].sum);
                i++;
            }
            else
                break;
        }
        fclose(fp);
        printf("请输入任意键退出\n");
        {
            getchar();
            getchar();
            return;
        }
        printf("\n\n\n");
    }
    
    void SaveOneStudent(int i)
    {
        system("cls");
        FILE* fp;
        if ((fp = fopen("student.dat", "rb+")) == NULL)
        {
            printf("文件打开失败!\n");
            exit(1);
        }
        fseek(fp, i, 0);
        fwrite(&stu[i], sizeof(struct student), 1, fp);
        fclose(fp);
        printf("\n\n\n");
    }
    void SaveAllStudent(int n)
    {
        system("cls");
        FILE* fp;
        if ((fp = fopen("student.dat", "wb")) == NULL)
        {
            printf("文件打开失败!\n");
            exit(1);
        }
        fwrite(stu, sizeof(struct student), n, fp);
        fclose(fp);
        printf("\n\n\n");
    }
    #endif
    
    

    展开全部

    评论 编辑记录
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-29 17:18
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/2224
    • 这篇博客也不错, 你可以看下指针深入了解——函数指针,函数指针数组,指向函数指针数组的指针。
    • 除此之外, 这篇博客: 广义表,这些操作必须要会中的 在做题之前,我特别写了这一篇关于广义表的基础操作,注释帮助大家更好的理解书上的代码,跟着我敲一敲,不要只复制粘贴哦,有基础者请绕过此文,直接去搞题吧 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      注:本文以一个例子来演示广义表的基本操作,含有一个头文件《GList.h》和一个测试源文件《main.cpp》

      1. 根据广义表字符串(((a,b,c),(d)),e)分解表头字符串、表尾字符串
      2. 根据分解好的字符串创建广义表
      3. 求深度
      4. 求长度
      5. 查找原子个数
      6. 撤销广义表

    • 您还可以看一下 陈槐老师的软件测试全栈系列课程课程中的 利用通配符查找文件小节, 巩固相关知识点
    • 以下回答来自chatgpt:

      为了保存程序中的信息,可以使用文件或数据库来存储数据。以下是使用文件的解决方案:

      1. 首先,创建一个保存信息的数据结构,例如一个字典或者一个列表。这个数据结构应该能够容纳程序录入的所有信息。

      2. 在程序关闭前,将这个数据结构保存到文件中。可以将数据结构转换成字符串的形式,然后写入文件中。

      3. 在程序启动时,检查文件是否存在。如果存在,将文件中保存的数据读取出来,并将其还原为原始的数据结构。

      以下是一个示例代码,展示如何使用文件来保存和读取信息:

      import json
      
      # 创建保存信息的数据结构
      information = {
          'name': 'John',
          'age': 25,
          'email': 'john@example.com'
      }
      
      # 将数据保存到文件中
      with open('information.txt', 'w') as file:
          json.dump(information, file)
      
      # 从文件中读取数据
      with open('information.txt', 'r') as file:
          saved_information = json.load(file)
      
      print(saved_information)  # 输出:{'name': 'John', 'age': 25, 'email': 'john@example.com'}
      

      在上面的示例中,我们使用了json模块来将数据结构转换为字符串形式并保存到文件中。在从文件中读取数据时,我们使用json模块将字符串转换回原始的数据结构。你可以根据需要调整数据结构的形式,使用其他的保存和读取数据的方法。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

    展开全部

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部