欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

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

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

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

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

    c语言 学生成绩管理系统C语言课程设计报告书 课程名称:学生信息管理系统 一、设计目的: 本学期我们学习了C语言,由于初接触,学习有一定困难;于是学校给我们提供一次巩固提高的机会-课程设计。该可程设计要求学生既动手又动脑,自学,查资料,独立实践。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。 C语言的实践。掌握C语言函数的定义方法,函数的声明及函数的调用过程。掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。 二、总体设计 程序设计组成框图 1.按班级输出学生成绩单 2.按姓名查询 3.增加学生 4.删除学生 5.按班级修改学生成绩 6.按班学期改学生成绩 7.保存所有学生信息 8.显示不及格学生成绩 9.按平均成绩排序并输出成绩 10.退出 模块功能说明 1 输出功能:完成全部学生记录的显示。 2 查询功能:输入姓名可以查询学生的详细信息。 3 增加功能:增加新学生的信息。 4 删除功能:删除学生信息。 5 修改功能:修改学生的错误信息。 6保存功能:保存已输入信息。 学生成绩管理系统 7读取功能:读取已输入信息。 8显示功能:按要求显示学生记录。 9 排序功能:按要求完成对学生信息的排序。 10 退出系统。 程序流程图 开始 输入指令 1 学生成绩单 按姓名查询 2 增加学生 3 删除学生 4 按班级修改 5 按学期修改 6 保存信息 7 不及格成绩 8 平均分排序 9 10退出 结束 主要函数之间相互调用如下: 主函数main 的调用 switch(choice) case 1:OutputInformation;break; case 2:DesplayInfoBystudentName;break; case 3:p=MallocNode;GetInformation(p); InsertOneNode(p); break; case 4:DeleteNodeBystudentNumber;break; case 5:ChangeMarkByName;break; case 6:ChangeMarkByNumber;break; case 7:SaveLinkToFile;break; case 8:DesplayMarkSegment;break; case 9:CompositorByTotalMark;break; case 10:SaveLinkToFile; 各函数功能详见源程序清单 在设计过程中的感受: 首先经过一周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识,本人实在是获益不浅!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。 其次, 通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法! 第三, 因为初次接触等原因此次设计遇到了许多问题用,C语言程序对我们来说比较难客,但在老师的帮助下我学会了如何调试把程序搞定,体会到原来编程也挺有意思的快感设计做的这样好,在此特地感谢老师的帮助。 三、󰀚源程序清单 #include<stdio.h> #include<conio.h> #include<malloc.h> #include<string.h> typedef struct STUDENT char studentNumber10;/*char studentName20;/*char className20;/*班级名称char yearName20;/*学期名称float mark1;/*第1门成绩float mark2;/*第2门成绩float mark3;/*第3门成绩struct STUDENT *next; STUDENT; STUDENT *headLink;/*链表表头指针/*以下是函数声明*/ void ReadInfoFormFile(void); void DesplayMenu(void); void CreateHeadLink(void); STUDENT *MallocNode(void); void GetInformation(STUDENT *t); void OutputInformation(void); void DesplayInfoBystudentName(void); void DesplayOneNode(STUDENT *t); void InsertOneNode(STUDENT *t); void DeleteNodeBystudentNumber(void); ,在匆忙的学习中更是难上加难,如何查找系统没有提示的错误学生学号*/ */ */ ,.我想没有老师的帮助我很难在短期内把程序,似乎觉得自己仅是个匆匆过,最后终于排除万难我深刻体会到老师发挥的重要作 */ 学生姓名*/ */ */ */ void ChangeMarkByName(void); void ChangeMarkByNumber(void); void SaveLinkToFile(void); void DesplayMarkSegment(void); void CompositorByTotalMark(void); int choose;/*用于接受用户的选择*/ /*主函数*/ void main CreateHeadLink; ReadInfoFormFile; DesplayMenu; /* 函数功能:从文件中读学生信息到链表中 */ void ReadInfoFormFile(void) FILE *fp; STUDENT *p; fp=fopen("student.txt","r"); if(!fp) printf("文件不存在n"); return; p=MallocNode; while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3)>0) InsertOneNode(p); p=MallocNode; fclose(fp); /* 函数功能:显示菜单,根据用户的输入 完成相应的功能 */ void DesplayMenu(void) STUDENT *p; printf("-请选择相应功能-nn"); printf("| 1 按班级输出学生成绩单 |n"); printf("| 2 按姓名查询 |n"); printf("| 3 增加学生 |n"); printf("| 4 删除学生 |n"); printf("| 5 按班级修改学生成绩 |n"); printf("| 6 按学期修改学生成绩 |n"); printf("| 7 保存所有学生信息 |n"); printf("| 8 显示不及格学生成绩 |n"); printf("| 9 按平均成绩排序并输出绩 |n"); printf("| 10 退出 |nn"); scanf("%d",&choose);/*取得用户的选择*/ switch(choose) case 1: OutputInformation;/*显示所有学生的信息*/ break; case 2: DesplayInfoBystudentName; break; case 3: p=MallocNode;/*先申请一个新结点*/ GetInformation(p);/*要求用户输入信息到新结点中*/ InsertOneNode(p);/*将新结点加到链表中*/ break; case 4: DeleteNodeBystudentNumber;/*根据用户输入的学号删除该学生*/ break; case 5: ChangeMarkByName;/*根据用户输入的姓名修改学生成绩*/ break; case 6: ChangeMarkByNumber;/*根据用户输入的学号修改学生成绩*/ break; case 7: SaveLinkToFile;/*保存数据*/ break; case 8: DesplayMarkSegment;/*显示不及格的学生成绩*/ break; case 9: CompositorByTotalMark;/*按平均成绩排序*/ break; case 10: SaveLinkToFile;/*保存数据后再退出*/ free(headLink); exit(1); break; default: break; DesplayMenu;/*递归调用*/ /* 函数功能:建立链表表头 */ void CreateHeadLink(void) STUDENT *p; p=(STUDENT*)malloc(sizeof(STUDENT); headLink=p; p->next=NULL; /* 函数功能:申请一个新结点,并将其初始化 */ STUDENT *MallocNode(void) STUDENT *p; int i; p=(STUDENT*)malloc(sizeof(STUDENT); if(p=NULL) return NULL; for(i=0;i<10;i+) p->studentNumberi='0' for(i=0;i<20;i+) p->studentNamei='0' for(i=0;i<20;i+) p->classNamei='0' p->mark1=0.0; p->mark2=0.0; p->mark3=0.0; p->next=NULL; return p; /* 函数功能:取得用户输入的学生信息 */ void GetInformation(STUDENT *t) printf("请输入学生学号:n"); scanf("%s",t->studentNumber); printf("请输入学生姓名:n"); scanf("%s",t->studentName); printf("请输入该生所在班级:n"); scanf("%s",t->className); printf("请输入第1门成绩:n"); scanf("%f",&(t->mark1); printf("请输入第2门成绩:n"); scanf("%f",&(t->mark2); printf("请输入第3门成绩:n"); scanf("%f",&(t->mark3); /* 函数功能:在链表的结尾处增加一个结点 */ void InsertOneNode(STUDENT *t) STUDENT *p; p=headLink; while(p->next) p=p->next; p->next=t; /* 函数功能:根据用户输入的学生姓名显示该学生的信息 */ void DesplayInfoBystudentName(void) STUDENT *p; char studentName20; char flag=0; p=headLink->next; printf("请输入学生姓名:n"); scanf("%s",studentName); while(p) if(strcmp(p->studentName,studentName)=0) printf("学号t姓名t班级t成绩1t成绩1t成绩3t总成绩t平均成绩nn"); DesplayOneNode(p); flag=1; break; p=p->next; if(!flag) printf("对不起,不存在姓名为 %s 的学生n",studentName); /* 函数功能:输出一个结点的信息 */ void DesplayOneNode(STUDENT *t) printf("%st",t->studentNumber); printf("%st",t->studentName); printf("%st",t->className); printf("%.2ft",t->mark1); printf("%.2ft",t->mark2); printf("%.2ft",t->mark3); printf("%.2ft",t->mark1+t->mark2+t->mark3); printf("%.2ftn",(t->mark1+t->mark2+t->mark3)/3); /* 函数功能:根据用户输入的学号删除该学生 */ void DeleteNodeBystudentNumber(void) char studentNumber10; STUDENT *p,*q; char flag=0; printf("请输入要删除的学生学号:"); scanf("%s",studentNumber); p=headLink; q=headLink->next; while(q) if(strcmp(q->studentNumber,studentNumber)=0) p->next=q->next; free(q); flag=1; break; p=p->next; q=q->next; if(!flag) printf("不存在该学号的学生n"); return; printf("成功删除n"); /* 函数功能:显示所有学生的信息 */ void OutputInformation(void) STUDENT *p; p=headLink->next; if(p=NULL) printf("现在没有学生信息,请先输入学生信息nn"); return; printf("学号t姓名t班级t成绩1t成绩1t成绩3t总成绩t平均成绩nn"); while(p) DesplayOneNode(p); p=p->next; /* 函数功能:根据输入的班级修改成绩 */ void ChangeMarkByName(void) STUDENT *p; int a; char studentName20; char flag=0; float mark1,mark2,mark3; p=headLink->next; printf("请输入学生班级:n"); scanf("%d",&a); printf("请输入学生姓名:n"); scanf("%s",studentName); while(p) if(strcmp(p->studentName,studentName)=0) printf("请输入新的第1门成绩:n"); scanf("%f",&mark1); printf("请输入新的第2门成绩:n"); scanf("%f",&mark2); printf("请输入新的第3门成绩:n"); scanf("%f",&mark3); p->mark1=mark1; p->mark2=mark2; p->mark3=mark3; flag=1; printf("修改成功n"); break; p=p->next; if(!flag) printf("对不起,不存在班级为 %s 的学生n",studentName); /* 函数功能:根据输入的学期修改成绩 */ void ChangeMarkByNumber(void) STUDENT *p; int b; char studentNumber20; char flag=0; float mark1,mark2,mark3; p=headLink->next; printf("请输入学生所在学期:n"); scanf("%d",&b); printf("请输入学生学号:n"); scanf("%s",studentNumber); while(p) if(strcmp(p->studentNumber,studentNumber)=0) printf("请输入新的第1门成绩:n"); scanf("%f",&mark1); printf("请输入新的第2门成绩:n"); scanf("%f",&mark2); printf("请输入新的第3门成绩:n"); scanf("%f",&mark3); p->mark1=mark1; p->mark2=mark2; p->mark3=mark3; flag=1; printf("修改成功n"); break; p=p->next; if(!flag) printf("对不起,不存在学期为 %s 的学生n",studentNumber); /* 函数功能:保存链表数据到文件中 */ void SaveLinkToFile(void) STUDENT *p; FILE *fp; p=headLink->next; if(p=NULL) printf("现在没有学生信息,请先输入学生信息nn"); return; fp=fopen("student.txt","w+"); if(!fp) printf("文件不存在n"); return; while(p) fprintf(fp,"%s %s %s %f %f %fn",p->studentNumber,p->studentName,p->className,p->mark1,p->mark2,p->mark3); p=p->next; fclose(fp); /* 函数功能:不及格学生成绩 */ void DesplayMarkSegment(void) STUDENT *p; int count=0; p=headLink->next; printf("60分以下(不及格)的学生成绩如下:n"); printf("学号t姓名t班级t成绩1t成绩1t成绩3t总成绩t平均成绩nn"); while(p) if(6>(int)(p->mark1/10)|(6>(int)(p->mark2/10)|(6>(int)(p->mark3/10)/*只要有一科不及格就认为该生不及格*/ count+; DesplayOneNode(p); p=p->next; printf("不及格的学生一共有%d人n",count); /* 函数功能:按平均成绩排序 */ void CompositorByTotalMark(void) STUDENT exchange,*r,*p,*q; r=headLink->next; if(r=NULL) printf("现在还没学生信息,请先输入学生信息n"); return; while(r)/*两层while循环实现排序*/ p=r; q=r->next; while(q) if(q->mark1+q->mark2+q->mark3)>(p->mark1+p->mark2+p->mark3) strcpy(exchange.studentNumber,q->studentNumber);/*先复制q结点信息到exchange*/ strcpy(exchange.studentName,q->studentName); strcpy(exchange.className,q->className); exchange.mark1=q->mark1; exchange.mark2=q->mark2; exchange.mark3=q->mark3; strcpy(q->studentNumber,p->studentNumber);/*再复制p结点信息到q*/ strcpy(q->studentName,p->studentName); strcpy(q->className,p->className); q->mark1=p->mark1; q->mark2=p->mark3; q->mark3=p->mark3; strcpy(p->studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/ strcpy(p->studentName,exchange.studentName); strcpy(p->className,exchange.className); p->mark1=exchange.mark1; p->mark2=exchange.mark2; p->mark3=exchange.mark3; q=q->next; r=r->next; OutputInformation;

    注意事项

    本文(c语言 学生成绩管理系统.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开