最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数据结构源代码

来源:动视网 责编:小OO 时间:2025-10-02 19:15:19
文档

数据结构源代码

附录(源程序以及调试结果分析中的界面)#include”stdafx.h”#include#include#include#defineN40#definePRprintf(“\\n\\r%s%s%s%s%s%s%s%s%s%s“,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].score[5],stu[i].score[6
推荐度:
导读附录(源程序以及调试结果分析中的界面)#include”stdafx.h”#include#include#include#defineN40#definePRprintf(“\\n\\r%s%s%s%s%s%s%s%s%s%s“,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].score[5],stu[i].score[6
附录(源程序以及调试结果分析中的界面)

#include”stdafx.h”

#include

#include

#include

#define N 40

#define PR printf(“\\n\\r%s  %s  %s   %s  %s  %s  %s   %s   %s  %s “,

stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].score[5],stu[i].score[6],stu[i].score[7],stu[i].score[8],stu[i].ave)

struct student

{char num[11];

 char name[20];

 int score[8];

 float ave;

}stu[N];

typedef struct node {unsigned long int key;

                     struct node * link;}HNode;

typedef struct{int key;  

               float data; }RecNode;

/*保存函数*/

save(int n)                      

{FILE *fp;

 int i;

 if((fp=fopen("sc.txt","wb"))==NULL)   

  {printf("\\n不能打开文件\\n");

   getch();return NULL;}

 for(i=0;i   if(stu[i].ave!=0)            

if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)

       printf("文件输入错误\\n");

 fclose(fp);}

/*加载记录或可以计算记录个数的函数*/

load()                       

{FILE *fp;

 int i;

 if((fp=fopen("sc.txt","rb"))==NULL)    

  {printf("\\n不能打开文件\\n");

   getch();return NULL;}

 for(i=0;!feof(fp);i++)

  fread(&stu[i],sizeof(struct student),1,fp);

 fclose(fp);

 return(i-1);}

/*一个任务结束时的选择浏览还是返回的函数*/

void printf_back()             

 printf("\\n\\n\^-^★成功★ ^-^\\n\\n");

 printf("请选择:\\n\\n\1).现在浏览全部\2).返回:  [ ]\\b\\b");

 scanf("%d",&w);

 if(w==1) browse();

 else teacher();}

/*显示数据结构项目函数*/

void printf_face()           

{printf("\\n\学号 姓名\英语 数学 C语言 管理学 信检 体育 近代史 线数 平均分\\\n");}

average(int i)                    

{int j,sum;

 for(sum=0,j=0;j<8;j++)

   sum+=stu[i].score[j];

 stu[i].ave=sum/8.0;}

/*学号输入函数*/

no_input(int i,int n)                 

{int j,k,w1;

  do

  {w1=0;

   printf("学号:");

   scanf("%s",stu[i].num);

   for(j=0;stu[i].num[j]!='\\0';j++)               if(stu[i].num[j]<'0'||stu[i].num[j]>'9')    

       {puts("Input error! Only be made up of (0-9).Please reinput!\\n");

        w1=1;break;

       }

   if(w1!=1)

for(k=0;k       {puts("该记录已存在. 请重新输入!\\n");

        w1=1;break;}

  }

  while(w1==1);}

/*对分数输入*/

score_input(int i)

{int j;printf(" 1.英语  2.数学  3.C语言 4.管理学 5.信检 6.体育 7.近代史 8.线性代数\\n"); 

 for(j=0;j<8;j++)

  {printf("score %d:",j+1);

   scanf("%d",&stu[i].score[j]);}}

/*输入一个记录函数*/

input(int i)                           

{ no_input(i,i);                     

 printf("姓名:");

 scanf("%s",stu[i].name);

 score_input(i);          

average(i); }

/*显示一个记录的函数*/

printf_one(int i)                              

{int j;

 printf("%11s  %-10s",stu[i].num,stu[i].name);

 for(j=0;j<8;j++)

   printf("%-6d",stu[i].score[j]);

 printf("%-7.2f\\n",stu[i].ave);

}

void puts___()     {puts("\\n--------------------------------------------------------------------");

}

/*修改记录函数*/

modify_data(int i,int n)          

{int c,w1;

  do                                

 {puts("\\nmodify by =>\\n\\n 1).学号  2.姓名  3).数据结构  4).数学\\n  5).数据库 6).数学建模 7).信息管理 8).体育 9).毛概\\n 10).线性代数  11).all score  12).all data  13).cancel and back");

    printf("请选择: [ ]\\b\\b");

    scanf("%d",&c);

    if(c>13||c<1)

            {puts("\\n选择错误! 重新选择!");   

             getchar();    }}

   while(c>13||c<1);

  do

   {switch(c)                     

    {case 1:no_input(i,n);break;    

     case 2:printf("姓名:");scanf("%s",stu[i].name);break;

     case 3:printf("英语:");scanf("%d",&stu[i].score[0]);break;

     case 4:printf("数学:");scanf("%d",&stu[i].score[1]);break;

     case 5:printf("C语言:");scanf("%d",&stu[i].score[2]);break;

     case 6:printf("管理学:");scanf("%d",&stu[i].score[3]);break;

     case 7:printf(":信检");scanf("%d",&stu[i].score[4]);break;

     case 8:printf("体育:");scanf("%d",&stu[i].score[5]);break;

     case 9:printf("近代史:");scanf("%d",&stu[i].score[6]);break;

     case 10:printf("线性代数:");scanf("%d",&stu[i].score[7]);break;

     case 11:score_input(i);break;

     case 12:input(i);break;   

     case 13:teacher();   }

    if(c>2&&c<10)

      average(i);                  

    puts("\\nNow:\\n");

printf_face();                         

printf_one(i);                 

    printf("\\n是否确定?\\n\\n\1).确定 2).重新修改   3).不保存返回   [ ]\\b\\b");  

    scanf("%d",&w1);   }

   while(w1==2);

  return(w1); }

/****************输入模块****************/

enter()                           

{int i,n;

 printf("输入学生总数(0-%d)?:",N);

 scanf("%d",&n);                  

printf("\\n现在输入数据\\n\\n");

 for(i=0;i   {printf("\\nInput %dth student record.\\n",i+1);

input(i); }

 if(i!=0) save(n);                            

printf_back();}

/****************追加模块****************/

add()                            

 {int i,n,m,k;

 FILE *fp;

 n=load();

 printf("增加的学生总数(0-%d)?:",N-n);

 scanf("%d",&m);              

k=m+n;

 for(i=n;i   {printf("\\nInput %dth student record.\\n",i-n+1);

input(i); }

 if((fp=fopen("sc.txt","ab"))==NULL)  

  {printf("不能打开文件\\n");

   return;}

 for(i=n;i   if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)

     printf("文件输入错误\\n");

 fclose(fp);

 printf_back();}

 /****************修改模块****************/

modify()                        

{struct student s;

 FILE *fp;

 int i,n,k,w0=1,w1,w2=0;

 n=load();

 do

 {system("cls");

  k=-1;

   puts___();            

  printf_face();                

  for(i=0;i{if((i!=0)&&(i%10==0))     

       {printf("\\n\\nRemember NO.which needed modify. pass any key to contiune  . . .");

        getch();

        puts("\\n\\n");}

     printf_one(i); }

  puts___();

  do{printf("\\n\\n输入修改学号!    NO.:");

scanf("%s",s.num);                

for(i=0;i     if(strcmp(s.num,stu[i].num)==0)

       {k=i;                      

        s=stu[i]; }

    if(k==-1) printf("\\n\\n不存在! 重新输入");}

   while(k==-1);           

  printf_face();              

  printf_one(k);                  

  w1=modify_data(k,n);          

  if(w1==1)       

    {printf("\\n ^-^ ★成功★ ^-^.\\n\\n是否修改其他?\\n\\n\1).是  2).保存返回\[ ]\\b\\b");

     scanf("%d",&w0);

     w2=1; }

  else

    {w0=0;

     if(w2==1)

       stu[k]=s;}      

  if(w0!=1&&w2==1)    

        save(n); }

  while(w0==1);

 teacher();}

/****************删除模块****************/

del()                             

{struct student s;

 FILE *fp;

 int i,j,n,k,c,w0=1;

 n=load();

 do

 {system("cls");

  k=-1;

 /*给用户看全部记录以便确认要删除的记录*/

  puts___();

  printf_face();                

  for(i=0;i    if(stu[i].ave!=0)

     {if((i!=0)&&(i%10==0))    

       {printf("\\n\\nRemember NO. which needed del. pass any key to contiune  . . .");

        getch();

        puts("\\n\\n");}

      printf_one(i); }

  puts___();

  do

   {printf("\\n\\n输入删除学号!    NO.:");

scanf("%s",s.num);                

for(i=0;i     if(strcmp(s.num,stu[i].num)==0)

       {k=i;                      

        s=stu[i];}

    if(k==-1) printf("\\n\\n不存在! 重新输入");   }

   while(k==-1);

  puts("\\n");

  printf_face();                

  printf_one(k);                   

  printf("\\n是否确定?\\n\1).是   2).否且删除其他   3).保存全部返回  [ ]\\b\\b");

  scanf("%d",&c);

  if(c==1)

{stu[k].ave=0;        

     printf("\\n\\n ^-^ ★成功★ ^-^.\\n\\n是否重输?\\n\1).是  2).返回菜单\[ ]\\b\\b");   

     scanf("%d",&w0);

    }

  if(c==3) w0=0;           

  if(w0!=1&&c!=3)           

     save(n);}

  while(w0==1);

 teacher(); }

/****************浏览(全部)模块****************/

browse()                          

{int i,j,n;

 n=load();         

system("cls");

 puts___();

 printf_face();                  

for(i=0;i   {if((i!=0)&&(i%10==0))               

     {printf("\\n\\nPass any key to contiune  . . .");

      getch();

      puts("\\n\\n");}

    printf_one(i);}

 puts___();

 printf("\There are  %d record.\\n",n);

 printf("\\nPass any key to back  . . .");

 getch();                          

 teacher();}

 /****************查找模块****************/

int h(char k)

{return(k%5);}

int linkinsert(HNode *t[],char k)

{int i;

HNode *p;

i=h(k);

if(t[i]==NULL)

{p=(HNode*)malloc(sizeof(HNode));

p->key=k;p->link=NULL;

t[i]=p;printf("\\n inserted %lu\\n ",k);

return(1);}

else

{p=t[i];

while(p!=NULL)

if(p->key==k)

{printf("\\n retrieval %lu\\n ",k);return(0);}

else if(p->link!=NULL) p=p->link;

else{p->link=(HNode*)malloc(sizeof(HNode));

p=p->link;p->key=k;p->link=NULL;

printf("\\n inserted %lu\\n ",k);return(1);

getch();}}}

HNode *linksearch(HNode *t[],char k)

{HNode *p;

int i;

i=h(k);

if(t[i]==NULL)return(NULL);

p=t[i];

while(p!=NULL)

if(p->key==k)

{printf("%lu\\n",p->key);

return(p);}

else p=p->link;

return(NULL);}

search()                          

{int i,n,k,w1=1,w2,w3,w4;

 struct student s;

 n=load();

 do

  {do

    {k=-1;

     printf("\\n\\n输入查找学号!    NO.:");

     scanf("%s",s.num);                

     printf_face();                 

     for(i=0;i if(strcmp(s.num,stu[i].num)==0)

         {k=i;                     

          printf_one(k);break;}

     if(k==-1)

       {printf("\\n\\n不存在! 请重新输入");

        printf("\\n\\n是否确定?\\n\1).是   2).否且返回  [ ]\\b\\b");

        scanf("%d",&w1);}}

    while(k==-1&&w1==1);              

   w4=0;w3=0;

   if(k!=-1)                           

       {printf("\\n\\n请选择:\\n\1).查找另一个数据   2).修改   3).删除   4).返回目录   [ ]\\b\\b");

        scanf("%d",&w2);

        switch(w2)

          {case 2:w3=modify_data(k,n);break; 

           case 3:{printf("\\n是否确定?\\n\1).是   2).否且返回   [ ]\\b\\b");

                   scanf("%d",&w4);

                   if(w4==1)

                     stu[k].ave=0;     

                   break;

                  }

          }

        if(w3==1||w4==1)

           {save(n);

            printf("\\n\\n ^-^ ★成功★ ^-^.");

            printf("\\n\\n请选择:\\n\1).查找另一个数据   2).返回   [ ]\\b\\b");

            scanf("%d",&w2);}

       }

   }

   while(w2==1);

 teacher();

}

/****************插入模块****************/

insert()                          

{int i,j,n,c;

 struct student s;

 n=load();

 puts("\\n输入一个数据.\\n");

 do

  {input(n);       

   printf_face();

   printf_one(n);

   printf("\\n\\n是否确定?\\n\\n\1).是\2).取消重输\3).不保存返回  [ ]\\b\\b");

   scanf("%d",&c);

   if(c==1)

     {for(j=0;j        for(i=n;i>j;i--)

          if(stu[i].ave>stu[i-1].ave)

            {s=stu[i-1];stu[i-1]=stu[i];stu[i]=s;}

      save(n+1);

      printf_back();

     }

   else if(c!=2) teacher();

  }

  while(c==2);

}

/****************排序模块(按平均成绩)****************/

void sift(RecNode r[],int t,int w)    

{int i,j;

RecNode x;

i=t;

x=r[i];

j=2*i+1;

while(j<=w)

{if((jr[j+1].key))

j++;

if(x.key>r[j].key)

{r[i]=r[j];i=j;j=2*j+1;}

else break;}

r[i]=x;}

void heapsort(RecNode r[],int n)   

{int i;

RecNode x;

for(i=n/2-1;i>=0;i--)

sift(r,i,n-1);

for(i=n-1;i>0;i--)

{x=r[0];r[0]=r[i];

r[i]=x;

sift(r,0,i-1);}

}

/****************排序模块(按平均成绩)****************/

order()                          

{int i,j,k,n;

 struct student s;

 n=load();

 for(i=0;i   {k=i;

    for(j=i+1;j      if(stu[j].ave    s=stu[i];stu[i]=stu[k];stu[k]=s;

   }

 save(n);

 puts("\\n\\n");

 printf_back();}

/*****************统计模块*******************/

void fenduantongji()

{int k,u,n,i,j,w1=1,w2;

int a,b,c,d,e;

a=0;b=0;c=0;d=0;e=0;

printf(" 1.英语  2.数学  3.C语言 4.管理学 5.信检 6.体育 7.近代史 8.线性代数 9.平均分\\n"); 

printf("请输入要统计的科目:");

scanf("%d",&u);

if(u<=8)

{n=u;

 for(i=0;i{k=stu[i].score[n-1];

{if(k>=90)

a=a+1;

else if(k<90&&k>=80)

b=b+1;

else if(k<80&&k>=70)

c=c+1;

else if(k<70&&k>=60)

d=d+1;

else if(k<60)

e=e+1;

}}}

else {n=u;

 for(i=0;i{k=stu[i].ave;

{if(k>=90)

a=a+1;

else if(k<90&&k>=80)

b=b+1;

else if(k<80&&k>=70)

c=c+1;

else if(k<70&&k>=60)

d=d+1;

else if(k<60)

e=e+1;}}}

printf("学生成绩在 90~100 间有:\\n  %d\\n",a);

printf("学生成绩在 80~  间有 :\\n  %d\\n",b);

printf("学生成绩在 70~79  间有  :\\n  %d\\n",c);

printf("学生成绩在 60~69  间有  :\\n  %d\\n",d);

printf("低于60的有:\\n  %d\\n",e);

 printf("\\n是否继续?\\n\\n\1).是 2).否     [ ]\\b\\b"); 

 scanf("%d",&w1);

if(w1==1)  fenduantongji(w1); 

else

teacher();}

/****************教师界面****************/

teacher()                            

{int n,w1;

 do

  {system("cls");                     puts("\\*********************MENU*********************\\n\\n");

   puts("\\\\1.输入新数据");

   puts("\\\\2.添加数据");

   puts("\\\\3.修改数据");

   puts("\\\\4.删除数据");

   puts("\\\\5.浏览全部");

   puts("\\\\6.学号查询");

   puts("\\\\7.插入数据");

   puts("\\\\8.按平均分排序");

   puts("\\\\9.分段统计");

   puts("\\\\10.退出");

   puts("\\\\11.返回主界面");

   puts("\\n\\n\\**********************************************\\n");

   printf("请选择序号:(1-11): [ ]\\b\\b");

   scanf("%d",&n);

   if(n<1||n>11)                                      {w1=1;getchar();}

   else  w1=0; }

  while(w1==1); 

 /*选择功能*/

 switch(n)

  {case 1:enter();break;      /*输入模块*/

   case 2:add();break;        /*追加模块*/

   case 3:modify();break;     /*修改模块*/

   case 4:del();break;        /*删除模块*/

   case 5:browse();break;     /*浏览模块*/

   case 6:search();break;     /*查找模块*/

   case 7:insert();break;     /*插入模块*/

   case 8:order();break;      /*排序模块*/

   case 9:fenduantongji();break;/*统计模块*/  

   case 10:exit(0);            /*退出*/

   case 11:menu();            /*返回主界面*/

   getch();}

}

 /****************密码函数****************/

distin()                            

{int f;

char mima[]={"gdut09"};

char mi[6];

printf("输入密码:");

scanf("%s",mi);

   if(strcmp(mima,mi)==0)

   {teacher();}

   else 

   {printf("密码错误!\\n");

   printf("\\n\\n请选择:\\n\1).目录   2).退出   [ ]\\b\\b");

   scanf("%d",&f);

   switch(f)

   {case 1:

   menu();

   break;

   case 2:

   exit(0);

   break;}

   }

}

/****************学生界面****************/

st()                                 

{int i,n,k,w1=1,w2,w3,w4;

 struct student s;

 n=load();

 do

  {system("cls");

     do

    {k=-1;

     printf("\\n\\n请输入学号   NO.:");

     scanf("%s",s.num);

     printf_face();

     for(i=0;i       if(strcmp(s.num,stu[i].num)==0)

         {k=i;

          printf_one(k);break;

     if(k==-1)

       {printf("\\n\\n不存在! 重输入");

        printf("\\n\\n是否重新输入?\\n\1).是 [ ]\\b\\b");

        scanf("%d",&w1); }

    }

    while(k==-1&&w1==1);

   w4=0;w3=0;

   if(k!=-1)

       {printf("\\n\\n请选择:\\n\1).返回目录   [ ]\\b\\b");

        scanf("%d",&w2);

        switch(w2)

          {case 1:menu();break;

           case 3:{printf("\\n是否确定?\\n\1).否且返回   [ ]\\b\\b");

                   scanf("%d",&w4);

                   if(w4==1)

                     stu[k].ave=0;

                   break;}

          }

        if(w3==1||w4==1)

           {save(n); 

            printf("\\n\\n ^-^ ★成功★ ^-^.");

            printf("\\n\\n请选择:\\n\1).返回   [ ]\\b\\b");

            scanf("%d",&w2);}

       }

   }

   while(w2==1);

 menu();}

/****************主界面****************/

menu()                          

int c;

 {system("cls");                  

  printf("\\n");

printf("\\n");

printf("\\n");

printf("\\n");

printf("\\n");

printf("\\n");

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

printf("\\n      ●      ●  ■■■■■  ▲        ▲        ■■■■■     ");

printf("\\n      〓      〓  ■          〓        〓        ■      ■");

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

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

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

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

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

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

getch();

system("cls");

printf("\\n");

printf("\\n");

printf("\\n");

printf("\\n");

printf("\\n");

printf("\\n");

printf("\\n");

printf("\\n\\\        欢迎使用学生成绩管理系统\\n\\n");

   puts("\\★★★★★★★★★★★目录★★★★★★★★★★★\\n\\n");

   printf("\\                 1.教师登陆\\n");

   printf("\\                 2.学生登录\\n");

   printf("\\                 3.退出");

   puts("\\n\\n\\★★★★★★★★★★★★★★★★★★★★★★★★\\n");

 scanf("%d",&c);

 switch(c)

 { case 1:

 distin();

 break;

 case 2:

 st();

 break;

 case 3:

 exit(0);

 break;}

 }

}

/*****************主函数****************/

main()

{menu();

 getch();

}

运行该程序界面:

3.教师界面

文档

数据结构源代码

附录(源程序以及调试结果分析中的界面)#include”stdafx.h”#include#include#include#defineN40#definePRprintf(“\\n\\r%s%s%s%s%s%s%s%s%s%s“,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].score[5],stu[i].score[6
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top