学生成绩管理系统数据结构.docx
- 文档编号:9640295
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:19
- 大小:169.72KB
学生成绩管理系统数据结构.docx
《学生成绩管理系统数据结构.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据结构.docx(19页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统数据结构
洛阳理工 学院
课 程 设计报告
课程名称 数据结构课程设计
设计题目 学生成绩管理系统
专业 计算机科学与技术
ﻬ
课程设 计任 务书
设计题目:
学生成绩管理系统
设计内容与要求:
编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
建立一个4个学生的信息登记表,每个学生的信息包括:
学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。
程序运行时显示一个简单的菜单,例如:
(1)信息输入(INPUT)
(2)总分统计(COUNT)
(3)总分排序(SORT)
(4)查询(QUERY)
其中:
(1)对4个学生的信息进行输入;
(2)对每个学生的3门课程统计总分;
(3)对4个学生的总分按降序排序并显示出来;
(4)查询输入一个学号后,显示出该学生的有关信息;
课程设计评语
成绩:
指导教师:
_______________
年月日
目 录
一.问题描述ﻩ2
二.基本要求2
三.数据结构ﻩ2
四.总体设计3
1.结构图3
2.流程图3
五.详细设计ﻩ5
1.录入模块ﻩ5
2.浏览模块5
3.排序模块ﻩ5
4.查找模块5
六.测试与调试5
七.源程序清单ﻩ9
一.问题描述
编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
二.基本要求
建立一个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];/*姓名*/
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 最后用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 #include #include 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("\n");display();break; case3: 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("是否继续运行(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); } } void menu() /*菜单函数*/ { ﻩ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()/*浏览学生信息*/ { ﻩint i; 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; 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 ﻩﻩﻩ{ ﻩﻩﻩ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;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; 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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 数据结构