1、C语言程序设计学生成绩记录簿课程实验报告课 程 名 称C语言程序设计班级13 新能源2班实验日期2013年8月1 号姓 名许鑫学号130370236实验成绩实 验 名 称学生成绩记录簿系统实验题目描述本程序是非数值计算型算法设计, 我设计出了学生成绩记录簿系统的基 本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度, 本程序主要使用的是链表的相关操作, 包括结构体链表的创建、 输入、输出、 查找、删除等。我设计的这个成绩记录簿系统也初步实现了学生成绩信息的 显示、输入、删除、查找等必要的功能。1. 建立一个主界面2. 用 switch 语句进行分类讨论3. 分别进入录入,查询,删
2、除,等子函数。4. 将子函数与主函数相连即可。 该程序可以建立学生的成绩记录。可以方便老师和同学方便的查阅成绩; 这个程序有录入和删除的功能;还可以求出平均成绩,并排序 成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、 学分添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有 该门课程成绩给出提示;查询(班级或个人)成绩: 查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有 成绩,和已完成的总学分。查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、 及格率及全班同学不同课程在不同分数段分布的人数及百分比。拓展功能:a) 程序启动时先从文件读入数据,如果文件
3、中没有数据则给出提 示;b) 每次修改的数据写入文件实 验 环 境以自己的电脑为主要的实验平台,运用 Visual C+ 6.0 这个软件进行反复 的编写实验。实验界面截图1、开始时2、添加3、查询4、查询成绩5、写文本6、读取法 描 述 及 实 验 步 骤主程序提供一个界面,允许用户选择。使用 switch 语句,用时直接输 入数字即可。增加函数,功能是插入学生成绩。使用一个无穷循环,直到录入” n”时结束。删除函数,功能是删除,分为两步,先找后删。找,用 strcmp 函数 来 做如果找到记录 i 值,反之记为 -1 ;删除可以从 i 项开始将数组的后一项赋 值给前一项。前一项自动被删掉。
4、这样完成删除。查询函数与之类似,将删除改为输出即可; 求平均值函数与查询类似只是输出时只输出平均值而已。 按平均值排序只要加一个排序函数即可。退出函数什么都不写,即可。程序流程图调 试 过 程 及 实 验 结 果总结经过一个多星期的编译原理课程设计, 在我的努力下, 顺利完成该课程 设计。通过该课程设计, 掌握了编译程序工作的基本过程及其各阶段的基本任 务,熟悉了编译程序总流程框图, 了解了编译程序的生成过程及其相关的技 术,对课本上的知识也有了更深的理解。 老师常说, 课本上的知识是机械的, 表面的,要学会去运用,要举一反三。现在终于深刻的了解了这句话。经过 这次的课程设计,发现书本上很深奥
5、的知识变的更为简单,同样,对实验原 理也了有更深的理解。知道和理解了该理论在计算机中是怎样执行的, 对 该理论在实践中的应用有深刻的理解 。通过该课程设计,把死板的课本知 识变得生动有趣, 激发了学习的积极性。 能够把课堂上学的知识通过自己设 计的程序表示出来,加深了对理论知识的理解。 课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针, 将不必要的命令去除。除了课堂外,课程设计是最能学到东西的,最考验人的。在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。经 过这次课程设计,让我对 C+这门语言有了更深的认识,操作能力有了提高 要想是写出的代码能运行,需要耐心细心,毅
6、力以及充沛的体力。只有经过 多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多 次的更正才能达到所要的运行结果。附 录#include #include #include #define MAX 1000struct Lessonchar LessonName100;char LessonNumber100; int LessonMark;float LessonCredit;struct Studentchar Name100;char Number100;int LessonCount;struct Lesson L100;struct Student SMAX;int S
7、tudentCount = 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)
8、;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);elseprintf(n 添加失败 . 回车继续 n);break;case 2:Student_Delete(); break;case 3:Student_Select(); break
9、;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 +
10、n; +i) printf(nt 第%d个学生: n, i - StudentCount + 1);printf(nt 学生学号: ); scanf(%s, &Si.Number); if(strlen(Si.Number)!=8) printf( 输入错误 , 请重新输入 ); return 0;printf(nt 学生姓名: );scanf(%s, Si.Name);printf(nt 该学生所修课程数: );scanf(%d, &Si.LessonCount);for (j = 0; j Si.LessonCount; +j) printf(nt 第%d门课: n, j + 1);pri
11、ntf(ntt 课程编号: );scanf(%s, Si.Lj.LessonNumber); if(strlen(Si.Lj.LessonNumber)!=5) printf( 输入错误 , 请重新输入 !);return 0;printf(ntt 课程名称: );scanf(%s,Si.Lj.LessonName);printf(ntt 课程成绩: );scanf(%d, &Si.Lj.LessonMark); if(Si.Lj.LessonMark100) printf( 输入错误 , 请重新输入 !);return 0;printf(ntt 课程学分: ); scanf(%f, &Si.
12、Lj.LessonCredit); if(Si.Lj.LessonCredit5) printf( 输入错误 , 请重新输入 !);return 0;if (Si.Lj.LessonMark 60)Si.Lj.LessonCredit = 0;StudentCount += n ;return 1;int Student_Delete()char a100;char b100;int i, j;printf(n 删除学生: n);printf(n 学生姓名: );scanf(%s,a);printf(n 学生学号: );scanf(%s,b);if(strlen(b)!=8)printf( 输
13、入错误请重新输入 );return 0;for (i = 0; i StudentCount; i+)if (0=strcmp(Si.Name, a) & 0=strcmp(Si.Number, b) printf(n 找到,删除 n); for (j = i + 1; j StudentCount)printf(n 未找到该学生 nn); return 0; else StudentCount-; return 1;void Student_Select()int x; char y100;char a100;int i, j;printf(n 输入所查学生信息( 1. 姓名 2. 学号)选择: ); scanf(%d, &x);if (x = 1 | x = 2)if (x
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1