收藏 分销(赏)

C语言程序设计学生成绩记录簿.doc

上传人:a199****6536 文档编号:1362656 上传时间:2024-04-24 格式:DOC 页数:17 大小:457KB 下载积分:8 金币
下载 相关 举报
C语言程序设计学生成绩记录簿.doc_第1页
第1页 / 共17页
C语言程序设计学生成绩记录簿.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
课程实验报告 课程名称 C语言程序设计 班级 13新能源2班 实验日期 2013年8月1号 姓名 许鑫 学号 130370236 实验成绩 实验名称 学生成绩记录簿系统 实 验 题 目 描 述 本程序就是非数值计算型算法设计,我设计出了学生成绩记录簿系统得基本功能,并设计了简单得界面。本程序主要考察对自定义函数得熟悉程度,本程序主要使用得就是链表得相关操作,包括结构体链表得创建、输入、输出、查找、删除等。我设计得这个成绩记录簿系统也初步实现了学生成绩信息得显示、输入、删除、查找等必要得功能。    1、建立一个主界面 2、用switch语句进行分类讨论   3、分别进入录入,查询,删除,等子函数。   4、将子函数与主函数相连即可。 该程序可以建立学生得成绩记录。可以方便老师与同学方便得查阅成绩; 这个程序有录入与删除得功能; 还可以求出平均成绩,并排序 成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分 􀁺 添加成绩:需要输入学生得学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示; 􀁺 查询(班级或个人)成绩: 􀁺 查询个人成绩:以学号或姓名作为关键字,可查询一个学生得所有成绩,与已完成得总学分。 􀁺 查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布得人数及百分比。 拓展功能: a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示;  b) 每次修改得数据写入文件 实 验 环 境 以自己得电脑为主要得实验平台,运用Visual C++ 6、0这个软件进行反复得编写实验。 实 验 界 面 截 图 1、开始时 2、添加 3、查询 4、查询成绩 5、写文本 6、读取 算 法 描 述 及 实 验 步 骤 主程序提供一个界面,允许用户选择。使用switch语句,用时直接输入数字即可。 增加函数,功能就是插入学生成绩。使用一个无穷循环,直到录入”n”时结束。 删除函数,功能就是删除,分为两步,先找后删。找,用strcmp函数  来做如果找到记录i值,反之记为-1;删除可以从i项开始将数组得后一项赋值给前一项。前一项自动被删掉。这样完成删除。 查询函数与之类似,将删除改为输出即可; 求平均值函数与查询类似只就是输出时只输出平均值而已。 按平均值排序只要加一个排序函数即可。 退出函数什么都不写,即可。 程序流程图 查询成绩 添加成绩 添加学生成绩 添加课程编号 添加学生姓名 添加学生学号 查询班级成绩 查询学生成绩 查询班级成绩 查询学生成绩 课程编号 学号查询 姓名查询 调 试 过 程 及 实 验 结 果 总 结 经过一个多星期得编译原理课程设计,在我得努力下,顺利完成该课程设计。 通过该课程设计,掌握了编译程序工作得基本过程及其各阶段得基本任务,熟悉了编译程序总流程框图,了解了编译程序得生成过程及其相关得技术,对课本上得知识也有了更深得理解。老师常说,课本上得知识就是机械得,表面得,要学会去运用,要举一反三。现在终于深刻得了解了这句话。经过这次得课程设计,发现书本上很深奥得知识变得更为简单,同样,对实验原理也了有更深得理解。知道与理解了该理论在计算机中就是怎样执行得, 对该理论在实践中得应用有深刻得理解 。通过该课程设计,把死板得课本知识变得生动有趣,激发了学习得积极性。能够把课堂上学得知识通过自己设计得程序表示出来,加深了对理论知识得理解。 课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要得命令去除。除了课堂外,课程设计就是最能学到东西得,最考验人得。在做课程设计得这段时间,时刻都感到自己学得知识有多么得贫瘠。经过这次课程设计,让我对C++这门语言有了更深得认识,操作能力有了提高要想就是写出得代码能运行,需要耐心细心,毅力以及充沛得体力。只有经过多次编辑,多次编译,再多次运行,才能编写出更好得程序,有时候需要多次得更正才能达到所要得运行结果。 附 录 #include <stdio、h> #include <stdlib、h> #include <string、h> #define MAX 1000 struct Lesson {    char LessonName[100]; char LessonNumber[100];   int LessonMark;    float LessonCredit; }; struct Student {    char Name[100];     char Number[100]; int LessonCount;  struct Lesson L[100]; }; struct Student S[MAX]; int StudentCount = 0; void PrintInterface(); int Student_Insert(); int Student_Delete();  void Student_Select(); void Class_Select(); void WriteFile(); void ReadFile(); int main() { int n; {   PrintInterface();      scanf("%d", &n);    } } void PrintInterface()  {  int n; while (1)  { printf("\n ---欢迎使用学生成绩记录簿系统--- ");   printf("\n| 1、添加         |\n");     printf("\n| 2、删除               |\n"); printf("\n| 3、查学生成绩     |\n");    printf("\n| 4、查班成绩表     |\n"); printf("\n| 5、写入文本文件  |\n");   printf("\n| 6、读取文本文件      |\n");   printf("\n| 0、退出      |\n"); printf("\n -------------------------- ");   printf("\n选择操作:");    scanf("%d",&n); switch(n){      case 1: ﻩ if (Student_Insert())  ﻩ ﻩ printf("\n添加成功、、、回车继续\n");           else ﻩﻩ printf("\n添加失败、、、回车继续\n");          break;  ﻩ case 2:     Student_Delete(); break;  ﻩﻩ case 3:       Student_Select();         break;        case 4:        Class_Select(); ﻩ break; ﻩ ﻩﻩ case 5:     WriteFile(); ﻩ break; case 6:  ﻩ ReadFile();  ﻩ ﻩ break;        case 0:        exit(1);     break; ﻩ default: ﻩﻩ printf("无此功能,请重新选择,按回车确定\n");  }  } return 0; } int Student_Insert() {     int i,j,n;   printf("\n请输入所添加得学生人数:");   scanf("%d", &n); if (StudentCount + n >= MAX) return 0;   for (i = StudentCount; i < StudentCount + n; ++i)   {    printf("\n\t第%d个学生:\n", i - StudentCount + 1);       printf("\n\t学生学号:"); ﻩscanf("%s", &S[i]、Number); if(strlen(S[i]、Number)!=8) ﻩﻩ{ ﻩﻩ  printf("输入错误,请重新输入"); ﻩ  return 0; ﻩ } ﻩ       printf("\n\t学生姓名:"); ﻩscanf("%s", S[i]、Name); ﻩ     printf("\n\t该学生所修课程数:"); ﻩ scanf("%d", &S[i]、LessonCount); for (j = 0; j < S[i]、LessonCount; ++j)        {   printf("\n\t第%d门课:\n", j + 1);      printf("\n\t\t课程编号:");  scanf("%s", S[i]、L[j]、LessonNumber); ﻩﻩﻩif(strlen(S[i]、L[j]、LessonNumber)!=5) ﻩﻩ{     ﻩ  printf("输入错误,请重新输入!"); ﻩ return 0;    }    printf("\n\t\t课程名称:");  ﻩscanf("%s",S[i]、L[j]、LessonName); ﻩﻩ        printf("\n\t\t课程成绩:"); ﻩ    scanf("%d", &S[i]、L[j]、LessonMark);   if(S[i]、L[j]、LessonMark<0 || S[i]、L[j]、LessonMark>100) ﻩ{   ﻩ  printf("输入错误,请重新输入!"); ﻩ return 0;    } printf("\n\t\t课程学分:"); ﻩﻩ scanf("%f", &S[i]、L[j]、LessonCredit); ﻩ if(S[i]、L[j]、LessonCredit<1 || S[i]、L[j]、LessonCredit>5) ﻩﻩ {      printf("输入错误,请重新输入!"); ﻩ return 0;   } ﻩﻩ      if (S[i]、L[j]、LessonMark < 60) ﻩ S[i]、L[j]、LessonCredit = 0;      }     }  StudentCount += n ; return 1; } int Student_Delete() { char a[100]; ﻩchar b[100]; int i, j;   printf("\n删除学生:\n");   printf("\n学生姓名:"); scanf("%s",a);   printf("\n学生学号:"); scanf("%s",b); if(strlen(b)!=8) ﻩ ﻩ{ ﻩprintf("输入错误请重新输入"); ﻩreturn 0; }  for (i = 0; i < StudentCount; i++)    {     if (0==strcmp(S[i]、Name, a) && 0==strcmp(S[i]、Number, b))   {         printf("\n找到,删除\n");      for (j = i + 1; j < StudentCount; j++) {          S[j - 1] = S[j];   }       break;   } } if (i == StudentCount || i > StudentCount)    { printf("\n未找到该学生\n\n"); return 0;     }   else     {  StudentCount--;     return 1; } } void Student_Select() {    int x; char y[100];    char a[100]; int i, j; printf("\n输入所查学生信息(1、姓名   2、学号)选择:");    scanf("%d", &x);   if (x == 1 || x == 2)   {       if (x == 1)     {     printf("\n姓名:"); ﻩ fflush(stdin);  gets(a);    for (i = 0; i < StudentCount; i++)        {     if (0==strcmp(S[i]、Name,a))   {            printf("\n学号:%s\t姓名:%s\n", S[i]、Number, S[i]、Name);          printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n");           printf("-----------------------------------------------------\n");         for (j = 0; j < S[i]、LessonCount; j++)            {          printf("%s\t\t%s\t\t%d\t\t%f\n", S[i]、L[j]、LessonNumber,                S[i]、L[j]、LessonName, S[i]、L[j]、LessonMark,        S[i]、L[j]、LessonCredit);            printf("-----------------------------------------------------\n");         }            printf("\n\n");         }            }     }   else       {      printf("\n学号:");      fflush(stdin); gets(y);         for (i = 0; i < StudentCount; i++)        {       if (strcmp(S[i]、Number,y)==0)    {          printf("\n学号:%s\t姓名:%s\n", S[i]、Number, S[i]、Name);        printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n");         printf("-----------------------------------------------------\n");           for (j = 0; j < S[i]、LessonCount; j++)       {           printf("%s\t\t%s\t\t%d\t\t%f\n", ﻩ     S[i]、L[j]、LessonNumber,S[i]、L[j]、LessonName, ﻩ ﻩ S[i]、L[j]、LessonMark,S[i]、L[j]、LessonCredit);            printf("-----------------------------------------------------\n");                  }   printf("\n\n");              break;       }      }  }      printf("查找完毕、、、回车继续\n");       getchar();   } else  {   printf("选择错误、、、回车继续\n");   getchar();   return;   } } void Class_Select() { char a[100];     double x=0,y=0,z=0;    int i, j;   printf("\n请输入课程编号:"); fflush(stdin);  scanf("%s",a);  printf("学号\t姓名\t课程名称\t课程成绩\t课程学分\n");   printf("----------------------------------------------------\n");    for (i = 0; i < StudentCount; i++) {       for (j = 0; j < S[i]、LessonCount; j++)       {   if (strcmp(S[i]、L[j]、LessonNumber,a)==0)       {        printf("%s\t%s\t%s\t\t%d\t\t%f\n", ﻩ ﻩ     S[i]、Number, S[i]、Name, S[i]、L[j]、LessonName,          S[i]、L[j]、LessonMark, S[i]、L[j]、LessonCredit);               printf("----------------------------------------------------\n");           z+=S[i]、L[j]、LessonMark;            x++;          if (S[i]、L[j]、LessonMark >= 60) ﻩﻩﻩﻩy++;       break;      }    }    }     printf("\n平均分:%f\t及格率:%f%%\n\n", z/x, y/x*100);    printf("\n查找完毕、、、回车继续\n"); getchar(); } void WriteFile() {   FILE *fp;    int i, j;   char a[100];    printf("\n请输入写入得文件地址:\n\n地址输入格式:例如d:\\\\Student、txt:");   scanf("%s",&a);    printf("\n写入中、、、、、、\n");   if (fp = fopen(a,"w"))   { fprintf(fp,"%d\n",StudentCount);   for (i = 0; i < StudentCount; i++)    {     fprintf(fp,"%s\t%s\t%d\n",S[i]、Number, S[i]、Name,S[i]、LessonCount);     for (j = 0; j < S[i]、LessonCount; j++)     {      fprintf(fp,"%s\t%s\t%d\t%f\n", S[i]、L[j]、LessonNumber,S[i]、L[j]、LessonName, ﻩ     S[i]、L[j]、LessonMark,S[i]、L[j]、LessonCredit);       }       }     printf("\n写入完成、、、回车继续\n");   fclose(fp); }  else   {  printf("\n写入失败、、、回车继续\n");   }    getchar(); } void ReadFile() {    FILE *fp; int i, j;   char a[100]; printf("\n请输入读取得文件地址:\n\n地址输入格式:例如d:\\\\student、txt:");     scanf("%s",&a); printf("\n读取中、、、、、、\n"); if (fp = fopen(a,"r")) {    fscanf(fp,"%d",&StudentCount);     for (i = 0; i < StudentCount; i++)   {       fscanf(fp,"%s%s%d",&S[i]、Number, &S[i]、Name,&S[i]、LessonCount);       for (j = 0; j < S[i]、LessonCount; j++)     {     fscanf(fp,"%s%s%d%f",&S[i]、L[j]、LessonNumber,              &S[i]、L[j]、LessonName,&S[i]、L[j]、LessonMark,               &S[i]、L[j]、LessonCredit);  }      }     printf("\n读取成功、、、回车继续\n");    fclose(fp);   }   else {      printf("\n读取失败、、、回车继续\n"); } getchar(); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服