学生成绩管理系统c语言代码.docx

上传人:b****7 文档编号:25760438 上传时间:2023-06-13 格式:DOCX 页数:10 大小:20.20KB
下载 相关 举报
学生成绩管理系统c语言代码.docx_第1页
第1页 / 共10页
学生成绩管理系统c语言代码.docx_第2页
第2页 / 共10页
学生成绩管理系统c语言代码.docx_第3页
第3页 / 共10页
学生成绩管理系统c语言代码.docx_第4页
第4页 / 共10页
学生成绩管理系统c语言代码.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统c语言代码.docx

《学生成绩管理系统c语言代码.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统c语言代码.docx(10页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统c语言代码.docx

学生成绩管理系统c语言代码

#include<stdio.h>ﻫ#include<dos.h>ﻫ#defineN sizeof(structSTH)ﻫ#defineGESHI "%-10ld%-10s%-5s%-4d/%-2d/%-4d%-12s%-12s%s\n"

#definePRINTF  "学号      姓名    性别  生   日   系别       班级       家庭住址\n"

struct STH*readfile();/*声明*/ﻫintinsert(structSTH**);

intn=0;

struct dtﻫ{ﻫ    intyear;               /*全局变量*/ﻫ   intmonth;

   intday;

};ﻫstructSTHﻫ{

   longnum;                    /*学号不能以0开头*/

    charname[9];

    charsex[5];ﻫ   structdtbirth;

   charxi[20];ﻫ    charban[20];ﻫ   charadd[30];ﻫ    structSTH* next;ﻫ}*head;

/*输入模块*/

input_message()ﻫ{

    charch;ﻫ   intflag=1;

    doﻫ   {ﻫ       if(insert(&head)!

=0)ﻫ            n++;              /*计数*/ﻫ        else

           printf("\n有相同的的学号!

");ﻫ       printf("\n是否继续?

(y/n)");

       getchar();ﻫ        scanf("%c",&ch);ﻫ        if(ch=='y'||ch=='Y')ﻫ       {ﻫ           printf("\n继续!

");

           getch();ﻫ            flag=1;/*标志程序不结束*/ﻫ       }

       else

           flag=0;

   }while(flag==1);ﻫ   save_message();

   printf("按任意键继续...");ﻫ   getch();

/*insert()模块*/               /*被输入和插入模块所调用*/

int insert(structSTH**h)ﻫ{ﻫ   structSTH*p,*p0;ﻫ    p=(structSTH*)malloc(N);ﻫ   printf("\n请输入学号:

");

   scanf("%ld",&p->num);

    printf("\n请输入姓名:

");

    scanf("%s",p->name);

   printf("\n请输入性别:

");ﻫ    getchar();     /*取走上一个留下来得‘\n’*/ﻫ    scanf("%s",p->sex);

    printf("\n请输入生日(年月日,用回车隔开):

\n");ﻫ   scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day);ﻫ   printf("\n请输入系别:

");

   scanf("%s",p->xi);

   printf("\n请输入班级:

");ﻫ    scanf("%s",p->ban);

    printf("\n请输入家庭住址:

");ﻫ    scanf("%s",p->add);ﻫ   p->next=NULL;ﻫ   if(*h==NULL)

   {

       *h=p;ﻫ       return1;

   }ﻫ   p0=*h;

   if(p0->num>p->num)ﻫ    {ﻫ       p->next=p0;ﻫ       *h=p;ﻫ       return1;

   }

ﻫ   while(p0->next!

=NULL&&p0->next->num<p->num)ﻫ        p0=p0->next;

    if(p0->next==NULL)

   {ﻫ       p0->next=p;ﻫ       return1;ﻫ   }

   elseif(p0->next->num==p->num)

   {ﻫ       free(p);           /*有相同数据输入失败*/ﻫ       return0;

   }ﻫ   elseﻫ    {

       p->next=p0->next;

       p0->next=p;

       return1;

   }

/*读文件模块*/                               /*读文件模块中创建了一个新的链表,其返回值为新链表的头指针*/

structSTH*readfile()ﻫ{

    FILE*fp;

   structSTH*p,*p0;ﻫ    charch;

   inti;

   if((fp=fopen("STH.txt","r"))==NULL)

   {ﻫ       printf("\n不能读取文件!

\n");

       returnNULL;ﻫ   }                                               /*注意要该*/ﻫ   head=p=p0=(struct STH *)malloc(N);

   fscanf(fp,"%d",&n);

   fscanf(fp,"%c",&ch); /*为了使学号和信息个数分开加入一个‘/’*/

   fscanf(fp,"%ld%s%s%d%d%d%s%s%s",ﻫ          &p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add);

   p->next=NULL;

    i=1;              /*如果只有一个数时跳出*/

    if(n!

=1)ﻫ    {ﻫ        doﻫ       {

           p=(structSTH*)malloc(N);

            fscanf(fp,"%ld%s%s%d%d%d%s%s%s",ﻫ               &p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add);

           p0->next=p;ﻫ           p0=p;

           i++;

       }while(i

    fclose(fp);ﻫ   returnhead;

}

/*插入模块*/

insert_message()ﻫ{ﻫ   structSTH*p;ﻫ   int flag=1;ﻫ    charch;

   head=readfile();ﻫ   doﻫ   {

       if(insert(&head)!

=0)ﻫ       {

           n++;ﻫ            save_message();ﻫ           printf("");ﻫ        }                  /*计数*/ﻫ       elseﻫ       {

           printf("\n添加失败!

\n有相同的的学号!

");ﻫ           save_message();ﻫ            getch();

        }ﻫ       printf("\n是否继续?

(y/n)");ﻫ       getchar();ﻫ       ch=getchar();

       if(ch=='y'||ch=='Y')ﻫ        {

           printf("\n继续!

");

           flag=1;/*标志程序不结束*/

       }

       elseﻫ           flag=0;

    }while(flag==1);

   printf("\n按任意键继续...");ﻫ   getch();ﻫ}

ﻫ/*修改模块*/

renew_message()ﻫ{ﻫ   structSTH*p;

   int i,flag=1;

   longnum;ﻫ    p=head=readfile();

   if(head==NULL)

   {

       printf("读文件有误!

");

       getch();

   }

    elseﻫ   {ﻫ        printf("\n请按输入要修改的学生的学号:

");ﻫ       scanf("%ld",&num);

       for(i=0;inum==num)ﻫ           {

               p->num=num;

               printf("\n已找到要%ld号学生的信息!

\n",num);ﻫ               printf("原姓名为%s  要修改为:

\n",p->name);ﻫ                scanf("%s",p->name);

               printf("原性别为%s 要修改为:

\n",p->sex);

               scanf("%s",p->sex);ﻫ               printf("原生日为%d/%d/%d 要修改为:

\n",p->birth.year,p->birth.month,p->birth.day);

               scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day);ﻫ               printf("原系别为%s 要修改为:

\n",p->xi);

               scanf("%s",p->xi);

               printf("原班级为%s 要修改为:

\n",p->ban);

               scanf("%s",p->ban);

                printf("原家庭住址为%s  要修改为:

\n",p->add);ﻫ                scanf("%s",p->add);ﻫ               printf("你所更改后的信息为:

\n");ﻫ               printf(PRINTF);

               printf(GESHI,

                        p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);

               printf("\n按任意键退出!

\n");ﻫ               getch();ﻫ                flag=1;ﻫ               break;ﻫ           }

            elseﻫ               p=p->next;ﻫ        }

       if(flag!

=1)

           printf("无此人信息!

\n");ﻫ       elseﻫ           save_message();ﻫ       getch();

    }

}

/*删除模块*/

delete_message()ﻫ{

   int flag;ﻫ   longnum;ﻫ   charch;ﻫ    structSTH*p,*p0;ﻫ   p0=p=head=readfile();

   if(head==NULL)

   {ﻫ       printf("文件读取出错!

");

        getch();ﻫ    }ﻫ    else

   {ﻫ       printf("请输入要删除学生的学号:

\n");ﻫ       scanf("%ld",&num);ﻫ       if(p0->num==num)ﻫ        {ﻫ            head=p0->next;ﻫ           free(p0);

           flag=1;ﻫ           n--;    /*学生数减一*/

       }ﻫ       p=p0->next;

       while(p!

=NULL)ﻫ       {

           if(p->num==num)

            {ﻫ               p0->next=p->next;

                free(p);

                flag=1;ﻫ               n--;

           }ﻫ           else

            {

               p0=p;

                p=p->next;

           }ﻫ       }

        if(p->next==NULL)

           flag=0;

       if(flag==1)ﻫ       {

           printf("\n永久删除%ld号学生的信息?

(y/n)",num);ﻫ           getchar();

           ch=getchar();

           if(ch=='y'||ch=='Y')ﻫ               save_message();

           elseﻫ           {ﻫ               printf("\n撤消删除!

");

               getch();ﻫ           }

       }ﻫ       elseﻫ           printf("\n删除失败!

");ﻫ       getch();

    }

/*查询模块*/ﻫinquire_message()

{

   inti,flag=0;

   longnum;ﻫ   structSTH*p;

   p=head=readfile();

   if(head==NULL)

   {

        printf("文件读取出错!

");

       getch();ﻫ   }ﻫ   elseﻫ   {

       printf("请输入要查询学生的学号:

\n");ﻫ       scanf("%ld",&num);ﻫ       for(i=0;i

       {ﻫ           if(p->num==num)

           {ﻫ               printf("\n信息已找到:

\n");

               getch();ﻫ               clrscr();

               printf("**********************************FOUND*********************************\n");ﻫ                printf("------------------------------------------------------------------------\n\n");ﻫ                printf(PRINTF);

               printf(GESHI,ﻫ                       p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);ﻫ                printf("\n------------------------------------------------------------------------\n");ﻫ                printf("***********************************END**********************************\n");

               flag=1;break;ﻫ           }ﻫ           elseﻫ               p=p->next;

       }ﻫ       if(flag==0)

           printf("\n无此人信息!

");ﻫ       elseﻫ           printf("\n显示完毕!

\按任意键返回主菜单......");

        getch();

   }ﻫ}

/*显示模块*/ﻫoutput_message()

{ﻫ    inti=0;ﻫ   structSTH*p;ﻫ   p=head=readfile();

   if(head==NULL)

   {ﻫ       printf("文件读取出错!

");ﻫ        getch();ﻫ   }ﻫ   elseﻫ    {ﻫ       clrscr();ﻫ       printf("\n************************************STUDENT************************************\n");

       printf("-------------------------------------------------------------------------------\n");ﻫ       printf(PRINTF);

       while(i

       {ﻫ            printf(GESHI,ﻫ                   p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);

           p=p->next;

            i++;ﻫ        }

       printf("-------------------------------------------------------------------------------\n");ﻫ         printf("**************************************END**************************************\n");

        printf("\n显示完毕!

\n共%d条信息.\n按任意键返回主菜单......",n);

       getch();

   }

}

/*存档模块*/ﻫsave_message()

{

    FILE*fp;ﻫ   int i;ﻫ   struct STH*p;ﻫ   p=head;

   if((fp=fopen("STH.txt","w"))==NULL)

   {ﻫ       printf("读文件错误!

");

       exit(0);

   }

   fprintf(fp,"%d",n);ﻫ   fprintf(fp,"%c",'/');                                                             /*注意要该*/

    for(i=0;i

    {

       fprintf(fp,"%ld%s%s%d %d %d%s%s%s",

               p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);ﻫ       p=p->next;ﻫ   }

    fclose(fp);

   printf("\n信息已经保存在STH.txt文件中!

");ﻫ    getch();

  /*主函数*/

ﻫvoidmain(void)ﻫ{

   intchoice;

   charch;

   FILE*fp;ﻫ    structdate d;

   getdate(&d);ﻫ    if((fp=fopen("STH.txt","r"))==NULL)

    {

        fp=fopen("STH.txt","w");

       fprintf(fp,"%d",0);

       fclose(fp);

   }

   elseﻫ    {

       fscanf(fp,"%d",&n);

        fclose(fp);ﻫ   }

   clrscr();ﻫ   printf("制作人:

通工0501 李艺凡");

   printf("\n\n\n");

   printf("            **************************************************     \n");

   printf("                            欢迎进入学生户籍系统                  \n\n");

   printf("                   1创建记录\n");ﻫ    printf("         

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1