搜索
您的当前位置:首页学生成绩管理系统数据结构

学生成绩管理系统数据结构

来源:智榕旅游


洛 阳 理 工 学 院

课 程 设 计 报 告

课程名称 数据结构课程设计 设计题目 学生成绩管理系统 专 业 计算机科学与技术

课 程 设 计 任 务 书

设计题目: 学生成绩管理系统 设计内容与要求:

编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。 建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

程序运行时显示一个简单的菜单,例如: (1)信息输入(INPUT) (2)总分统计(COUNT) (3)总分排序(SORT) (4)查询(QUERY) 其中:

(1)对4个学生的信息进行输入; (2)对每个学生的3门课程统计总分; (3)对4个学生的总分按降序排序并显示出来; (4)查询输入一个学号后,显示出该学生的有关信息;

课 程 设 计 评 语

成绩:

指导教师:_______________ 年 月 日

洛 阳 理 工 学 院 课 程 设 计 报 告

目 录

一.问题描述 ..................................................... 1 二.基本要求 ..................................................... 1 三.数据结构 ..................................................... 2 四.总体设计 ..................................................... 2

1.结构图...................................................... 2 2.流程图...................................................... 3 五.

详细设计 .................................................. 5

1.录入模块.................................................... 5 2.浏览模块.................................................... 5 3.排序模块.................................................... 5 4.查找模块.................................................... 6 六. 七.

0

测试与调试 ................................................ 6 源程序清单 ............................................... 10

洛 阳 理 工 学 院 课 程 设 计 报 告

一.问题描述

编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。

二.基本要求

建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

程序运行时显示一个简单的菜单,例如: (1)信息输入(INPUT) (2)总分统计(COUNT) (3)总分排序(SORT) (4)查询(QUERY) 其中:

(1)对4个学生的信息进行输入; (2)对每个学生的3门课程统计总分;

1

洛 阳 理 工 学 院 课 程 设 计 报 告

(3)对4个学生的总分按降序排序并显示出来; (4)查询输入一个学号后,显示出该学生的有关信息;

三.数据结构

struct student {

char num[10];/*学号*/ char name[20];/*姓名*/ int fgrade;/*佛学成绩*/ int cgrade;/*C语言成绩*/ int egrade;/*英语成绩*/ int total;/*总分*/

}st[100];

四.总体设计

1.结构图

菜单选择 信息录入 信息浏览 2 学生信息管理系统 信息排序 信息查询 按学号查询 按姓名查询 洛 阳 理 工 学 院 课 程 设 计 报 告

图4.1

2.流程图

2.1录入函数

开始 创建文件 输入信息 保存 关闭文件 返回菜单 3

洛 阳 理 工 学 院 课 程 设 计 报 告

2.2 排序函数

图4.2 开始 创建数组排序 输出排序结果

2.3 查询函数

结束 图4.3 开始

2.4 按学号查询函数 输入查询方式 调用按学号查询函数 调用按姓名查询函数 返回菜单 图4.4 开始 输出该学生的信息 4 输入要查找的学号 for循环 结束 洛 阳 理 工 学 院 课 程 设 计 报 告

2.5 按姓名查询函数(同上)

图4.5

五.详细设计

1.录入模块

定义一个结构struct student和数组st[N]用来储存N个学生的所有信息(学号st[i].num、姓名st[i].name、佛学成绩st[i].fgrade、C语言成绩st[i].cgrade、英语成绩st[i].egrade)。通过for循环输入所有学生信息。用printf语句提示需要输入的内容,接着用scanf语句输入相应内容。输入完毕后套用保存函数save(m)将所输入的信息写入指定文件。

2.浏览模块

声明整形变量i和count,其中记录输出的学生序数,count用来接收调用浏览函数时所传递过来的实参,将其值传递给导出函数load(m),使得导出的学生人数与浏览的学生人数保持一致。通过调用load函数后(即给em数组赋值),用for循环输出每一个学生的各种信息。

3.排序模块

声明整形变量i,j和结构体变量struct student temp,用for循环实现排序功能,利用冒泡法,以st[i].total5

洛 阳 理 工 学 院 课 程 设 计 报 告

4.查找模块

声明整型变量k,先用printf语句显示查询菜单,用scanf输入选择的查询方式的代号,用switch(k)进入所选择的具体查询函数,包括学号查询,姓名查询两种方式。

学号查询中,用scanf语句输入需要查询的学号,并赋值给num。用for循环,循环主体判断em[i].num中是否有输入的学号。如果有,用printf语句输出与学号相对应的该学生的所有信息,再跳出循环。按姓名查询与此方法类似,不再叙述。

六.测试与调试

1. 运行程序,进入主菜单

图6.1 主菜单

2.输入数字“1”,创建学生信息

6

洛 阳 理 工 学 院 课 程 设 计 报 告

图6.2 输入职工信息

3.输入数字“2”,浏览学生信息

7

洛 阳 理 工 学 院 课 程 设 计 报 告

图6.3 浏览职工信息

4.输入数字“3”,按总分排序

图6.4 按总分排序

5.输入数字“4”,查询学生信息

5.1 选择查询方式“1”

8

洛 阳 理 工 学 院 课 程 设 计 报 告

5.2 选择查询方式“2”

图6.5 按学号查询

9

图6.6 按姓名查询

洛 阳 理 工 学 院 课 程 设 计 报 告

七.源程序清单

#include #include #include struct student { char num[10];/*学号*/ char name[20];/*姓名*/ int fgrade;/*佛学成绩*/ int cgrade;/*C语言成绩*/ int egrade;/*英语成绩*/ int total;/*总分*/ }st[100]; void menu(); void input(); void save(int m); void save(); void display(); void search();

void search_num(); void search_name(); void sort_total();

int load();/*定义各函数*/

int m;

void main() { menu(); int n=0,flag; char a; do { printf(\"请选择你需要操作的步骤(1--4):\\n\"); scanf(\"%d\ if(n>=0&&n<=4) { flag=1; break; } else { flag=0;

10

洛 阳 理 工 学 院 课 程 设 计 报 告

printf(\"您输入有误,请重新选择!\"); } } while(flag==0); while(flag==1) { switch(n) { case 1:printf(\"\\n ◆◆◆输入学生信息◆◆◆\\n\");printf(\"\\n\");input();break; case 2:printf(\"\\n ◆◆◆浏览学生信息◆◆◆\\n\");printf(\"\\n\");display();break; case 3:printf(\"\\n ◆◆◆按总分排序◆◆◆\\n\");printf(\"\\n\");sort_total();break; case 4:printf(\"\\n ◆◆◆查询学生信息◆◆◆\\n\");printf(\"\\n\");search();break; case 0:exit(0);break; default:break; } getchar(); printf(\"\\n\"); printf(\"是否继续运行(y or n):\\n\"); scanf(\"%c\ if(a=='y') { flag=1; system(\"cls\"); /*清屏*/ menu(); /*调用菜单函数*/ printf(\"请再次选择你需要操作的步骤(1--4):\\n\"); scanf(\"%d\ printf(\"\\n\"); } else exit(0); } }

void menu() /*菜单函数*/ { printf(\" **************欢迎进入学生信息管理系统**************\\n\"); printf(\" 1.录入学生信息\\n\"); printf(\" 2.浏览学生信息\\n\"); printf(\" 3.按总分排序\\n\"); printf(\" 4.查询学生信息\\n\"); printf(\" 0.退出\\n\");

11

洛 阳 理 工 学 院 课 程 设 计 报 告

printf(\" **********************谢谢使用**********************\\n\"); printf(\"\\n\"); printf(\"\\n\"); }

void input() /*输入学生信息并保存*/ {

int i; printf(\"请输入需要创建信息的学生人数(1--10):\\n\"); scanf(\"%d\ for(i=0;ivoid display()/*浏览学生信息*/ { int i; int count=0; m=load(); printf(\"\\n学号\姓名\佛学成绩\C语言成绩\英语成绩\总分\\n\");/*输出学生信息*/

for(i=0;i12

洛 阳 理 工 学 院 课 程 设 计 报 告

} }

void sort_total() /*按总分排序*/ { int i,j; struct student temp; /*声明结构体变量*/ printf(\"\学号\姓名\佛学成绩\C语言成绩\英语成绩\总分\\n\"); for(i=0;ifor(j=i+1;jprintf(\"\\n\%s\%s\%d\\%d\\%d\\%d\\n\de,st[i].total);

} }

void search() /*查询函数*/ { int k; /*定义局部变量*/ m=load(); printf(\"\\n按学号查询请按1,\按姓名查询请按2\\n\"); printf(\"\\n请输入查询方式:\"); scanf(\"%d\ switch(k)/*查询方式的选择*/ { case 1:search_num();break;/*按学号查询*/ case 2:search_name();break;/*按姓名查询*/ } printf(\"\\nPress any key to enter menu......\"); getchar(); return; /*返回主界面*/ }

void search_num()/*(1)按学号查找*/ { int i; char temp[30];

13

洛 阳 理 工 学 院 课 程 设 计 报 告

printf(\"\\n 请输入要查找的学号:\"); scanf(\"%s\ for( i=0;i} } }

void search_name()/*(2)按姓名查找*/ { int i;

char temp[30]; printf(\"\\n 请输入要查找的姓名:\"); scanf(\"%s\ for( i=0;iprintf(\"\\n学号\姓名\佛学成绩\C语言成绩\英语成绩\总分\\n\"); printf(\"\\n%s\%s\%d\\%d\\%d\\%d\\n\grade,st[i].total);

} } }

int load() /*导入函数*/ { FILE*fp; int n=0; if((fp=fopen(\"student_list\ { printf(\"cannot open file\\n\"); exit(0); } else { do

14

洛 阳 理 工 学 院 课 程 设 计 报 告

{ fread(&st[n],sizeof(struct student),1,fp); n++; } while(feof(fp)==0); } fclose(fp); return(n-1); }

void save(int m)/*保存文件函数*/ { int i; FILE*fp; if((fp=fopen(\"student_list\创建文件并判断是否能打开*/ { printf(\"cannot open file\\n\"); exit(0); } for(i=0;i15

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

Top