学生成绩管理系统C语言程序论文Word文档下载推荐.docx
- 文档编号:17992670
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:20
- 大小:84.34KB
学生成绩管理系统C语言程序论文Word文档下载推荐.docx
《学生成绩管理系统C语言程序论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言程序论文Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
⑥根据以上功能需求,定义通讯录信息结构,并采用链表结构对数据进行存储。
⑦提供友好的用户界面,方便用户操作。
三.报告内容
3.1需求分析
设计题目:
学生成绩管理系统
设计要求:
系统功能分析:
1输入功能:
可以一次完成无数条信息的输入。
2输出功能:
能按输出排序功能多个学生的成绩单或者按查找功能输出学生的成绩单。
3修改功能:
完成对单个学生成绩的修改。
4查找功能:
按学号完成对单个学生信息查找,并显示。
5排序功能:
按学生成绩进行排序,并显示。
6保存功能:
能够将输入的信息保存,并能读取
7有一个清晰美观界面来调用各个功能
3.2概要设计
系统总体设计框架:
主菜单:
提供平台选择界面,供用户选择功能,链接其他模块的工作,以及包含退出系统。
1.Student_Insert:
输入模块,录入学生学号,姓名以及三科成绩,并运算平均分和总分
2.Student_Search:
匹配已知学号与输入学号是否正确,并返回结果
2.1Student_Select:
查找学生信息,并输出
2.2Student_Delete:
删除存在的学生成绩
2.3Student_Modify:
修改学生信息,并输出
3.Student_Sort_Average&
Student_Sort_Mark1:
按学生的平均分或者学生的英语成绩排序
3.1Student_Display:
输出多名学生的按平均分或者英语成绩排名的名单
4.Read:
运用fread将文件从已保存文件里读出
5.Write:
运用fprintf和fwrite函数分别保存输入的学生信息
系统功能模块图:
3.3详细设计
主要功能模块的算法设计思路:
学生成绩管理系统的设计一开始由主程序界面设计出发,运用case函数链接8个子模块:
1:
输入学生的资料;
2:
查询学生成绩;
3:
修改学生资料;
4:
删除学生成绩;
5:
排序学生成绩;
6:
保存输入的学生资料;
7:
从文件调入学生信息;
8:
退出程序;
操作者可以根据不同需求选择不同的操作。
首先设计的主模块程序设计中,运用main,功能:
通过调用Student_Insert,Student_Search,Student_Select,Student_Delete,Student_Modify,Student_Sort_Average,Student_Sort_Mark1,Student_Display,Read,Write等函数,实现学生成绩查询与管理功能首先用while
(1)控制,保障在每次菜单操作后返回主页面。
之后用swtich对用户输入值进行判断,决定进行何种操作。
对于具体的返回值,又调用其他函数,实现对学生成绩管理系统的各个功能的操作。
子模块程序当中,首先编写的是输入程序主要运用scanf函数接受用户输入的学号,姓名,英语,数学,物理的学生信息。
然后依次编写的学生信息查询,学生信息修改,学生信息删除都建立在学号匹配的Student_Search函数上,运用for和if函数对输入的学号依次对以保存的学号进行一一的对比,若寻找到正确的学号就返回学号,若寻找不到着返回-1值。
若返回-1值,紧接的Student_Search,Student_Select,Student_Delete,三个函数则输出学号不存在。
若返回得到学号值则:
1.Student_Search:
运用printf输入相应的学号结构体的信息。
2.Student_Select:
首先输出相应的学号结构体的信息,然后运用scanf重新获取用户输入的学生信息。
3.Student_Delete:
首先输出相应的学号结构体的信息,然后运用for函数,依次将后面一个的学号结构体的信息赋予给前一个学号结构体的信息,从而达到删除的目的。
然后就编写排序Student_Sort_Average,Student_Sort_Mark1排序模块,同样运用for和if函数对每一个学生结构体信息相应的平均分和英语成绩进行一一对比,然后赋值进行排序的目的。
在这两个函数的基础上Student_Display函数就运用printf依次输出上述的排序结果。
接下来则编写Read和Write函数,后者主要运用fprintf和fwrite将用户输入的数据写进去txt文档,fprintf实践当中产生的txt文档更加方便用户直接的观看信息,fwrite产生的txt文档则更加方便系统下一次读入文件使用。
Read主要运用fread函数,主要用于读取fwrite写出txt文档。
最后写得是退出函数由于比较简单直接嵌入在主函数当中,直接用exit来退出系统。
工作流程图:
3.4主要源程序代码
存储结构设计说明:
系统的运行过程中,运用学生信息输入的子模块程序首先输入学生信息,存储过程中主要运用fwrite和fprintf将输入的学生信息存放在txt文件当中。
在运行当中fwrite存储的学生数据文件一般为二进制文件仅能通过系统中编写的得读取程序子模块来读取存储的文件信息。
因此,特意加入fprintf函数,对学生的信息进行直观的存储,用户可以直接通过txt文件打开查看学生信息。
完整源程序清单:
#include<
windows.h>
/*延时程序所在的头文件*/
stdlib.h>
stdio.h>
string.h>
structStudent
{
charID[20];
charName[20];
floatMark1;
floatMark2;
floatMark3;
doubleMark_ave;
doubleMark_tot;
}student[1000];
/*声明学生数组及学生数量*/
intnum=0;
structStudent*p;
/*输入记录函数*/
voidStudent_Insert()
while
(1)
{
printf("
请输入学号:
"
);
scanf("
%s"
&
student[num].ID);
getchar();
//清除回车符
请输入姓名:
student[num].Name);
请输入英语:
%f"
student[num].Mark1);
请输入数学:
student[num].Mark2);
请输入物理:
student[num].Mark3);
//清除回车符student[num].Mark_ave=(student[num].Mark1+student[num].Mark2+student[num].Mark3)/3;
/*求平均值*/
student[num].Mark_tot=student[num].Mark1+student[num].Mark2+student[num].Mark3;
/*求总分*/
num++;
是否继续?
(y/n)"
if(getchar()=='
n'
)
break;
}
}
/*寻找匹配学号*/
intStudent_Search(charname[])
inti;
for(i=0;
i<
num;
i++)
if(strcmp(student[i].ID,name)==0)
returni;
return-1;
/*查找显示函数*/
voidStudent_Select()
while
(1)
charname[20];
intindex;
请输入要查询的学生的学号:
name);
index=Student_Search(name);
if(index==-1)
{
printf("
学生不存在!
\n"
Sleep(2000);
/*让错误警告显示延时一秒*/
gotolab;
}
else
p=&
student[index];
{
你要查询的学生信息为:
/*显示单条学生记录*/
%10s%10s%8s%8s%8s%10s%10s\n"
"
学号"
姓名"
英语"
数学"
物理"
平均成绩"
总分"
----------------------------------------------------------------\n"
%10s%10s%8.2f%8.2f%8.2f%10.2f%10.2f\n"
(*p).ID,(*p).Name,(*p).Mark1,(*p).Mark2,(*p).Mark3,(*p).Mark_ave,(*p).Mark_tot);
}
}
lab:
break;
/*删除记录函数*/
voidStudent_Delete()
charid[20];
请输入要删除的学生的学号:
id);
index=Student_Search(id);
if(index==-1)
Sleep(2000);
/*让错误警告显示延时一秒*/
break;
else
p=&
你要删除的学生信息为:
是否真的要删除?
y'
for(p;
p<
&
student[num-1];
p++)
(*p)=(*(p++));
//把后边的对象都向前移动
num--;
是否继续删除y/n)"
}
/*修改记录函数*/
voidStudent_Modify()
请输入要修改的学生的学号:
/*让错误警告显示延时一秒*/
else
你要修改的学生信息为:
student[index].ID,student[index].Name,student[index].Mark1,student[index].Mark2,student[index].Mark3,student[index].Mark_ave,student[index].Mark_tot);
--请输入新值--\n"
student[index].ID);
student[index].Name);
student[index].Mark1);
student[index].Mark2);
student[index].Mark3);
student[index].Mark_ave=(student[index].Mark1+student[index].Mark2+student[index].Mark3)/3;
student[index].Mark_tot=student[index].Mark1+student[index].Mark2+student[index].Mark3;
/*按平均值排序记录函数*/
voidStudent_Sort_Average()
inti,j;
structStudenttmp;
for(j=1;
j<
num-i;
j++)
if(student[j-1].Mark_ave<
student[j].Mark_ave)
tmp=student[j-1];
student[j-1]=student[j];
student[j]=tmp;
/*按英语值排序记录函数*/
voidStudent_Sort_Mark1()
if(student[j-1].Mark1<
student[j].Mark1)
/*显示记录函数*/
voidStudent_Display()
--------------------------------------------------------------------\n"
for(p=student;
student[num];
/*将学生信息从文件读出*/
voidRead()
FILE*fp;
if((fp=fopen("
Database.txt"
rb"
))==NULL)
不能打开文件!
return;
if(fread(&
num,sizeof(i),1,fp)!
=1)/*将fp文件中每项四个字节的i写入到num当中*/
num=-1;
for(i=0;
fread(&
student[i],sizeof(structStudent),1,fp);
/*读取fp文件里面每项的全部内容写入到结构体当中*/
fclose(fp);
已经成功读取文件"
/*将学生信息写入文件*/
voidWrite()
wb"
if(fwrite(&
=1)/*将输入学生的num指针以每项4个字节输入到fp文件当中*/
写入文件错误!
student[i],sizeof(structStudent),1,fp)!
=1)/*从结构体学生信息当中获取资料填写到fp文件当中*/
p=student;
fp=fopen("
学生成绩.txt"
w"
fprintf(fp,"
%8s"
"
%12s"
平均分"
%12s\n"
========================================================================\n"
putchar('
\n'
for(i=0;
i<
num;
i++,p++)
{
(*p).ID);
(*p).Name);
%8.1lf"
(*p).Mark1);
(*p).Mark2);
%10.1lf"
(*p).Mark3);
%12.1lf"
(*p).Mark_ave);
%10.1lf\n"
(*p).Mark_tot);
}fprintf(fp,"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言 程序 论文