学生成绩管理系统课程设计_第1页
学生成绩管理系统课程设计_第2页
学生成绩管理系统课程设计_第3页
学生成绩管理系统课程设计_第4页
学生成绩管理系统课程设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生成绩管理系统1、 课题设计的目的与要求 通过软件开发的实际操作,进一步掌握数据库的开发和应用,提高数据库的实用性,培养的工程的设计分析能力具体如下:1. 学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;2. 进一步加强和提高软件工程文档的编写能力;2、 设计正文1、 系统需求分析 学生成绩管理系统主要满足来自三方面的需求,这三个方面分别是学生用户、 教师用户和管理员用户。 (1)学生用户是主要的需求者。主要的需求功能是查询成绩,查看是否补考, 重修,学分等。 (2)教师用户的主要需求功能是登记、查询和修改学生成绩。 (3)管理员用户的功

2、能需求比较复杂,包括对学生信息、教师信息、成绩信息 进行管理。在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作, 还可以输入查询条件进行查询操作。在教师管理子模块中,实现对教师信息的添加、 修改、删除等操作。对其他信息子模块中,要实现编辑院系信息,编辑班级信息, 编辑课程信息。 在这个系统中将管理员用户,教师用户,学生用户的权限进行严格的划分,管 理员拥有最高的权限,可以查看、维护系统中的所有信息,比如,添加,修改学生 信息。而修改密码的权限是每个用户都有的,用以修改自己的密码信息。通过进行 严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。(4) 数据词典 数据流编

3、号:S001 数据流名称:管理员登陆信息 简称:管理员信息 数据流来源:管理员 数据流去向:学生成绩管理系统 数据流组成:管理员账号和密码 数据流量;100/天 高峰流量:500/天 数据流编号:S002 数据流名称: 教师登陆信息 简称: 教师信息 数据流来源: 教师 数据流去向:学生成绩管理系统 数据流组成: 教师姓名,编号、院系 数据流量;1000/天 高峰流量:10000/天 数据流编号:S003 数据流名称:学生成绩查询信息 简称: 学生成绩 数据流来源: 学生 数据流去向: 学生成绩管理系统 数据流组成: 学生姓名、学号、成绩、课程 数据流量;1000/天 高峰流量:10000/天

4、 2. 系统总体设计2.1 设计问题域子系统 学生成绩管理系统时用于学生查询成绩,老师登记成绩和管理员维护信息的一个平 台。整个学生成绩管理系统分为学生模块,教师模块,管理员模块和公共模块四个模块。 以下是学生成绩管理系统的总设计图和各模块的说明(1) 总体设计图 (2)各模块功能 功能模块 子功能模块功能 管理员模块 学生信息管理对学生信息进行添加,删除,修改 教师信息管理对教师信息进行添加,删除,修改 其他信息管理编辑院系,班级,课程信息 学生模块通过这个系统查询自己各科成绩 教师模块通过这个系统登记,修改,查询学生成绩 公共模块实现用户的身份验证和修改密码,退出系统等功能3、 系统详细设

5、计学生成绩管理系统是实现学生查询成绩,教师登记成绩,管理员维护信息的平台。 整个学生成绩管理系统分为学生模块,教师模块,管理员模块和公共模块四个模块。4、 数据库设计 4.1 概念模型设计 由前面的需求分析得到实体主要有3个:教师、学生、管理员、课程、成绩 教师属性:姓名、编号、院系、 学生属性:姓名、学号、院系、班级 管理员属性:姓名、编号 课程属性:课程名称、课程编号、授课教师 成绩属性:课程名称、学生姓名、教师姓名、成绩 (1)教师与课程的关系 教师与课程的关系是nm,一个教师可以教多个课程,一个课程可以由多个教师教(2)教师与学生的关系 教师与学生的关系是nm,一个教师可以教多个学生,

6、一个学生由多个老师教 (3)学生与课程的关系 学生与课程的关系是nm,一个学生可以有多个课程,一个课可以有多个学生上(4)学生与成绩的关系nm 4.2逻辑结构设计 将E-R图转化为关系模型: 管理员(姓名、编号) 学生(姓名、学号、院系、班级 ) 教师(姓名、编号、院系) 课程(课程名称、课程编号、授课老师) 成绩(课程名称、学生姓名、老师姓名、成绩)数据表设计 学生表Student的详细数据字段 序号 字段名 字段类型说明备注索引 1 stuNamenvarchar(20)not null学生姓名 2 stuIDnvarchar(20)not null学生学号关键字有 3stuDepartI

7、nt学生院系号 4 stuClassInt 学生班级 5 stuPwdnvarchar(20)not null 学生密码 教师表Teacher的详细数据字段序号字段名字段类型说明备注索引 1 teaNamenvarchar(20)not null教师姓名 2 teaIDnvarchar(20)not null教师编号关键字有 3teaDepartInt教师院系号 4 teaPwdnvarchar(20)not null 教师密码 课程表Course的详细数据字段序号 字段名字段类型说明备注索引 1courseNamenvarchar(20)not null课程名称 2 courseIDnvar

8、char(20)not null课程编号关键字有 3 teaNamenvarchar(20)not null授课老师 成绩表Score的详细数据字段序号 字段名字段类型说明备注索引 1courseNamenvarchar(20)not null 课程名称关键字有 2 stuNamenvarchar(20)not null 学生姓名关键字有 3 teaNamenvarchar(20)not null 教师姓名 4 score Int 成绩 管理员表User的详细数据字段 序号 字段名字段类型说明备注 1adminNamenvarchar(20)not null 管理员姓名 2 adminIDnv

9、archar(20)not null 管理员编号关键字 3 adminPwd nvarchar(20) 管理员密码 4.3 物理结构设计 5系统编码 #include <stdio.h>#include <stdlib.h>#include <malloc.h>#define LEN sizeof(Student)#define NULL 0typedef struct studentint num; /*学号*/char name20; /*姓名*/int score3; /*成绩*/struct student *next;Student;int n;

10、/*声明一个全局变量*/Student *cin(void); Student *sort_1(Student *head,int); /*声明按学号排序函数*/void print(Student *head); /*声明显示函数*/Student *sort_all(Student *head); /*声明排序函数*/void find(Student *head); /*声明查询函数*/Student *add_new(Student *head);Student *cin()int flag; Student *head,*p1,*p2;n=0;head=(Student *)mall

11、oc(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名学

12、生的成绩:",n); /*输入成绩*/scanf("%d",&p1->score0);p1->sum=p1->score0+p1->score1+p1->score2;p2->next=p1;p2=p1;printf("n请输入第%d名学生的学号,没有此学生则输入0表示结束:",n+1); scanf("%d",&flag);p2->next=NULL;printf("nn");return head;Student *sort_all(Stude

13、nt *head) /*定义排序函数*/int choose;for(;) printf("ntt# # # # # 学生成绩统计排序 # # # #n");printf("tt#t1.按学生学号排序t #n");printf("tt#t8.显示当前学生成绩t #n");printf("tt#t0.返回上一级菜单t #n");printf("请输入你要执行的操作:");scanf("%d",&choose);while(getchar()!='n');

14、switch(choose)case 1:case 2:case 3:case 4:head=sort_1(head,choose);break;case 5:print(head);sort_2(head);break;case 6:print(head);break;case 0:return head;Student *sort_1(Student *head,int choose) /*定义按学号排序函数*/Student *p1,*p2=head->next,*pm,*px;Student mid;if (!p2) return head;for(p1=p2;p1->ne

15、xt!=NULL;p1=p1->next)pm=p1;for(p2=p1->next;p2!=NULL;p2=p2->next)switch(choose)case 1:if (pm->num>p2->num) pm=p2;break;case 2:if (pm->sum<p2->sum) pm=p2;break;case 3:if (pm->score0<p2->score0) pm=p2;break;case 4:if (pm->score1<p2->score1) pm=p2;break;case

16、5:if (pm->score2<p2->score2) 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); return head;void find(Student *head) /*定义查询函数*/Student *p;int choose,fnum;char tem20;if (n=0) printf("n当前系统没有任何

17、学生数据!n ");return;for(;)printf("n请输入您要查询学生的方式:nn");printf("1、按学号查询;2、按姓名查询;0、我不查询了。nn");printf("请选择:");scanf("%d",&choose);while(getchar()!='n');if (choose=1) printf("n请输入你要查询的学生的学号,输入0退出学号查询:");scanf("%d",&fnum);for(;fn

18、um;)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("%dt%st%st %d %d %d %dn",p->num,p->name,p->sex ,p->score0,p->score1,p->score2,p->sum);printf

19、("nn请输入你还要查询的学生的学号,输入0表示不按学号查询了:");scanf("%d",&fnum); else if (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) else if (choose=0

20、) printf("n你选择了不查询!n");break;else printf("n你以其他方式选择了不查询!n");break;printf("*学生成绩统计一览*n");printf("学号t姓名成绩 总分n");for(;p;p=p->next)printf("%dt%st%st %d %d %d %dn",p->num,p->name,p->sex ,p->score0,p->score1,p->score2,p->sum=p->s

21、core0+p->score1+p->score2); struct student *del(struct student *head,long num) /*定义删除学生信息函数*/struct student *p1,*p2;if(head=NULL) printf("nlist null! n");return head;p1=head;while(num!=p1->num && p1->next!=NULL)p2=p1;p1=p1->next;if(num=p1->num)if(p1=head)head=p1-&

22、gt;next;else p2->next=p1->next;printf("delete:%ldn",num);n=n-1;else printf("%ld not deen found! n",num);return(head);int main()/*主函数即用户的操作界面*/Student *head;int choose,i,num; /*声明局部变量*/head=(Student *)malloc(LEN);head->next=NULL; for(;)printf("ntt* * * * * 学生成绩管理系统 * * * *n"); /*学生成绩管理系统*/printf("tt*t3.查询学生数据tt *n");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论