学生成绩管理系统课程设计.docx

上传人:b****5 文档编号:8528169 上传时间:2023-01-31 格式:DOCX 页数:16 大小:235.25KB
下载 相关 举报
学生成绩管理系统课程设计.docx_第1页
第1页 / 共16页
学生成绩管理系统课程设计.docx_第2页
第2页 / 共16页
学生成绩管理系统课程设计.docx_第3页
第3页 / 共16页
学生成绩管理系统课程设计.docx_第4页
第4页 / 共16页
学生成绩管理系统课程设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统课程设计.docx

《学生成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计.docx(16页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统课程设计.docx

学生成绩管理系统课程设计

学生成绩管理系统

1、课题设计的目的与要求

通过软件开发的实际操作,进一步掌握数据库的开发和应用,提高数据库的实用性,培养的工程的设计分析能力

具体如下:

1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;

2.进一步加强和提高软件工程文档的编写能力;

2、设计正文

1、系统需求分析

学生成绩管理系统主要满足来自三方面的需求,这三个方面分别是学生用户、教师用户和管理员用户。

(1)学生用户是主要的需求者。

主要的需求功能是查询成绩,查看是否补考,重修,学分等。

(2)教师用户的主要需求功能是登记、查询和修改学生成绩。

(3)管理员用户的功能需求比较复杂,包括对学生信息、教师信息、成绩信息进行管理。

在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。

在教师管理子模块中,实现对教师信息的添加、修改、删除等操作。

对其他信息子模块中,要实现编辑院系信息,编辑班级信息,编辑课程信息。

在这个系统中将管理员用户,教师用户,学生用户的权限进行严格的划分,管理员拥有最高的权限,可以查看、维护系统中的所有信息,比如,添加,修改学生信息。

而修改密码的权限是每个用户都有的,用以修改自己的密码信息。

通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。

(4)数据词典

数据流编号:

S001

数据流名称:

管理员登陆信息

简称:

管理员信息

数据流来源:

管理员

数据流去向:

学生成绩管理系统

数据流组成:

管理员账号和密码

数据流量;100/天

高峰流量:

500/天

数据流编号:

S002

数据流名称:

教师登陆信息

简称:

教师信息

数据流来源:

教师

数据流去向:

学生成绩管理系统

数据流组成:

教师姓名,编号、院系

数据流量;1000/天

高峰流量:

10000/天

数据流编号:

S003

数据流名称:

学生成绩查询信息

简称:

学生成绩

数据流来源:

学生

数据流去向:

学生成绩管理系统

数据流组成:

学生姓名、学号、成绩、课程

数据流量;1000/天

高峰流量:

10000/天

2.系统总体设计

2.1设计问题域子系统

学生成绩管理系统时用于学生查询成绩,老师登记成绩和管理员维护信息的一个平台。

整个学生成绩管理系统分为学生模块,教师模块,管理员模块和公共模块四个模块。

以下是学生成绩管理系统的总设计图和各模块的说明

(1)总体设计图

(2)各模块功能

功能模块

子功能模块

功能

管理员模块

学生信息管理

对学生信息进行添加,删除,修改

教师信息管理

对教师信息进行添加,删除,修改

其他信息管理

编辑院系,班级,课程信息

学生模块

通过这个系统查询自己各科成绩

教师模块

通过这个系统登记,修改,查询学生成绩

公共模块

实现用户的身份验证和修改密码,退出系统等功能

 

3、系统详细设计

学生成绩管理系统是实现学生查询成绩,教师登记成绩,管理员维护信息的平台。

整个学生成绩管理系统分为学生模块,教师模块,管理员模块和公共模块四个模块。

4、数据库设计

4.1概念模型设计

由前面的需求分析得到实体主要有3个:

教师、学生、管理员、课程、成绩

教师属性:

姓名、编号、院系、

学生属性:

姓名、学号、院系、班级

管理员属性:

姓名、编号

课程属性:

课程名称、课程编号、授课教师

成绩属性:

课程名称、学生姓名、教师姓名、成绩

(1)教师与课程的关系

教师与课程的关系是n﹕m,一个教师可以教多个课程,一个课程可以由多个教师教

(2)教师与学生的关系

教师与学生的关系是n﹕m,一个教师可以教多个学生,一个学生由多个老师教

(3)学生与课程的关系

学生与课程的关系是n﹕m,一个学生可以有多个课程,一个课可以有多个学生上

(4)学生与成绩的关系n﹕m

4.2逻辑结构设计

①将E-R图转化为关系模型:

管理员(姓名、编号)

学生(姓名、学号、院系、班级)

教师(姓名、编号、院系)

课程(课程名称、课程编号、授课老师)

成绩(课程名称、学生姓名、老师姓名、成绩)

②数据表设计

①学生表Student的详细数据字段

序号

字段名

字段类型

说明

备注

索引

1

stuName

nvarchar(20)

notnull

学生姓名

2

stuID

nvarchar(20)

notnull

学生学号

关键字

3

stuDepart

Int

学生院系号

4

stuClass

Int

学生班级

5

stuPwd

nvarchar(20)

notnull

学生密码

②教师表Teacher的详细数据字段

序号

字段名

字段类型

说明

备注

索引

1

teaName

nvarchar(20)notnull

教师姓名

2

teaID

nvarchar(20)notnull

教师编号

关键字

3

teaDepart

Int

教师院系号

4

teaPwd

nvarchar(20)notnull

教师密码

③课程表Course的详细数据字段

序号

字段名

字段类型

说明

备注

索引

1

courseName

nvarchar(20)notnull

课程名称

2

courseID

nvarchar(20)notnull

课程编号

关键字

3

teaName

nvarchar(20)notnull

授课老师

④成绩表Score的详细数据字段

序号

字段名

字段类型

说明

备注

索引

1

courseName

nvarchar(20)notnull

课程名称

关键字

2

stuName

nvarchar(20)notnull

学生姓名

关键字

3

teaName

nvarchar(20)notnull

教师姓名

4

score

Int

成绩

⑤管理员表User的详细数据字段

序号

字段名

字段类型

说明

备注

1

adminName

nvarchar(20)notnull

管理员姓名

2

adminID

nvarchar(20)notnull

管理员编号

关键字

3

adminPwd

nvarchar(20)

管理员密码

4.3物理结构设计

5系统编码

#include

#include

#include

#defineLENsizeof(Student)

#defineNULL0

typedefstructstudent

{

intnum;/*学号*/

charname[20];/*姓名*/

intscore[3];/*成绩*/

structstudent*next;

}Student;

intn;/*声明一个全局变量*/

Student*cin(void);

Student*sort_1(Student*head,int);/*声明按学号排序函数*/

voidprint(Student*head);/*声明显示函数*/

Student*sort_all(Student*head);/*声明排序函数*/

voidfind(Student*head);/*声明查询函数*/

Student*add_new(Student*head);

Student*cin()

{

intflag;

Student*head,*p1,*p2;

n=0;

head=(Student*)malloc(LEN);

p2=head;

printf("\n请输入第%d名学生的学号,学号为0表示结束输入:

",n+1);

scanf("%d",&flag);

while(getchar()!

='\n');

for(;flag;)/*输入每个学生的信息*/

{

n++;

p1=(Student*)malloc(LEN);

p1->num=flag;

printf("请输入第%d名学生的姓名:

",n);/*输入姓名*/

scanf("%s",p1->name);

printf("请输入第%d名学生的成绩:

",n);/*输入成绩*/

scanf("%d",&p1->score[0]);

p1->sum=p1->score[0]+p1->score[1]+p1->score[2];

p2->next=p1;

p2=p1;

printf("\n请输入第%d名学生的学号,没有此学生则输入0表示结束:

",n+1);

scanf("%d",&flag);

}

p2->next=NULL;

printf("\n\n");

returnhead;

}

Student*sort_all(Student*head)/*定义排序函数*/

{

intchoose;

for(;;)

{

printf("\n\t\t#####学生成绩统计排序####\n");

printf("\t\t#\t1.按学生学号排序\t#\n");

printf("\t\t#\t8.显示当前学生成绩\t#\n");

printf("\t\t#\t0.返回上一级菜单\t#\n");

printf("请输入你要执行的操作:

");

scanf("%d",&choose);

while(getchar()!

='\n');

switch(choose)

{

case1:

case2:

case3:

case4:

head=sort_1(head,choose);break;

case5:

print(head);sort_2(head);break;

case6:

print(head);break;

case0:

returnhead;

}

}

}

Student*sort_1(Student*head,intchoose)/*定义按学号排序函数*/

{

Student*p1,*p2=head->next,*pm,*px;

Studentmid;

if(!

p2)returnhead;

for(p1=p2;p1->next!

=NULL;p1=p1->next)

{

pm=p1;

for(p2=p1->next;p2!

=NULL;p2=p2->next)

switch(choose)

{

case1:

if(pm->num>p2->num)pm=p2;break;

case2:

if(pm->sumsum)pm=p2;break;

case3:

if(pm->score[0]score[0])pm=p2;break;

case4:

if(pm->score[1]score[1])pm=p2;break;

case5:

if(pm->score[2]score[2])pm=p2;break;

}

if(pm!

=p1)

{

mid=*pm;

*pm=*p1;

*p1=mid;

px=pm->next;

pm->next=p1->next;

p1->next=px;

}

}

printf("\n排序后的成绩表为:

\n");

print(head);

returnhead;

}

voidfind(Student*head)/*定义查询函数*/

{

Student*p;

intchoose,fnum;

chartem[20];

if(n==0){printf("\n当前系统没有任何学生数据!

\n");return;}

for(;;)

{

printf("\n请输入您要查询学生的方式:

\n\n");

printf("1、按学号查询;2、按姓名查询;0、我不查询了。

\n\n");

printf("请选择:

");

scanf("%d",&choose);

while(getchar()!

='\n');

if(choose==1)

{

printf("\n请输入你要查询的学生的学号,输入0退出学号查询:

");

scanf("%d",&fnum);

for(;fnum;)

{

for(p=head->next;p!

=NULL&&p->num!

=fnum;p=p->next);

if(!

p)

printf("\n学号为%d学生的数据为:

\n",p->num);

printf("学号\t姓名\t成绩总分\n");/*输出所有的学生信息*/

printf("%d\t%s\t%s\t%d%d%d%d\n",p->num,

p->name,p->sex,p->score[0],p->score[1],p->score[2],p->sum);

printf("\n\n请输入你还要查询的学生的学号,输入0表示不按学号查询了:

");

scanf("%d",&fnum);

}

}

}

elseif(choose==2)

{

printf("\n请输入你要查询的学生的姓名,输入0退出姓名查询:

");

scanf("%s",tem);

for(;strcmp(tem,"0");)

{

for(p=head->next;p!

=NULL&&strcmp(p->name,tem);p=p->next);

if(!

p)

}

}

elseif(choose==0){printf("\n你选择了不查询!

\n");break;}

else{printf("\n你以其他方式选择了不查询!

\n");break;}

}

}

printf("**************************学生成绩统计一览************************\

*****\n");

printf("学号\t姓名\成绩总分\n");

for(;p;p=p->next)

printf("%d\t%s\t%s\t%d%d%d%d\n",

p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->sum=p->score[0]+p->score[1]+p->score[2]);

}

structstudent*del(structstudent*head,longnum)/*定义删除学生信息函数*/

{structstudent*p1,*p2;

if(head==NULL){printf("\nlistnull!

\n");returnhead;}

p1=head;

while(num!

=p1->num&&p1->next!

=NULL)

{p2=p1;p1=p1->next;}

if(num==p1->num)

{if(p1==head)head=p1->next;

elsep2->next=p1->next;

printf("delete:

%ld\n",num);

n=n-1;

}

elseprintf("%ldnotdeenfound!

\n",num);

return(head);

}

intmain()/*主函数即用户的操作界面*/

{

Student*head;

intchoose,i,num;/*声明局部变量*/

head=(Student*)malloc(LEN);

head->next=NULL;

for(;;)

{

printf("\n\t\t*****学生成绩管理系统****\n");/*学生成绩管理系统*/

printf("\t\t*\t3.查询学生数据\t\t*\n");/*.查询学生数据*/

printf("\t\t*\t4.插入学生数据\t\t*\n");/*插入学生数据*/

printf("\t\t*\t5.显示当前成绩表\t*\n");/*显示当前成绩表*/

printf("\t\t*\t6.删除学生数据\t\t*\n");/*删除学生数据*/

printf("\t\t*\t0.退出成绩管理系统\t*\n");/*退出成绩管理系统*/

printf("\n请输入你要执行的操作:

");/*请输入你要执行的操作*/

scanf("%d",&choose);

while(getchar()!

='\n');

switch(choose)

}

}

}

6.系统测试

在系统测试中,我们首先对各个子模块进行单元测试,先判断每个子模块的运行是否正常,每个子模块判断好了,就把他们集成在一起,进行系统测试,查出是否有错误。

最后找几个人进行黑盒子测试。

三、课程设计总结或结论

首先,通过这次的课程设计的实践,让我对软件工程技术有了进一步的了解,提高了软件的运用能力,分析能力和解决问题的能力。

同时,让我对设计、编程等有了不同的认识,让我知道了自己的不足之处。

其次,本系统的实现会有不足之处,但在功能上可以满足用户的需要。

在其他方面的不足,将在今后的学习中不断改进。

然后,通过这次的课程设计,我发现对我的提高很大,编程是一个详细又周密的任务,需要人的周密思考,和高度的耐心,这可以让我克服不细致,没耐心的毛病,在以后的工作和学习中会有很大的帮助。

最后,我还学会了怎样借鉴别人的经验和方法,知道如何查阅资料和整理资料,这为以后的学习打下基础。

 

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

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1