您的当前位置:首页正文

学生成绩管理系统课程设计报告

2024-05-19 来源:独旅网
学生成绩管理系统——课程设计报告

学生成绩管理系统 课程设计报告

编写人:

同组成员:(课程设计负责人)

完成日期: 辅导教师: 批阅日期: 分数:

第 1 页 共 18 页

学生成绩管理系统——课程设计报告

一、功能描述

此成绩管理系统主要利用结构体数组实现,由如下六个功能模块实现 1、输入模块。主要完成将学生信息存入结构体数组的工作。

2、删除、修改模块。主要完成对结构体数组中数据的删除、修改工作。 3、查询、排序模块。主要完成对结构体数组中数据的查询、排序工作。 4、输出模块。主要完成对结构体数组中数据输出的工作。 二、总体设计 1、功能模块设计

(1)主函数main()执行流程

开始 输出菜单 根据表达式m m=9 的值选择程序 m=1 m=2 m=3 m=4 m=5 m=6 m=7 m=8 输入 查看 查询 成绩修改添加删除

退出系统 结束 保存

(2)输入学生信息函数inputscore ()流程

第 2 页 共 18 页

学生成绩管理系统——课程设计报告

开始1 Y fp=fopen(\"score.dat\

N for循环

将数据保存到 score.dat文件中 结束 (3)添加学生信息函数add()流程

开始2 Y fp=fopen(\"score.dat\

N for循环

将数据保存到 Sorce.dat文件中 结束

第 3 页 共 18 页

学生成绩管理系统——课程设计报告

(4)删除学生信息函数delscore ()流程

开始3 在sorce.dat文件中读入数据 输入学生的姓名或学号

查找要删除的学生

输出学生的信息 确定删除该学生信息 并执行 结束

(5) 修改学生信息函数modify流程

第 4 页 共 18 页

学生成绩管理系统——课程设计报告

开始4 在sorce.dat文件中读入数据 输入学生的姓名或学号

查找要修改的学生

输出学生的信息 确定修改该学生信息 并执行 结束

(6)学生信息查询函数searchscore()流程

开始5 在sorce.dat文件中读入数据 输入要查找学生的信息

查找要需要的学生

输出学生的信息

结束 (7)学生成绩排序函数avergescore()流程

第 5 页 共 18 页

学生成绩管理系统——课程设计报告

开始6 调出sorce.dat文件 中的数据 Y 排序 stu[j].aver>stu[k].aver N t=stu[j];stu[j]=stu[i]; stu[i]=t; 输出学生信息 结束

(8)成绩不及格查询函数statistic()流程

开始7 调出score.dat文件数据 N stu[i].aver<60 Y 输出 结束 (9)输出学生成绩函数lookscore()流程 开始8 第 6 页 共 18 页

学生成绩管理系统——课程设计报告

在score.dat文件中读入数据 确定有几个学生信息 输出学生的信息

结束 三、数据结构设计 学生信息结构体数组

struct student {

char number[10]; 学号 char name[20]; 姓名 float score[M]; 分数 float aver; 平均成绩 float 数学; 数学成绩 float英语; 英语成绩 float 计算机; 计算机成绩 四、函数功能描述 主要函数的函数原型 void inputscore(void); void savescore(void); void avergescore(void); void modifyscore(void); void lookscore(void); void searchscore(void); void statistic(void); void add(void); void modify(void); void delscore(void); void menu(void);

i. 在菜单界面输入1,调用函数inputscore( )实现输入学生成绩信息功能。 ii. 在菜单界面2,调用函数lookscore( )实现学生成绩按平均分高低排序输。

出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计算。

iii. 在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信

息功能。

iv. 在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生

成绩方差,不及格学生名单。

第 7 页 共 18 页

学生成绩管理系统——课程设计报告

v. 在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能 vi. 在菜单界面输入6,调用add()函数实现添加学生成绩。

vii. 在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。 viii. 在菜单界面输入8,调用savescore()函数将学生成绩信息保存。 ix. 在菜单界面输入9,退出成绩管理系统。

五、程序实现 1、源代码分析 ⑴程序预处理

包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。 #include /*I/O函数*/ #include /*字符串函数*/ #include

#include /*屏幕操作函数*/ 分析:

#include引入标准输入输出函数,以便完成一些c中一些最基本的函数的功能。

#include引入有关字符数组的函数,以便在程序中运用相关函数。例如:在删除学生信息函数中的strcmp函数

if(strcmp(a,stu[i].number)==0)

#include是一个系统头文件 所谓包含头文件就是让自己这个cpp文件能够用头文件中定义的一些东西 比如函数、宏、结构等

#define N 30 #define M 3

typedef struct student { char number[10]; char name[20]; float score[M]; float aver;

#include /*屏幕操作函数*/,定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。

⑵主函数main()

六、运行结果

1、显示主界面(学生成绩管理系统主菜单)

第 8 页 共 18 页

学生成绩管理系统——课程设计报告

2、输入学生信息

3、删除学生信息

4、修改学生信息

第 9 页 共 18 页

学生成绩管理系统——课程设计报告

5、学生信息查询

6、成绩情况

7、显示不及格名单

8、添加学生信息

9、保存程序界面

第 10 页 共 18 页

学生成绩管理系统——课程设计报告

10、退出程序

七、设计小结

1、优点:简洁明了、界面整洁、使用了汉字的菜单、使用比较方便、经过很多次调试后解决了很多漏洞。

2、缺点:不够人性化、很多功能的缺失、存在很多漏洞(比如:没有班级;如果学号太长的话就不能够对齐;只允许输入30个学生信息;在某些输出函数中没有对学生按学号排序输出;)、界面还是不够美观、程序确实可以做得更好,但是由于时间原因存在很多缺陷。 八、附带源程序

#include #include #include #include #define N 30 #define M 3

typedef struct student { char number[10]; char name[20]; float score[M]; float aver; }STU;

STU stu[N]; int n;

void inputscore(void); void savescore(void); void avergescore(void); void modifyscore(void); void lookscore(void); void searchscore(void); void statistic(void); void add(void); void modify(void); void delscore(void);

第 11 页 共 18 页

学生成绩管理系统——课程设计报告

void menu(void); void main()

{ short int flag=0; menu(); do { flag=1; switch(getch()) { case '1' : inputscore();break; /*输入成绩*/ case '2' : lookscore();break; /*查看成绩*/ case '3' : searchscore();break; /*查找成绩*/ case '4' : statistic();break; /*成绩统计*/ case '5' : modify();break; /*修改成绩*/ case '6' : add();break; /*添加成绩*/ case '7' : delscore();break; /*删除成绩*/ case '8' : savescore();break; /*保存成绩*/ case '9' :exit(0); /*退出程序*/ default : printf(\"输入有误\\n\"); } printf(\"按任意键继续\\n\"); getch(); menu(); }while (flag==1); }

void menu(void) { system(\"cls\"); printf(\"\\n\"); printf(\"*********欢迎进入学生成绩管理系统**************\\n\"); printf(\" 菜单 \\n\"); 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(\"**********************************************\\n\"); printf(\"请输入您的选择\\n\");

第 12 页 共 18 页

学生成绩管理系统——课程设计报告

}

/***************输入各个同学的学生信息******************************/ void inputscore(void) { int i,j; system(\"cls\"); printf(\"请输入学生总数:\\n\"); scanf(\"%d\ printf(\"提示:*输入学号时请输入位数为8位的数字*\\n\"); /*因二维表上下需对正故有此要求*/

for(i=0;i/*****************计算各个同学的平均分*****************************/ void avergescore(void) { int i,j; for(i=0;i/************查看学生成绩及根据平均分对学生进行排序*********************/ void lookscore(void) { int i,j,k;

第 13 页 共 18 页

学生成绩管理系统——课程设计报告

STU t; avergescore(); system(\"cls\"); for(i=0;istu[k].aver) k=j; if(k!=j) { t=stu[k]; stu[k]=stu[i]; stu[i]=t; } } printf(\"名次\学号\\姓名\数学\英语\计算机\平均分\\n\"); for(i=0;i/*****************通过输入学号查找学生成绩***************************/ void searchscore(void) { char a[10]; int i,j; system(\"cls\"); printf(\"请输入需查询的学生学号\\n\"); scanf(\"%s\ for(i=0;i} else printf(\"未找到该学生信息\\n\"); }

第 14 页 共 18 页

学生成绩管理系统——课程设计报告

}

/*******统计学生成绩信息,平均分及格率,优秀率,成绩方差****************/ void statistic(void) { STU *p=stu; int i,j; float count=0.0,sum=0.0; system(\"cls\"); for(i=0;iaver;} printf(\"该班级平均分为%4.2f\\n\ /*平均分计算*/ for(i=0;iaver>=60) count++; } printf(\"该班级及格率为%4.2f%%\\n\/*及格率计算*/ count=0.0; for(i=0;iaver>=90) count++; } printf(\"该班级优秀率为%4.2f%%\\n\/*优秀率计算*/ for(i=0;iscore[j]-(p+i)->aver)*((p+i)->score[j]-(p+i)->aver); } sum=sum/n; printf(\"学生%s的成绩方差为%4.2f\\n\/*方差计算*/ } printf(\"平均分低于60的学生名单\\n\"); for(i=0;i}

/***************修改学生成绩*****************/ void modify(void) { char a[10]; int i,j; system(\"cls\"); printf(\"请输入需要修改成绩的学生学号\\n\");

第 15 页 共 18 页

学生成绩管理系统——课程设计报告

scanf(\"%s\ for(i=0;iprintf(\"修改成功\\n\"); break; } else printf(\"未找到该学生信息\\n\"); } }

/*****************添加学生成绩********************/ void add(void) { int a,i,j; system(\"cls\"); printf(\"请输入新增加的学生人数:\\n\"); scanf(\"%d\ n=n+a; for(i=n-a;i/*******************删除学生成绩*************************/ void delscore(void) { int i,j,c;

第 16 页 共 18 页

学生成绩管理系统——课程设计报告

char m,a[10]; system(\"cls\"); printf(\"请输入学生学号\\n\"); scanf(\"%s\ for(i=0;in=n-1; /*删除该学生信息后学生总数减一*/

printf(\"删除成绩成功\\n\"); } else printf(\"删除成绩失败\\n\"); }

/******************保存学生成绩************************/ void savescore(void) { FILE *fp; int i,flag=1; char m; system(\"cls\"); puts(\"是否保存学生成绩(y/n)\"); scanf(\"%s\ if(m=='y') { if((fp=fopen(\"score.dat\ { printf(\"文件打开失败\\n\"); return;

第 17 页 共 18 页

学生成绩管理系统——课程设计报告

} for(i=0;i}

第 18 页 共 18 页

因篇幅问题不能全部显示,请点此查看更多更全内容