学生成绩管理系统数据结构Word格式.docx
- 文档编号:22776311
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:19
- 大小:169.72KB
学生成绩管理系统数据结构Word格式.docx
《学生成绩管理系统数据结构Word格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据结构Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
4.查找模块5
六.测试与调试5
七.源程序清单ﻩ9
一.问题描述
编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
二.基本要求
学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。
程序运行时显示一个简单的菜单,例如:
(1)信息输入(INPUT)
(2)总分统计(COUNT)
(3)总分排序(SORT)
(4)查询(QUERY)
其中:
(1)对4个学生的信息进行输入;
(3)对4个学生的总分按降序排序并显示出来;
三.数据结构
structstudent
{
ﻩcharnum[10];
/*学号*/
charname[20];
/*姓名*/
int fgrade;
/*佛学成绩*/
ﻩintcgrade;
/*C语言成绩*/
ﻩintegrade;
/*英语成绩*/
ﻩinttotal;
/*总分*/
}st[100];
四.总体设计
1.结构图
2.流程图
2.1录入函数
图4.2
2.2排序函数
图4.3
2.3 查询函数
图4.4
2.4按学号查询函数
图4.5
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<
st[j].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”
图6.5按学号查询
5.2 选择查询方式“2”
图6.6按姓名查询
七.源程序清单
#include<
stdio.h>
#include<
stdlib.h>
#include <
string.h>
struct student
{
ﻩcharnum[10];
/*学号*/
charname[20];
/*姓名*/
intfgrade;
/*佛学成绩*/
intcgrade;
/*C语言成绩*/
int egrade;
/*英语成绩*/
ﻩinttotal;
/*总分*/
}st[100];
voidmenu();
voidinput();
voidsave(intm);
voidsave();
void display();
voidsearch();
voidsearch_num();
voidsearch_name();
voidsort_total();
intload();
/*定义各函数*/
intm;
voidmain()
menu();
int n=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("
display();
break;
case3:
\n ◆◆◆按总分排序◆◆◆\n"
printf("
\n"
sort_total();
break;
ﻩﻩcase 4:
printf("\n ◆◆◆查询学生信息◆◆◆\n"
printf("
search();
break;
ﻩcase 0:
exit(0);
default:
break;
ﻩ}
getchar();
ﻩprintf("
\n");
printf("是否继续运行(yorn):
scanf("
%c",&
a);
if(a=='y'
)
ﻩ{
ﻩflag=1;
ﻩﻩﻩsystem("
cls"
/*清屏*/
ﻩmenu();
/*调用菜单函数*/
ﻩprintf("请再次选择你需要操作的步骤(1--4):
ﻩﻩscanf("
%d",&
n);
ﻩﻩprintf("\n"
ﻩ}
else
ﻩﻩexit(0);
}
void menu() /*菜单函数*/
ﻩprintf("
**************欢迎进入学生信息管理系统**************\n"
ﻩprintf("
1.录入学生信息\n"
ﻩprintf("
2.浏览学生信息\n");
printf("
3.按总分排序\n"
printf("
4.查询学生信息\n"
ﻩprintf(" 0.退出\n"
printf(" **********************谢谢使用**********************\n"
printf("
ﻩprintf("\n"
}
voidinput()/*输入学生信息并保存*/
inti;
printf("
请输入需要创建信息的学生人数(1--10):
scanf("
%d",&
m);
for(i=0;
i<
m;
i++)
{
ﻩprintf("
请输入学号:
ﻩﻩscanf("
%s"
,st[i].num);
ﻩﻩprintf("请输入姓名:
ﻩ scanf("
%s",st[i].name);
ﻩﻩ printf("
请输入佛学成绩:
ﻩscanf("
%d"
st[i].fgrade);
ﻩprintf("
请输入C语言成绩:
ﻩﻩscanf("
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()/*浏览学生信息*/
ﻩint i;
intcount=0;
ﻩm=load();
ﻩprintf("
\n学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n"
/*输出学生信息*/
for(i=0;
m+count;
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;
struct student temp;
/*声明结构体变量*/
ﻩprintf("
\t学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n"
ﻩfor(i=0;
i<m;
i++)/*对数据进行排序*/
for(j=i+1;
j<m;
j++)
ﻩif(st[i].total<
st[j].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()/*查询函数*/
int k;
/*定义局部变量*/
m=load();
printf("
\n按学号查询请按1,\t按姓名查询请按2\n"
printf("\n请输入查询方式:
scanf("
%d"
k);
ﻩswitch(k)/*查询方式的选择*/
ﻩ{
ﻩcase 1:
search_num();
break;
/*按学号查询*/
case2:
search_name();
break;
/*按姓名查询*/
ﻩ}
ﻩprintf("
\nPressanykey to entermenu......"
ﻩgetchar();
return;
/*返回主界面*/
voidsearch_num()/*
(1)按学号查找*/
ﻩint i;
chartemp[30];
printf("\n请输入要查找的学号:
ﻩscanf("%s",temp);
for(i=0;
i<
m;
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;
char temp[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);
ﻩﻩ}
int load()/*导入函数*/
FILE*fp;
intn=0;
ﻩif((fp=fopen("
student_list"
"
rb"))==NULL)
ﻩﻩprintf("
cannotopen file\n");
ﻩﻩexit(0);
else
ﻩdo
ﻩﻩﻩfread(&
st[n],sizeof(structstudent),1,fp);
ﻩﻩﻩn++;
ﻩwhile(feof(fp)==0);
ﻩfclose(fp);
ﻩreturn(n-1);
void save(intm)/*保存文件函数*/
int i;
ﻩFILE*fp;
if((fp=fopen("
student_list"
wb"
))==NULL)/*创建文件并判断是否能打开*/
printf("
cannotopen file\n"
ﻩexit(0);
for(i=0;
i<m;
i++)/*将内存中学生的信息输出到磁盘文件中去*/
ﻩif(fwrite(&
st[i],sizeof(structstudent),1,fp)!
=1)
ﻩﻩprintf("file writeerror\n"
ﻩﻩfclose(fp);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 数据结构