欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    课程设计:学生成绩管理系统.doc

    • 资源ID:30868216       资源大小:61.54KB        全文页数:25页
    • 资源格式: DOC        下载积分:9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    课程设计:学生成绩管理系统.doc

    精品文档就在这里-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-课程设计:学生成绩管理系统一:课程设计目的通过本次课程设计,进一步熟悉掌握以下知识:数据类型号、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等。达到系统理解、综合运用课程知识的学习目标;学会用C语言程序解决实际问题的方法;掌握程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试、调试方法。二:总体设计内容(一)、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu p1)来实现此操作.2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。 3、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。 5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。(二)、系统主模块结构图:三:详细设计(一)、 界面设计此系统界面采用图形和数字化菜单设计.主界面设计如下: 学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统(二)、 数据结构设计: 程序设计中用到的结构体类型: 学生信息结构体类型:typedef struct student char nameMAX; int numMAX; char sexMAX; int chinese; int mathematic; int english; int computer; struct student *next;(三)、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)(四)、调试与测试问题一、学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu p1)来实现此操作.当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。 解决办法及步骤:1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。 2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错 3、输出用于循环检查语句中的学生信息,发现乱码 4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。 问题二、查询模块:可用stu lookdata(stu p1) 来实现.找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。解决办法及步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。 2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息.(五)、源程序清单和执行结果#include <malloc.h>#include <stdio。h>#include stdlib。h#define LEN sizeof(struct scorenode)define DEBUG#include string。h>struct scorenodeint number;/学号*/char name10;/*姓名*/float yuwen;/语文成绩*/float yingyu;/*英语成绩/float shuxue;/数学成绩 */struct scorenode next;typedef struct scorenode score;int n,k;/*n,k为全局变量,本程序中的函数均可以使用它/*=/score *creat2311(void)/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/scorehead;score *p1,p2,p3,max;int i,j;float fen;   char t10;  n=0;    p1=p2=p3=(score *)malloc(LEN);head=p3; /开辟一个新单元*/     printf(”请输入学生资料,输0退出!n”);repeat1: printf("请输入学生学号(学号应大于0):");/输入学号,学号应大于0/     scanf("d",p1->number);    while(p1number0)  getchar();   printf(”输入错误,请重新输入学生学号:”);     scanf("%d”,p1>number);       /输入学号为字符或小于0时,程序报错,提示重新输入学号/  if(p1number=0)  goto end;/*当输入的学号为0时,转到末尾,结束创建链表/  else      p3=head;  if(n0)  for(i=0;i<n;i+)        if(p1-number!=p3number)    p3=p3next;    else     printf(”学号重复,请重输!n”);    goto repeat1;    /*当输入的学号已经存在,程序报错,返回前面重新输入/                             printf("请输入学生姓名:");     scanf(”%s",&p1>name);/输入学生姓名/     printf("请输入语文成绩(0100):");/输入语文成绩,成绩应在0100/     scanf("%f”,&p1yuwen);   while(p1>yuwen<0p1>yuwen100)getchar();  printf(”输入错误,请重新输入语文成绩”);/*输入错误,重新输入语文成绩直到正确为止/        scanf("%f”,&p1->yuwen);     printf(”请输入英语成绩(0100):");/输入英语成绩,成绩应在0100/     scanf("%f",p1->yingyu);   while(p1-yingyu0|p1>yingyu100)getchar();  printf(”输入错误,请重新输入英语成绩”);/*输入错误,重新输入英语成绩直到正确为止*/        scanf("%f",&p1->yingyu);     printf(”请输入数学成绩(0100):");/输入数学成绩,成绩应在0100*/     scanf("f",&p1>shuxue);   while(p1>shuxue<0p1-shuxue>100)getchar();  printf("输入错误,请重新输入数学成绩");        scanf(”%f",&p1->shuxue);/*输入错误,重新输入数学成绩直到正确为止/    head=NULL;while(p1->number!=0)     n=n+1;if(n=1)    head=p1;else   p2next=p1;   p2=p1;   p1=(score )malloc(LEN);   printf("请输入学生资料,输0退出!n”);repeat2:printf(”请输入学生学号(学号应大于0):");    scanf("d",&p1>number);/输入学号,学号应大于0/    while(p1number0)  getchar();   printf(”输入错误,请重新输入学生学号:”);     scanf("%d”,p1number);      /*输入学号为字符或小于0时,程序报错,提示重新输入学号/  if(p1>number=0)  goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/  else    p3=head;  if(n0)  for(i=0;in;i+)    if(p1number!=p3-number)   p3=p3->next;   else    printf("学号重复,请重输!n");    goto repeat2;    /当输入的学号已经存在,程序报错,返回前面重新输入/                       printf(”请输入学生姓名:");     scanf(”%s",&p1->name);/输入学生姓名/    printf(”请输入语文成绩(0100):”);     scanf(”%f",&p1>yuwen);/输入语文成绩,成绩应在0100/    while(p1->yuwen0|p1-yuwen100)  getchar();  printf("输入错误,请重新输入语文成绩”);      scanf(”%f”,p1>yuwen);/输入错误,重新输入语文成绩直到正确为止/    printf("请输入英语成绩(0100):");    scanf("f”,p1-yingyu);/输入英语成绩,成绩应在0-100*/    while(p1-yingyu0|p1yingyu100)  getchar();  printf("输入错误,请重新输入英语成绩");      scanf(”%f”,p1->yingyu);/输入错误,重新输入英语成绩直到正确为止*/    printf("请输入数学成绩(0100):");     scanf(”%f",p1->shuxue);/*输入数学成绩,成绩应在0-100/    while(p1-shuxue0p1-shuxue100)  getchar();  printf("输入错误,请重新输入数学成绩”);      scanf(”%f”,&p1->shuxue);/输入错误,重新输入数学成绩直到正确为止/    end: p1=head;    p3=p1;  for(i=1;i<n;i+)                   for(j=i+1;j<=n;j+)                 max=p1;     p1=p1-next;         if(max>number>p1>number)            k=maxnumber;      max-number=p1number;      p1->number=k;      /*交换前后结点中的学号值,使得学号大者移到后面的结点中/            strcpy(t,max->name);      strcpy(maxname,p1name);      strcpy(p1>name,t);    /*交换前后结点中的姓名,使之与学号相匹配*/      fen=max>yuwen;      max-yuwen=p1>yuwen;      p1yuwen=fen;            /交换前后结点中的语文成绩,使之与学号相匹配/          fen=max->yingyu;      maxyingyu=p1yingyu;      p1yingyu=fen;   /*交换前后结点中的英语成绩,使之与学号相匹配/           fen=max>shuxue;      max>shuxue=p1>shuxue;      p1shuxue=fen;           /交换前后结点中的数学成绩,使之与学号相匹配/                     max=head;p1=head;/重新使max,p指向链表头*/   p2->next=NULL;/*链表结尾/     printf("输入的学生数为:d个!n",n);     return(head);/=*/*=*/score *load2311(score *head)/函数load2311,功能:从文件读入学生记录/     score *p1,*p2;      int m=0;      char filepn10;  FILE fp;    printf("请输入文件路径及文件名:");    scanf(”%s",filepn);/*输入文件路径及名称/    if(fp=fopen(filepn,"r+")=NULL)  printf("不能打开文件!n”);  return 0;    fscanf(fp,"        考试成绩管理系统         n");    fscanf(fp,”作者:周纯钢 班级:  信息023  学号:11 n");      fscanf(fp,”-n”);  fscanf(fp,"|学号t姓名t语文t英语t|数学t|n”);      fscanf(fp,”-n”);/读入表格域*/  printf("        考试成绩管理系统         n”);    printf(”  作者:周纯钢 班级:  信息023  学号:11 n”);      printf("-n");  printf(”|学号t姓名t|语文t英语t数学tn”);      printf(”-n");/*打印表格域/  m=m+1;    if(m=1)      p1=(score )malloc(LEN); /开辟一个新单元/  fscanf(fp,”ds%fff",p1->number,p1->name,&p1-yuwen,p1yingyu,p1->shuxue);      printf(”%dt|%st。1ft|.1ft%.1ft|n",p1->number,p1-name,p1>yuwen,p1->yingyu,p1->shuxue);   /*文件读入与显示/  head=NULL;    do    n=n+1;  if(n=1) head=p1;  else p2next=p1;  p2=p1;  p1=(score )malloc(LEN);  /开辟一个新单元*/       fscanf(fp,"ds%f%f%fn",&p1number,p1name,&p1-yuwen,p1yingyu,&p1shuxue);        printf(”dt%st。1ft。1ft.1ftn”,p1->number,p1->name,p1->yuwen,p1yingyu,p1->shuxue);        /*文件读入与显示/  while(!feof(fp));  p2next=p1;  p1next=NULL;  n=n+1; printf("-n”);/表格下线/  fclose(fp);/*结束读入,关闭文件*/    return (head);/*=/*=*/score *add2311(score head,score *stu)/*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/score *p0,*p1,p2,*p3,max;   int i,j;float fen;   char t10;  p3=stu=(score )malloc(LEN);/*开辟一个新单元*/  printf("n输入要增加的学生的资料!”);  repeat4: printf(”请输入学生学号(学号应大于0):");  scanf("%d",&stunumber);   /输入学号,学号应大于0/    while(stunumber0)  getchar();   printf(”输入错误,请重新输入学生学号:");     scanf(”%d",&stu->number);/输入错误,重新输入学号*/    /*/   if(stunumber=0)  goto end2;/*当输入的学号为0时,转到末尾,结束追加/  else      p3=head;  if(n>0)  for(i=0;i<n;i+)        if(stu->number!=p3-number)    p3=p3>next;    else     printf("学号重复,请重输!n");    goto repeat4;    /*当输入的学号已经存在,程序报错,返回前面重新输入/                            /*/    printf("输入学生姓名:");      scanf("s",stu->name);        /输入学生姓名*/    printf("请输入语文成绩(0100):");      scanf(”%f”,stu-yuwen);   /输入语文成绩,成绩应在0-100/    while(stu>yuwen<0|stu-yuwen>100)  getchar();   printf(”输入错误,请重新输入语文成绩");     scanf("%f”,&stu->yuwen);    /*输入错误,重新输入语文成绩直到正确为止/    printf(”请输入英语成绩(0100):”);      scanf("f”,stu->yingyu);/输入英语成绩,成绩应在0100*/    while(stu-yingyu0stuyingyu>100)  getchar();   printf(”输入错误,请重新输入英语成绩");      scanf(”f",&stu>yingyu);/*输入错误,重新输入英语成绩直到正确为止/    printf("请输入数学成绩(0100):");      scanf("%f",stu-shuxue);/输入数学成绩,成绩应在0100*/    while(stu->shuxue0|stushuxue>100)  getchar();   printf("输入错误,请重新输入数学成绩");       scanf(”%f”,stu->shuxue);/输入错误,重新输入数学成绩直到正确为止/p1=head;p0=stu;if(head=NULL)head=p0;p0->next=NULL;/当原来链表为空时,从首结点开始存放资料/else/原来链表不为空*/  if(p1next=NULL)/*找到原来链表的末尾/    p1>next=p0;    p0->next=NULL;/将它与新开单元相连接*/      else     while(p1-next!=NULL)/*还没找到末尾,继续找/       p2=p1;p1=p1-next;         p1->next=p0;      p0>next=NULL;  n=n+1;p1=head;p0=stu;  for(i=1;i<n;i+)                   for(j=i+1;j<=n;j+)                 max=p1;     p1=p1next;         if(max>number>p1number)            k=max-number;      maxnumber=p1-number;      p1->number=k;      /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/            strcpy(t,maxname);      strcpy(maxname,p1>name);      strcpy(p1name,t);    /交换前后结点中的姓名,使之与学号相匹配*/      fen=maxyuwen;      max-yuwen=p1->yuwen;      p1>yuwen=fen;            /交换前后结点中的语文成绩,使之与学号相匹配*/          fen=max-yingyu;      max>yingyu=p1>yingyu;      p1>yingyu=fen;   /*交换前后结点中的英语成绩,使之与学号相匹配*/           fen=max-shuxue;      max->shuxue=p1-shuxue;      p1>shuxue=fen;           /*交换前后结点中的数学成绩,使之与学号相匹配/                     max=head;p1=head;/重新使max,p指向链表头/   end2:printf(”现在的学生数为:%d个!n",n);  return(head);/*=/=/score search2311(score *head)/*函数search2311,功能:查询学生成绩/int number;score p1,p2;printf(”输入要查询的学生的学号,");scanf(”d”,&number);while(number!=0)  if(head=NULL)  printf("n没有任何学生资料!n");return(head);  printf("-n”);  printf(”学号t姓名t语文t|英语t数学tn");  printf(”-n”);/打印表格域*/  p1=head;    while(number!=p1-numberp1>next!=NULL)  p2=p1;p1=p1->next;       if(number=p1-number)     printf("dtst|.1ft%。1ft.1ftn",p1->number,p1-name,p1>yuwen,p1->yingyu,p1-shuxue);       printf("-n");/*打印表格域/      else         printf("d不存在此学生!n",number);        printf(”输入要查询的学生的学号,");      scanf(”d”,&number);printf(”已经退出了!n");return(head);/*=*/=*/score del2311(score *head)/函数del2311,功能:删除学生资料/score p1,p2;int number;printf("输入要删除的学生的学号(输入0时退出):");scanf("d",number);getchar();while(number!=0)/输入学号为0时退出/  if(head=NULL)    printf(”n没有任何学生资料!n");  return(head);      p1=head;    while(number!=p1>number&&p1next!=NULL)  /*p1指向的不是所要找的首结点,并且后面还有结点*/    p2=p1;p1=p1>next;   /p1后移一个结点*/      if(number=p1->number)    /找到了/      if(p1=head)   head=p1>next;  /若p1指向的是首结点,把地二个结点地址赋予head/  else     p2-next=p1-next;  /否则将下一个结点地址 赋给前一结点地址*/  printf(”删除:dn",number);n=n-1;    else  printf(”d不存在此学生!n",number);  /*找不到该结点/      printf("输入要删除的学生的学号:");  scanf("d”,&number);  getchar();#ifdef DEBUG printf(”已经退出了!n");endifprintf("现在的学生数为:d个!n”,n);return(head); /*=/=/void print2311(score *head)/*函数print2311,功能:显示学生成绩/score p;if(head=NULL)          printf("n没有任何学生资料!n");elseprintf("dn”,n);printf("-n");printf(”|学号t|姓名t语文t英语t数学tn”);printf(”-n");/打印表格域/p=head;    do   printf("%dt|st.1ft%。1ft.1ftn",p-number,p>name,p->yuwen,p-yingyu,p-shuxue);      printf("-n");/*打印表格域/     p=p->next;while (p!=NULL);/打印完成了*/=*/=/score statistics2311(score *head)  /*函数statistics2311,功能:统计学生成绩/  float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;  score p;  int x,y=0,i=0;     p=head;     printf("1个人总分和平均分t2单科平均分t3总分最高分t4总分最低分n”);      scanf("d”,x);    getchar();switch(x)  /*用switch语句实现功能选择/case 1: if(head=NULL)    printf(”n没有任何学生资料!n");return(head);/*链表为空*/     else      printf(”-n”);      printf("|学号t|姓名t语文t英语t数学t总分t|平均分tn");      printf(”-n”);/*打印表格域*/    while(p!=NULL)        sum1=p>yuwen+p->yingyu+pshuxue;  /计算个人总分/                             ave1=sum1/3;/*计算个人平均分*/                 printf(

    注意事项

    本文(课程设计:学生成绩管理系统.doc)为本站会员(可****阿)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开