学生成绩管理系统.docx
《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(40页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统
中国海洋大学
C语言课程设计报告书
题目
学生成绩管理系统
学生姓名
指导教师
林旭平
学院
中国海洋大学
专业班级
计算机科学与技术1班
组内分工
姓名
主要任务
占系统比例
王林
查看学生档案模块以及主程序main()函数的编写和调试。
25%
李木婉
查看学生成绩模块以及各函数之间的搭配与链接。
25%
李倩梅
查看成绩管理规定模块和退出学生管理系统模块的程序编写。
25%
苏明
修改学生成绩模块和查看成绩分布模块的编写。
25%
目录
1前言1
2需求分析2
3模块设计图3
4NS流程图清单4
5存储结构及函数说明9
6课程设计结果19
7实践心得体会26
1前言
该章主要描述课程设计的目的,以及对题目本身的理解。
●目的:
1.C语言程序设计是过程性程序设计语言,做C语言课程设计以培养我们分析问题的完备性,以及统筹全局,协调关系的基本素质,也可以有效地培养我们思维的条理性和逻辑性
2.课程设计的过程能进一步巩固C语言程序设计中的重点和难点,培养我们的结构化程序设计思想
3.通过实践着重巩固数组、函数、结构体、指针、链表等重要内容
4.掌握编写中性程序的基本思路、技巧和调试方法
5.通过实验锻炼我们的实际动手能力,提高我们的编程和程序调试能力。
6.通过做课程设计激发我们的学习兴趣和创新能力,为后续课程的学习打下良好的基础。
●对题目本身的理解:
我们通过做C语言程序设计的课题《学生成绩管理系统》,我们由刚开始的分析该系统可实现的功能开始着手。
分析出了该程序系统可实现的功能有如下五个:
查看成绩管理规定、查看学生档案、查看学生成绩、修改学生成绩、查看成绩分布。
我们在分析解决问题的过程中应该运用到的知识点有:
数组,指针,结构体,文件指针以及函数的调用。
2需求分析
●学生成绩管理系统的需求分析:
1.现在随着互联网的应用广泛,越来越多的学校纷纷采取了,学生网上查阅成绩的方法。
学生可通过网上查询自己的各科目考试成绩、总分、平均分、在班级中的名次,还有对自己的成绩质疑的时候也可以通过管理员的密码对成绩进行修改,既方便又很实用。
2.学校老师可以通过学生成绩管理系统查阅学生的成绩,对学生的各科目成绩进行系统的分析,然后对学生进行因材施教。
老师,可以根据学生的成绩调整自己的教学方式和进度及难度,可以让老师更好的提高教学质量。
学校也可以根据学生成绩,进行细致的分析,决定对学生进行奖学金的分配。
●分析程序系统实现的功能:
1.用户登陆:
学生以学号、密码登陆。
2.成绩管理规定:
说明各专业科目及及格标准和各科成绩等级分布。
3.学生档案管理:
学生的姓名、学号、专业班级。
4.查看学生成绩:
显示学生各科成绩分数、总分、平均分及班级名次。
5.修改学生成绩:
凭管理员密码修改学生成绩添加新学生信息。
6.核查学生各科目的成绩等级分布:
显示学生各科目的成绩及等级分布。
3模块设计图
根据第二章中对系统的需求分析,绘制模块图。
以下是学生成绩管理系统的各个模块的分工及流程图:
4NS流程图清单
根据第三章的模块图,绘制每一个模块的NS流程图,如果在其中要用到某一特殊算法,如排序算法等,要详细说明。
Main()函数的NS流程图:
第一个模块:
voidshow()
第三个模块:
voidshowscore()
第四个模块:
voidsetscore()
第五个模块:
voidgetscore()
5存储结构及函数说明
在本章中主要描述系统中主要信息的存储结构,对于各模块中通用的信息尽量采用同一存储结构,并将共同的存储结构保存成头文件,以便于各模块调用。
对于各模块出现的函数要加以详细说明,特别是函数功能,其中包括函数形参和返回值代表的含义。
一、基本学生信息和数据类型及结构:
longstnum;长整型的数据类型
charstname[20];字符数组的数据类型
charstclass[80];
intsch;整形数据类型
intsmh;
intseh;
intscc;
intspe;
intsls;
charstid[20];
charsthome[20];
charstmuxiao[40];
FILE*fp,*fp1;文件指针的定义数据类型
inti,choice;
inta,bb,c,d,e,f;
intsumscore,sum[50];整形数据类型和整型数组
doubleavg;双精度型的数据类型
intscore,i,j,index,temp,num;
结构体采用数组格式:
(定义结构数据结构)
structstu{
longstnum;//学生的学号
charstname[20];//学生的姓名
charstclass[80];//学生的专业班级
intsch;//语文成绩
intsmh;//数学成绩
intseh;//英语成绩
intscc;//C语言成绩
intspe;//体育成绩
intsls;//离散成绩
charstid[20];//学生身份证号
charsthome[20];//学生籍贯
charstmuxiao[40];//学生原毕业学院
};
stua[50],b[50],*p;结构体数组及结构指针
定义头文件结构:
#include/*标准库函数文件*/
#include/*字符串处理函数文件*/
#include/*数学函数处理文件*/
二、txt文件介绍:
在我们的学生成绩管理课程设计中,包含了两个txt文件,通过这两个文件来读取相应的信息,第一个是f.txt文件,该文件内存储了计算机科学与技术专业一、二班学生的学号、姓名、专业班级、各科成绩、身份证号、籍贯和原毕业学校等学生信息,第二个是f2.txt文件,该文件用于存储中国海洋大学成绩管理规定,该规定在我们的学生成绩管理程序中的第一项功能中被显示。
三、主要函数说明:
#include/*标准化头文件处理函数*/
#include/*字符串处理函数*/
#include/*数学库处理函数*/
voidshow()/*显示学生档案模块的函数*/
voidshowpersonal()/*显示学生档案模块的函数*/
voidshowscore()/*显示学生成绩模块的函数*/
voidsetscore()/*设置学生成绩模块的函数*/
voidgetscore()/*显示学生成绩分布状况的函数*/
各个函数详细的说明:
structstu{
longstnum;//学生的学号
charstname[20];//学生的姓名
charstclass[80];//学生的专业班级
intsch;//语文成绩
intsmh;//数学成绩
intseh;//英语成绩
intscc;//C语言成绩
intspe;//体育成绩
intsls;//离散成绩
charstid[20];//学生身份证号
charsthome[20];//学生籍贯
charstmuxiao[40];//学生原毕业学院
};
四、各模块的详细说明:
1、学生成绩管理系统登录模块:
1)函数原型、功能及形参说明;
函数原型intmain()
函数功能学生登陆以及显示功能菜单
参数说明FILE*fp;stua[50],*p;intchoice,index=1;ints,I,x,flag;longnum;
2)源程序清单
intmain()/*主函数*/
{
FILE*fp;/*文件指针的定义声明*/
stua[50],*p;/*结构体数组、结构指针的定义声明*/
intchoice,index=1;/*定义主函数的变量、参数变量*/
ints,I,x,flag;
longnum;/*定义声明长整型数据的类型*/
if((fp=fopen("f.txt","r"))==NULL){
printf("Fileopenerror!
\n");
}/*文件打开格式*/
printf("**********************欢迎使用学生成绩管理系统****************************\n");/*进入学生成绩管系统的显示*/
printf("请先登陆:
(只需输入您的学号即可)");
scanf("%ld",&num);/*学生登陆学生成绩管理系统*/
i=0;
while(!
feof(fp))
{
fscanf(fp,"%ld%s%s%d%d%d%d%d%d%s%s%s",&a[i].stnum,a[i].stname,a[i].stclass,&a[i].sch,&a[i].smh,&a[i].seh,&a[i].scc,&a[i].spe,&a[i].sls,a[i].stid,a[i].sthome,a[i].stmuxiao);
i++;
}
/*打开文件,读取f.txt文件的内容并读取内容,将其内容赋值给结构体数组,并记录数组长度i*/
s=i;/*将数组长度i值传给s*/
p=a;/*结构数组a数组的首地址传给结构指针*p*/
while(index<3){
if(num>=20090201&&num<=(20090200+s)){
flag=1;
break;
}/*控制输入学号的大小,实现学生的准确登陆,并给与提示,登录失败或者成功*/
else
{
printf("您输入的帐号不存在,请重新输入你的学号:
");
/*提示学生输入的帐号不存在,请重新输入,防止非学生人员乱自登陆*/
scanf("%d",&num);
if(num>=20090201&&num<=(20090200+s))
flag=1;
}
index++;/*记录登陆失败的次数,超过三次自动退出学生成绩管理系统。
*/
}
if(flag==1)/*满足条件,则学生登陆成功*/
{
for(i=0;i
if(a[i].stnum==num){
x=i;break;}
/*寻找符合该学生学号的的结构数组a[i],并输出该学生的姓名,核查是否是该生本人登陆系统*/
}
printf("你好,您的名字是:
");
printf("%s\n",a[x].stname);
printf("**************************************************************************\n");
pri