【硬核】用C语言来写学生成绩管理系统,让你的课设不再是难题

目录

嗨!这里是狐狸~~

一、需求分析说明

二、概要设计说明

三、详细设计说明

1)主函数模块

2)声明模块

3)查询模块

4)输入模块

5)增加模块

6)删除模块

7)插入模块

8)统计模块

9)数据保存

四、总结

视频讲解


其实我就是想找一个谈得来,合脾气,在一起舒坦,分开久了有点想念的人,爱情如此,友情同理。

嗨!这里是狐狸~~

大家的期末课设要来了吧,有想法做什么了嘛,有没有为此熬夜,有没有为此努力呢,今天,我们来写一个学生成绩管理系统,一方面是让大家复习一下自己学过的知识,一方面是为了给大家的期末课设提供一点思路。前面讲的都是一些项目,不知道现在写一个系统,大家能不能掌握呢?emmm,我们一步一步的来吧,尽量让大家懂得怎么去做一个系统,我写了很多的注释,大家可以根据注释来理解。(代码有点多哈,这次头文件就不放了)

一、需求分析说明

本系统实现了学生成绩管理系统所需的相关功能,其中的功能主要分为五项:

1)实现对两个文件数据进行合并生成新文件

2)抽取出三科成绩中有补考的学生并保存在一个新文件

3)对合并后的文件中的数据按总分降序排序(至少采用两种排序方法实现) 

4)输入一个学生姓名后能查找到此学生的信息并输出结果

5)要求使用结构体、链或数组等实现上述要求

二、概要设计说明

模块调用图:

三、详细设计说明

1)主函数模块

调用各功能模块,实现文件合并、查找学生信息、排序等功能。

本模块的主要功能是初始化图形界面,进入主菜单,调用各模块,实现软件功能。

主菜单

void menu()  /*主菜单*/
{
system("cls");   /*调用DOS命令,清屏.与clrscr()功能相同*/
textcolor(10);   /*在文本模式中选择新的字符颜色*/
gotoxy(10,5);     /*在文本窗口中设置光标*/
cprintf("                 The Students' Grade Management System \n");
gotoxy(10,8);
cprintf("     *************************Menu********************************\n");
gotoxy(10,9);
cprintf("     *  1 input   record             2 delete record             *\n");
gotoxy(10,10);
cprintf("     *  3 search  record             4 modify record             *\n");
gotoxy(10,11);
cprintf("     *  5 insert  record             6 count  record             *\n");
gotoxy(10,12);
cprintf("     *  7 sort    reord              8 save   record             *\n");
gotoxy(10,13);
cprintf("     *  9 display record             0 quit   system             *\n");
gotoxy(10,14);
cprintf("     *************************************************************\n");
/*cprintf()送格式化输出至文本窗口屏幕中*/
}

主函数

void main()
{

  Link l;      /*定义链表*/
  FILE *fp;    /*文件指针*/
  int select;     /*保存选择结果变量*/
  char ch;     /*保存(y,Y,n,N)*/
  int count=0; /*保存文件中的记录条数(或结点个数)*/
  Node *p,*r;   /*定义记录指针变量*/


  l=(Node*)malloc(sizeof(Node));
  if(!l)
   {
      printf("\n allocate memory failure "); /*如没有申请到,打印提示信息*/
      return ;             /*返回主界面*/
   }
  l->next=NULL;
  r=l;
  fp=fopen("C:\\student","ab+"); /*以追加方式打开一个二进制文件,可读可写,若此文件不存在,会创建此文件*/
  if(fp==NULL)
  {
    printf("\n=====>can not open file!\n");
    exit(0);
  }

while(!feof(fp))
{
  p=(Node*)malloc(sizeof(Node));
  if(!p)
   {
      printf(" memory malloc failure!\n");    /*没有申请成功*/
      exit(0);       /*退出*/
   }

  if(fread(p,sizeof(Node),1,fp)==1) /*一次从文件中读取一条学生成绩记录*/
  {
   p->next=NULL;
   r->next=p;
   r=p;                            /*r指针向后移一个位置*/
   count++;
   }
}

fclose(fp); /*关闭文件*/
printf("\n=====>open file sucess,the total records number is : %d.\n",count);
menu();
while(1)
{
   system("cls");
   menu();
   p=r;
   printf("\n              Please Enter your choice(0~9):");    /*显示提示信息*/
   scanf("%d",&select);

  if(select==0)
  {
   if(saveflag==1) /*若对链表的数据有修改且未进行存盘操作,则此标志为1*/
   { getchar();
     printf("\n=====>Whether save the modified record to file?(y/n):");
     scanf("%c",&ch);
     if(ch=='y'||ch=='Y')
       Save(l);
   }
   printf("=====>thank you for useness!");
   getchar();
   break;
  }

  switch(select)
  {
  case 1:Add(l);break;            /*增加学生记录*/
  case 2:Del(l);break;           /*删除学生记录*/
  case 3:Qur(l);break;           /*查询学生记录*/
  case 4:Modify(l);break;        /*修改学生记录*/
  case 5:Insert(l);break;        /*插入学生记录*/
  case 6:Tongji(l);break;       /*统计学生记录*/
  case 7:Sort(l);break;        /*排序学生记录*/
  case 8:Save(l);break;        /*保存学生记录*/
  case 9:system("cls");Disp(l);break;         /*显示学生记录*/
  default: Wrong();getchar();break;        /*按键有误,必须为数值0-9*/
  }
}
}

2)声明模块

函数的声明,以及一些简单的功能实现,这个不好怎么说,自己看注释理解吧!

void print
  • 22
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值