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

上传人:b****3 文档编号:5895079 上传时间:2023-05-09 格式:DOCX 页数:15 大小:82.61KB
下载 相关 举报
学生成绩管理系统数据结构.docx_第1页
第1页 / 共15页
学生成绩管理系统数据结构.docx_第2页
第2页 / 共15页
学生成绩管理系统数据结构.docx_第3页
第3页 / 共15页
学生成绩管理系统数据结构.docx_第4页
第4页 / 共15页
学生成绩管理系统数据结构.docx_第5页
第5页 / 共15页
学生成绩管理系统数据结构.docx_第6页
第6页 / 共15页
学生成绩管理系统数据结构.docx_第7页
第7页 / 共15页
学生成绩管理系统数据结构.docx_第8页
第8页 / 共15页
学生成绩管理系统数据结构.docx_第9页
第9页 / 共15页
学生成绩管理系统数据结构.docx_第10页
第10页 / 共15页
学生成绩管理系统数据结构.docx_第11页
第11页 / 共15页
学生成绩管理系统数据结构.docx_第12页
第12页 / 共15页
学生成绩管理系统数据结构.docx_第13页
第13页 / 共15页
学生成绩管理系统数据结构.docx_第14页
第14页 / 共15页
学生成绩管理系统数据结构.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《学生成绩管理系统数据结构.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据结构.docx(15页珍藏版)》请在冰点文库上搜索。

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

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

洛阳理工学院

课程设计报告

课程名称数据结构课程设计

设计题目学生成绩管理系统

专业计算机科学与技术

课程设计任务书

设计题目:

学生成绩管理系统

设计内容与要求:

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

建立一个4个学生的信息登记表,每个学生的信息包括:

学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

程序运行时显示一个简单的菜单,例如:

(1)信息输入(INPUT)

(2)总分统计(COUNT)

(3)总分排序(SORT)

(4)查询(QUERY)

其中:

(1)对4个学生的信息进行输入;

(2)对每个学生的3门课程统计总分;

(3)对4个学生的总分按降序排序并显示出来;

(4)查询输入一个学号后,显示出该学生的有关信息;

课程设计评语

成绩:

指导教师:

_______________

年月日

一.问题描述

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

二.基本要求

建立一个4个学生的信息登记表,每个学生的信息包括:

学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

程序运行时显示一个简单的菜单,例如:

(1)信息输入(INPUT)

(2)总分统计(COUNT)

(3)总分排序(SORT)

(4)查询(QUERY)

其中:

(1)对4个学生的信息进行输入;

(2)对每个学生的3门课程统计总分;

(3)对4个学生的总分按降序排序并显示出来;

(4)查询输入一个学号后,显示出该学生的有关信息;

三.数据结构

structstudent

{

charnum[10];/*学号*/

charname[20];/*姓名*/

intfgrade;/*佛学成绩*/

intcgrade;/*C语言成绩*/

integrade;/*英语成绩*/

inttotal;/*总分*/

}st[100];

四.总体设计

1.结构图

2.流程图

2.1录入函数

 

2.2排序函数

2.3查询函数

2.4按学号查询函数

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

五.详细设计

1.录入模块

定义一个结构structstudent和数组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和结构体变量structstudenttemp,用for循环实现排序功能,利用冒泡法,以st[i].total

最后用printf输出排序结果。

4.查找模块

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

学号查询中,用scanf语句输入需要查询的学号,并赋值给num。

用for循环,循环主体判断em[i].num中是否有输入的学号。

如果有,用printf语句输出与学号相对应的该学生的所有信息,再跳出循环。

按姓名查询与此方法类似,不再叙述。

六.测试与调试

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

图6.1主菜单

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

图6.2输入职工信息

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

图6.3浏览职工信息

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

图6.4按总分排序

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

5.1选择查询方式“1”

5.2选择查询方式“2”

七.源程序清单

#include

#include

#include

structstudent

{

charnum[10];/*学号*/

charname[20];/*姓名*/

intfgrade;/*佛学成绩*/

intcgrade;/*C语言成绩*/

integrade;/*英语成绩*/

inttotal;/*总分*/

}st[100];

voidmenu();

voidinput();

voidsave(intm);

voidsave();

voiddisplay();

voidsearch();

voidsearch_num();

voidsearch_name();

voidsort_total();

intload();/*定义各函数*/

intm;

voidmain()

{

menu();

intn=0,flag;

chara;

do

{

printf("请选择你需要操作的步骤(1--4):

\n");

scanf("%d",&n);

if(n>=0&&n<=4)

{

flag=1;

break;

}

else

{

flag=0;

printf("您输入有误,请重新选择!

");

}

}

while(flag==0);

while(flag==1)

{

switch(n)

{

case1:

printf("\n◆◆◆输入学生信息◆◆◆\n");printf("\n");input();break;

case2:

printf("\n◆◆◆浏览学生信息◆◆◆\n");printf("\n");display();break;

case3:

printf("\n◆◆◆按总分排序◆◆◆\n");printf("\n");sort_total();break;

case4:

printf("\n◆◆◆查询学生信息◆◆◆\n");printf("\n");search();break;

case0:

exit(0);break;

default:

break;

}

getchar();

printf("\n");

printf("是否继续运行(yorn):

\n");

scanf("%c",&a);

if(a=='y')

{

flag=1;

system("cls");/*清屏*/

menu();/*调用菜单函数*/

printf("请再次选择你需要操作的步骤(1--4):

\n");

scanf("%d",&n);

printf("\n");

}

else

exit(0);

}

}

voidmenu()/*菜单函数*/

{

printf("**************欢迎进入学生信息管理系统**************\n");

printf("1.录入学生信息\n");

printf("2.浏览学生信息\n");

printf("3.按总分排序\n");

printf("4.查询学生信息\n");

printf("0.退出\n");

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

printf("\n");

printf("\n");

}

voidinput()/*输入学生信息并保存*/

{

inti;

printf("请输入需要创建信息的学生人数(1--10):

\n");

scanf("%d",&m);

for(i=0;i

{

printf("请输入学号:

");

scanf("%s",st[i].num);

printf("请输入姓名:

");

scanf("%s",st[i].name);

printf("请输入佛学成绩:

");

scanf("%d",&st[i].fgrade);

printf("请输入C语言成绩:

");

scanf("%d",&st[i].cgrade);

printf("请输入英语成绩:

");

scanf("%d",&st[i].egrade);

st[i].total=st[i].fgrade+st[i].cgrade+st[i].egrade;

/*信息输入已经完成*/

}

save(m);

return;/*返回主界面*/

}

voiddisplay()/*浏览学生信息*/

{

inti;

intcount=0;

m=load();

printf("\n学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n");/*输出学生信息*/

for(i=0;i

{

printf("\n%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egrade,st[i].total);

}

}

voidsort_total()/*按总分排序*/

{

inti,j;

structstudenttemp;/*声明结构体变量*/

printf("\t学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n");

for(i=0;i

{

for(j=i+1;j

if(st[i].total

{

temp=st[i];

st[i]=st[j];

st[j]=temp;

}

printf("\n\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egrade,st[i].total);

}

}

voidsearch()/*查询函数*/

{

intk;/*定义局部变量*/

m=load();

printf("\n按学号查询请按1,\t按姓名查询请按2\n");

printf("\n请输入查询方式:

");

scanf("%d",&k);

switch(k)/*查询方式的选择*/

{

case1:

search_num();break;/*按学号查询*/

case2:

search_name();break;/*按姓名查询*/

}

printf("\nPressanykeytoentermenu......");

getchar();

return;/*返回主界面*/

}

voidsearch_num()/*

(1)按学号查找*/

{

inti;

chartemp[30];

printf("\n请输入要查找的学号:

");

scanf("%s",temp);

for(i=0;i

{

if(strcmp(temp,st[i].num)==0)

{

printf("\n学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n");

printf("\n%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egrade,st[i].total);

}

}

}

voidsearch_name()/*

(2)按姓名查找*/

{

inti;

chartemp[30];

printf("\n请输入要查找的姓名:

");

scanf("%s",temp);

for(i=0;i

{

if(strcmp(temp,st[i].name)==0)

{

printf("\n学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n");

printf("\n%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egrade,st[i].total);

}

}

}

intload()/*导入函数*/

{

FILE*fp;

intn=0;

if((fp=fopen("student_list","rb"))==NULL)

{

printf("cannotopenfile\n");

exit(0);

}

else

{

do

{

fread(&st[n],sizeof(structstudent),1,fp);

n++;

}

while(feof(fp)==0);

}

fclose(fp);

return(n-1);

}

voidsave(intm)/*保存文件函数*/

{

inti;

FILE*fp;

if((fp=fopen("student_list","wb"))==NULL)/*创建文件并判断是否能打开*/

{

printf("cannotopenfile\n");

exit(0);

}

for(i=0;i

if(fwrite(&st[i],sizeof(structstudent),1,fp)!

=1)

printf("filewriteerror\n");

fclose(fp);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2