C语言课程设计报告
一 .问题描述:
题目七:学生成绩管理系统设计
学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:
(1) 能按学期、按班级完成对学生成绩的录入、修改
(2) 能按班级统计学生的成绩,求学生的总分及平均分
(3) 能查询学生成绩,不及格科目及学生名单
(4) 能按班级输出学生的成绩单
要求:使用二进制文件方式存储数据,系统以菜单方式工作
学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。要求使用二进制文件方式存储数据,系统以菜单方式工作,实现对学生成绩的录入,修改,统计,排序,查询,输出等功能。
二 .设计目的
设计“学生成绩管理系统”使其具有以下功能:
(1) 能完成对学生成绩的录入
(2) 能按班级统计学生的成绩,求学生的总分及平均分,排序
(3) 能按班级,学期输出学生的成绩单和不及格科目及学生名单
(4) 能查询单个学生成绩
(5) 能修改单个学生信息
三 . 要求
系统以菜单方式工作
四 . 功能
1 输入功能:可以一次完成无数条信息的输入。
2 输出功能:能按班级输出学生的成绩单。
3 修改功能:完成对单个学生成绩的修改。
4 查找功能:完成对单个学生信息查找,并显示。
5 排序功能:按学生成绩进行排序,并显示。
6 有一个清晰美观界面来调用各个功能
五.模块图
六 . 详细内容
整个系统除了主函数外,另外还有5个函数,实现六大功能:输入功能、输出功能、修改功能,查找并显示功能、排序并显示功能。各个函数的详细设计说明分别如下:
1 . 定义结构体及宏定义
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define NUM 100
struct student
{ int term;
int num;
int classes;
char name[10];
int score[4];
int sum;
float average;
}stu[NUM];
2.主函数 main()
利用无限次循环for(;;)和swithch()进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!
void main()
{
zcd();
}
/*主函数界面*/
void zcd()
{
int n=0;
char m;
system("cls");/*清屏*/
printf("按任一键进入主菜单\n "); /*按任一键进入主菜单*/
printf("********************************************************************************\n");
printf("\t\t华中科技大学文华学院欢迎您\n");
printf("\n\t\t\t--------- 欢迎使用学生管理系统\n\n\t\t\t\t\t-----------\n");
printf("*************************************MENU***************************************\n");
printf("\t\t\t1. 输入学生成绩记录 Input the record\n"); /*输入学生成绩记录*/
printf("\t\t\t2. 排序并显示 Sort to make new a file\n"); /*排序*/
printf("\t\t\t3. 按班级显示成绩单 Print the record\n"); /*显示*/
printf("\t\t\t4. 查找个人成绩 Search record on name\n"); /*查找*/
printf("\t\t\t5. 修改 Modify a record\n"); /*修改*/
printf("\t\t\t6. 退出 Quit\n"); /*退出*/
printf("********************************************************************************\n");
printf("\n\t\t\t输入你的选择Enter your choice(1~7):");
fflush(stdin);
m=getchar();
do
{switch(m)
{
case '1':input();zcd();break;
case '2':sort();system("pause");zcd();break;
case '3':print();system("pause");break;
case '4':search();zcd();break;
case '5':modify();system("pause");zcd();break;
case '6':exit(0); /*如菜单返回值为7则程序结束*/
default:printf("错误命令"); getchar();zcd();
}
} while(1);
}
3输入信息函数
void input()
{
system("cls");
int i;
char a;
for(i=0;i<NUM;i++)
{ printf(" \n请输入学生的学期:");
scanf("%d",&stu[i].term);
printf(" \n请输入学生的学号:");
fflush(stdin);
scanf("%d",&stu[i].num);
printf(" \n请输入学生的班级:");
scanf("%d",&stu[i].classes);
printf("\n请输入学生的姓名:");
scanf("%s", stu[i].name) ;
printf("\n请输入学生的语文成绩:");
scanf("%d",&stu[i].score[0]);
printf("\n请输入学生的数学成绩:");
scanf("%d", &stu[i].score[1]);
printf("\n请输入学生的英语成绩:");
scanf("%d", &stu[i].score[2]);
printf("\n请输入学生的计算机成绩:");
scanf("%d", &stu[i].score[3]);
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];//算总分和平均
stu[i].average=(float)stu[i].sum/4.0;
printf("是否要继续添加(按N&n退出)");
fflush(stdin);
a=getchar();
if(a=='n'||a=='N')
break;
}
}
4、排序并显示函数
void sort()
{
int i,j=0;
float temp;
for(i=0;i<NUM;i++)
{
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
stu[i].average=(float)stu[i].sum/4.0;
}
for(i=0;i<NUM-1;i++)
{
for(j=i+1;j<NUM;j++)
{
if(stu[i].sum<stu[j].sum)
{
temp=stu[i].sum;
stu[i].sum=stu[j].sum;
stu[j].sum=temp;
}
}
? }
printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
for(i=0;i<NUM;i++)
printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);
/*输出学生信息*/
}
}
}
system("pause");system("cls");print();
}?
5查找并显示一个记录
void search()
{
system("cls");/*清屏*/
int number=0,i;
printf("\t\t\t 请输入要查找学生的学号:");
scanf("%d",&number);
printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
for(i=0;i<NUM;i++)
if(number==stu[i].num) break;/*查找判断*/
if(i<NUM)
{printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes,
stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].score[3],stu[i].sum,stu[i].average); /*输出学生信息*/
}
else
printf("没找到该学生的信息\n");
system("pause");
}
6.按学期、按班级输出成绩函数
void print()
{
system("cls");
char a;
printf("1、按学期输出\n");
printf("2、按班级输出\n");
printf("3、返回\n");
fflush(stdin);
a=getchar();
switch(a)
{
case '1':print1();
case '2':print2();
case '3':zcd();
default:print();
}
}
void print1()//按学期
{
int i,m;
printf("请输入学期:\n");
scanf("%d",&m);
printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
for(i=0;i<NUM;i++)
{
if(m==stu[i].term)
printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes,
stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].score[3],stu[i].sum,stu[i].average); /*输出学生信息*/
}
system("pause");system("cls");print();
}
void print2()//按班级
{
int i,j,k;
printf("请输入班级:\n");
scanf("%d",&k);
printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
for(i=0;i<NUM;i++)
{
if(k==stu[i].classes)
{
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
stu[i].average=stu[i].sum/4.0;
printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\
n",stu[i].num,stu[i].name,stu[i].classes,
stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].score[3],stu[i].sum,stu[i].average); /*输出学生信息*/
}
}
printf("输出不及格学生名单及成绩:\n");
printf("学号\t姓名\t班级 语文 数学 英语 计算机 \n");
for(i=0;i<NUM;i++)
{for(j=0;j<4;j++)
{
if(stu[i].score[j]<60&&k==stu[i].classes)
/*输出不及格学生名单及成绩*/
printf("%d\t%s\t%d%5d%5d%5d%6d\n",stu[i].num,stu[i].name,stu[i].classes,
stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].score[3]);
break;
}
}
system("pause");system("cls");print();
}
7修改成绩函数
void modify()
{
system("cls");
int number,i;
printf("\t\t\t请输入要修改信息的学生学号:");
scanf("\t\t\t%d",&number);
for(i=0;i<NUM;i++)
if(number=stu[i].num) break;/*查找判断*/
if(i<NUM)/*查找判断*/
{
printf("请输入修改后的学生的信息:");
printf(" \n请输入学生的学期:");
scanf("%d",&stu[i].term);
printf(" \n请输入学生的学号:");
fflush(stdin);
scanf("%d",&stu[i].num);
printf(" \n请输入学生的班级:");
scanf("%d",&stu[i].classes);
printf("\n请输入学生的姓名:");
scanf("%s", stu[i].name) ;
printf("\n请输入学生的语文成绩:");
scanf("%d",&stu[i].score[0]);
printf("\n请输入学生的数学成绩:");
scanf("%d", &stu[i].score[1]);
printf("\n请输入学生的英语成绩:");
scanf("%d", &stu[i].score[2]);
printf("\n请输入学生的计算机成绩:");
scanf("%d", &stu[i].score[3]);
}
else
printf("没找到该学生的信息\n");
system("paues");system("cls");zcd();
}
七.运行过程
主菜单
成绩录入
统计排序
按学期输出成绩
按班级输出成绩
查找个人成绩
修改单个学生信息
八.设计总结
经过几周的课程设计,我学到了很多东西:
①巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。
②培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。
③经过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
④能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。
课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。
在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出
许多宝贵意见。在此对老师和同学们表示感谢!
(后附完整程序)
【C语言学生成绩管理系统课程设计报告 c语言学生成绩管理系统课程设计目的】相关文章:
财务述职报告 财务述职报告ppt范文08-22
会计师事务所实习报告5000字08-22
会计师事务所实习报告 会计师事务所实习08-22
会计师事务所的实习报告 会计师事务所实习报告25篇08-22
2023年个人自查报告范文 2023年个人自查报告范文怎么写08-22
C语言学生成绩管理系统课程设计报告 c语言学生成绩管理系统课程设计目的08-22
实验报告格式 生物实验报告格式08-22
项目总结报告书 项目总结报告书的内容08-22
经济责任审计报告 经济责任审计报告怎么写08-22
党员述职报告 2023年党员述职报告08-22