学生兴趣特长信息管理系统课程设计

一、【课程设计】学生兴趣特长信息管理系统

问题描述:

学生兴趣特长信息管理软件设计。对学生信息进行管理,学生信息包括:学号、姓名、性别、年级、专业;对兴趣信息进行管理,兴趣信息包括:兴趣类别信息和兴趣信息;还需要有查询信息的功能。

基本要求:

1. 必须使用文件存储数据,可更新数据写入文件中

2. 每一项兴趣属于一种类别每个学生可以有多项兴趣特长

3. 兴趣类别兴趣学生信息是可以添加、删除、修改的

4. 给学生添加兴趣时,学生可挑选也可全选

5. 查询某兴趣的所有爱好者信息查询某兴趣的所有爱好者信息

二、【数据格式分析

 



 

 

 

三、数据结构

 

四、【算法分析】

1.对文件进行读和更新的操作

1.1从文件中读取兴趣类别和兴趣类别序号的信息:read_xqlb();

void read_xqlb()//读取兴趣类别和兴趣类别序号的信息

{

FILE *F = fopen("d:\\xqlb.txt","r");

fscanf(F,"%d\n",&xqlb_n);

for (int i=1;i<=xqlb_n;i++)

{

XQL[i].exi=0;

fscanf(F,"%s ",XQL[i].name);

fscanf(F,"%d ",&XQL[i].num);

for (int j=1;j<=XQL[i].num;j++)

fscanf(F,"%d ",&XQL[i].xq[j]);

fscanf(F,"\n");

}

fclose(F);

}

1.2从文件中读取兴趣信息:read_xq();

void read_xq()//读取兴趣信息

{

FILE *F = fopen("d:\\xq.txt","r");

fscanf(F,"%d ",&name_n);

for (int i=1;i<=name_n;i++)

fscanf(F,"%s ",xq_name[i]);

fclose(F);

}

1.3从文件中读取学生信息:read_stu();

void read_stu()//读取学生信息

{

FILE *F = fopen("d:\\stu.txt","r");

fscanf(F,"%d\n",&stu_n);

for (int i=1;i<=stu_n;i++)

{

fscanf(F,"%s ",STU[i].name);

fscanf(F,"%d ",&STU[i].id);

fscanf(F,"%s ",STU[i].sex);

fscanf(F,"%s ",STU[i].grade);

fscanf(F,"%s ",STU[i].major);

fscanf(F,"%s ",STU[i].mobile);

fscanf(F,"%s ",STU[i].jg);

fscanf(F,"%d ",&STU[i].num);

for (int j=1;j<=STU[i].num;j++)

fscanf(F,"%d ",&STU[i].xq[j]);

fscanf(F,"\n");

}

fclose(F);

}

1.4更新兴趣类别和兴趣序号的信息

void update_xq()//更新兴趣类别和兴趣序号的信息

{

FILE *F = fopen("d:\\xqlb.txt","w");

fprintf(F,"%d\n",xqlb_n);

for (int i=1;i<=xqlb_n;i++)

if (XQL[i].exi==0)

{

fprintf(F,"%s ",XQL[i].name);

fprintf(F,"%d ",XQL[i].num);

for (int j=1;j<=XQL[i].num;j++)

fprintf(F,"%d ",XQL[i].xq[j]);

fprintf(F,"\n");

}

fclose(F);

}

1.5更新学生信息

void update_stu()//更新学生信息

{

FILE *F = fopen("d:\\stu.txt","w");

fprintf(F,"%d\n",stu_n);

for (int i=1;i<=stu_n;i++)

{

fprintf(F,"%s ",STU[i].name);

fprintf(F,"%d ",STU[i].id);

fprintf(F,"%s ",STU[i].sex);

fprintf(F,"%s ",STU[i].grade);

fprintf(F,"%s ",STU[i].major);

fprintf(F,"%s ",STU[i].mobile);

fprintf(F,"%s ",STU[i].jg);

fprintf(F,"%d ",STU[i].num);

for (int j=1;j<=STU[i].num;j++)

fprintf(F,"%d ",STU[i].xq[j]);

fprintf(F,"\n");

}

fclose(F);

}

2.兴趣序号与名称的映射

int ys(char *str)//兴趣序号与名称的映射

{

FILE *F = fopen("d:\\xq.txt","r");

fscanf(F,"%d ",&name_n);

for (int i=1;i<=name_n;i++)

fscanf(F,"%s ",xq_name[i]);

fclose(F);

for (int i=1;i<=name_n;i++)

if (strcmp(xq_name[i],str)==0) return i;    //当前兴趣在映射中直接返回序号

name_n++;

strcpy(xq_name[name_n],str);     //不在映射中将其加入映射

F = fopen("d:\\xq.txt","w");    //更新映射信息

fprintf(F,"%d ",name_n);

for (int i=1;i<=name_n;i++)

fprintf(F,"%s ",xq_name[i]);

fclose(F);

return name_n;                              //返回新的序号

}

总体设计

 

3.兴趣管理系统

 3.1 添加兴趣类别

 

3.2删除兴趣类别

 

3.3修改兴趣类别

void up_xqlb()//修改兴趣类别

{

while(true)

{

system("cls");

    for (int i=1;i<=xqlb_n;i++)

printf("%d.%s\n",i,XQL[i].name); //输出所有兴趣类别

printf("请输入需要修改的兴趣类别的序号:");

       int x;

       scanf("%d",&x);

printf("请输入该兴趣类别的新名字:");

     char str[20];

     scanf("%s",str);

     printf("“%s”兴趣类别已修改为“%s\n”",XQL[x].name,str);

     strcpy(XQL[x].name,str);

     update_xq();

printf("还要继续修改兴趣类别吗?\n输入“1”继续修改,输入“0”停止修改:");

int i;

scanf("%d",&i);

if(i==1) continue;

if(i==0) break;

} //while循环结束

printf("\n\n请输入任意字符并按回车键继续:");

char a;

scanf("%s",&a);

return;

}

3.4添加兴趣

 

3.5删除兴趣

void del_xq()//删除兴趣

{

while(true) //外循环  用于判断是否继续删除其它兴趣类别里的兴趣

{

system("cls");

for (int i=1;i<=xqlb_n;i++)

printf("%d.%s\n",i,XQL[i].name); //输出所有兴趣类别

    printf("请选择兴趣类别的序号:");

      int x;

     scanf("%d",&x);

     while(true)//内循环  用于判断是否继续删除该兴趣类别里的兴趣

         {

            for (int i=1;i<=XQL[x].num;i++)

        pri

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值