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

下载本文档

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

文档简介

1、淮阴工学院数据结构课程设计报告选题名称:学生成绩管理系统系(院):数理学院专业:信息与计算科学班级:计科1102班姓名:徐连喜学号:1104101233指导教师:周海岩学年学期:20112012学年 第 1 学期2012年06月06日21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息 技术和网络技术的讯速发展和广泛应用,对社会的政治,经济,军事,文化等领 域产生越来越深刻。 学生成绩管理系统是一个教育单位不可缺少的部分, 它的内 容对于学校的决策者和管理者来说都至关重要。 本论文叙述到的学生成绩管理系 统是用 IIS+ASP 网页编程 +ACCESS 数据库 +DREAMWEA

2、VER MX 2004+SQL 查 询语言实现的。 重点介绍了学生成绩管理系统的实现过程: 包括系统分析, 系统 调查,功能设计,数据库设计,系统实现,系统测试和调试等。本系统主要功能 有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理 页面和修改管理员密码等内容。【关键词】成绩管理; 成绩查询; C+中文摘要1 绪论1.1 选题背景1.2 需求分析2 总体设计目录000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002.1 程

3、序设计组成框图00000000000000000000000000000000000000002.2模块功能说明000000000000000000000002.3程序流程图000000000000000000000000002.4主要函数之间相互调用00000000000010113 在设计过程中的感受00000000000012致谢00000000000000000000000000000000000000000000000013参考文献0000000000000000000000000000000000000000000000014附录:源程序清单00000000000000000000

4、000000000000000000151. 绪 论1.1 选题背景为了提高高校学生信息的管理效率, 方便对学生信息进行管理、 学校里面的 学生和管理员方便去管理和查询学生信息, 如再要进行查询, 就得在众多的学生 信息中查找自己的成绩信息, 面对学院大量的学生信息, 怎么可以即时而方便的 管理,学生只要登录本系统就可以查找到自己的成绩信息, 而管理员也方便去管 理每学期的学生的成绩信息。 建立一个学生信息管理系统, 使学生信息管理工作 规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确 性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。 2.1 需求分

5、析学生管理系统功能的信息量大, 数据安全性和保密性要求最高。 本功能实现 对专业信息、 学生信息、 教师信息情况信息的管理和统计、 课程信息和成绩信息 查看及维护。系统管理员可以浏览、查询、学生的基本信息,能添加、删除和修 改学生信息, 这部分功能应该由系统管理员执行, 但是,删除某条专业基本信息 记录时,应实现对该专业的相关信息也级联删除。 并且还应具有查询, 并打印输 出的功能设计不同用户的操作权限和登陆方法、 对所有用户开放的用户提供学生成绩 信息查询、 由于本系统功能实现方面并不太复杂, 所以上面只是相关的学生信息 管理查询的总体分析, 具体实现就主要体现在学生管理, 教师的管理和课程

6、的管 理这一块,也就是重点实现查询与添加学生信息,以及对成绩信息管理。2 总体设计(i)程序设计组成框图1.按班级输出学生成绩单2.按姓名查询学生成绩管理系统3.增加学生4.删除学生5.按班级修改学生成绩6.按班学期改学生成绩7保存所有学生信息8显示不及格学生成绩9. 按平均成绩排序并输出成绩10. 退出(2)模块功能说明1输出功能:完成全部学生记录的显示。2查询功能:输入姓名可以查询学生的详细信息3增加功能:增加新学生的信息。4删除功能:删除学生信息。5修改功能:修改学生的错误信息。6保存功能:保存已输入信息。7读取功能:读取已输入信息。8显示功能:按要求显示学生记录。9排序功能:按要求完成

7、对学生信息的排序。10退出系统。(3) 程序流程图(4) 主要函数之间相互调用如下:主函数main () 的调用switch(choice)case 1:Outputl nformati on( );break;case 2:Desplay In foBystude ntName();break;case 3:p=MallocNode();Get In formati on( p); I nsertOn eNode(p); break; case 4:DeleteNodeBystude ntNumber();break;case 5:Cha ngeMarkByName();break;case

8、 6:Cha ngeMarkByNumber();break;case 7:SaveL in kToFile();break;case 8:DesplayMarkSegme nt();break;case 9:CompositorByTotalMark();break;case 10:SaveLi nkToFile();总结首先经过一周的编程实习, 并在后一段的报告总结, 我对数据结 构这门科有新的认识, 本人实在是获益不浅! 要想编写一个准确、 高 效并有使用价值的程序, 一定先要对课本知识熟悉, 还要掌握必要的 上机操作能力,写程序其实很容易而关键在于调试程序。这次设计 , 让我重新掌握了

9、数据结构 ,而且还得到了用数据结构解决实际问题的 宝贵经验。其次 , 通过此次编程我也发现了自己在学习中的错误和不足, 复 习了以前学过的知识。 同时也学到了一些没学过的知识, 让我从中收 益非浅,也为期末考试准备了一下! 更重要的是培养了独立思考问题 和解决问题的能力,熟悉了一些基本操作和解决问题的方法!致谢因为初次接触等原因此次设计遇到了许多问题 ,我深刻体会到老 师发挥的重要作用 , 数据结构程序对我们来说比较难 ,在匆忙的学习 中更是难上加难 ,似乎觉得自己仅是个匆匆过客 ,但在老师的帮助下我 学会了如何调试 ,如何查找系统没有提示的错误 ,最后终于排除万难把 程序搞定 ,体会到原来编

10、程也挺有意思的快感 .我想没有老师的帮助我 很难在短期内把程序设计做的这样好 , 在此特地感谢老师的帮助。参考文献1 李丽娟 . C 语言程序设计教程(第二版) . 北京:人民邮 电出版社 20092 刁成嘉 . C 语言程序设计论文 D. 北京:清华大学出版社 20043 杨文军,杨柳 . C 语言程序设计教程 M. 北京:清华大学 出版社 20104 周启海 . C 语言程序设计报告 R. 北京:中国水利工程出 版社 2005谭浩强 . C 程序设计(第三版) M. 北京:清华大学出版 社 2005附录 源程序清单 #include<stdio.h> #include<c

11、onio.h> #include<malloc.h> #include<string.h> typedef struct STUDENTchar studentNumber10;/* 学生学号 */ char studentName20;/* 学生姓名 */ char className20;/* 班级名称 */ char yearName20;/* 学期名称 */ float mark1;/* 第 1 门成绩 */ float mark2;/* 第 2 门成绩 */ float mark3;/* 第 3 门成绩 */ struct STUDENT *next;S

12、TUDENT;STUDENT *headLink;/* 链表表头指针 */ /* 以下是函数声明 */void ReadInfoFormFile(void);void DesplayMenu(void);void CreateHeadLink(void); STUDENT *MallocNode(void);void GetInformation(STUDENT *t);void OutputInformation(void);void DesplayInfoBystudentName(void); void DesplayOneNode(STUDENT *t); void InsertOne

13、Node(STUDENT *t);void DeleteNodeBystudentNumber(void); void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DesplayMarkSegment(void); void CompositorByTotalMark(void); int choose;/* 用于接受用户的选择 */ /* 主函数 */ void main()CreateHeadLink(); ReadInfoFormFile();DesplayMenu

14、();/* 函数功能:从文件中读学生信息到链表中 */ void ReadInfoFormFile(void)FILE *fp;STUDENT *p;fp=fopen("student.txt","r");if(!fp)printf(" 文件不存在 n");return;p=MallocNode();while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->cl assName,&(p->mark1),&

15、;(p->mark2),&(p->mark3)>0)InsertOneNode(p);p=MallocNode();fclose(fp);/* 函数功能:显示菜单,根据用户的输入 完成相应的功能*/void DesplayMenu(void)STUDENT *p;printf(" 请选择相应功能 nn");printf("| 1 按班级输出学生成绩单 |n");printf("| 2按姓名查询 |n");printf("| 3增加学生 |n");printf("| 4删除学生 |

16、n");printf("| 5按班级修改学生成绩|n");printf("| 6按学期修改学生成绩|n");printf("| 7 保存所有学生信息 |n");printf("| 8显示不及格学生成绩|n");printf("| 9 按平均成绩排序并输出绩 |n");printf("| 10 退出 |nn");scanf("%d",&choose);/* 取得用户的选择 */switch(choose)case 1:OutputInfor

17、mation();/* 显示所有学生的信息 */ break;case 2:DesplayInfoBystudentName(); break;case 3: p=MallocNode();/* 先申请一个新结点 */GetInformation(p);/* 要求用户输入信息到新结点中 */ InsertOneNode(p);/* 将新结点加到链表中 */ break;case 4:DeleteNodeBystudentNumber();/* 根据用户输入的学号删除该学生 */ break;case 5:ChangeMarkByName();/* 根据用户输入的姓名修改学生成绩 */ brea

18、k;case 6:ChangeMarkByNumber();/* 根据用户输入的学号修改学生成绩 */ break;case 7:SaveLinkToFile();/* 保存数据 */ break;case 8:DesplayMarkSegment();/* 显示不及格的学生成绩 */ break;case 9:CompositorByTotalMark();/* 按平均成绩排序 */ break;case 10:SaveLinkToFile();/* 保存数据后再退出 */ free(headLink);break; default: break;DesplayMenu();/* 递归调用

19、*/ /* 函数功能:建立链表表头*/void CreateHeadLink(void)STUDENT *p; p=(STUDENT*)malloc(sizeof(STUDENT);headLink=p; p->next=NULL; /* 函数功能:申请一个新结点,并将其初始化*/STUDENT *MallocNode(void)STUDENT *p;int i;p=(STUDENT*)malloc(sizeof(STUDENT); if(p=NULL)return NULL;for(i=0;i<10;i+) p->studentNumberi='0'for(

20、i=0;i<20;i+) p->studentNamei='0'for(i=0;i<20;i+) p->classNamei='0'p->mark1=0.0;p->mark2=0.0;p->mark3=0.0; p->next=NULL;return p; /* 函数功能:取得用户输入的学生信息*/ void GetInformation(STUDENT *t)printf(" 请输入学生学号: n"); scanf("%s",t->studentNumber);pri

21、ntf(" 请输入学生姓名: n"); scanf("%s",t->studentName);printf(" 请输入该生所在班级: n"); scanf("%s",t->className);printf(" 请输入第 1 门成绩: n"); scanf("%f",&(t->mark1);printf(" 请输入第 2 门成绩: n"); scanf("%f",&(t->mark2);print

22、f(" 请输入第 3 门成绩: n");scanf("%f",&(t->mark3);/*函数功能:在链表的结尾处增加一个结点*/void InsertOneNode(STUDENT *t)STUDENT *p;p=headLink;while(p->next)p=p->next;p->next=t;/* 函数功能:根据用户输入的学生姓名显示该学生的信息 */void DesplayInfoBystudentName(void)STUDENT *p;char studentName20;char flag=0;p=head

23、Link->next;printf(" 请输入学生姓名: n");scanf("%s",studentName);while(p) if(strcmp(p->studentName,studentName)=0)printf(" 学号t姓名t班级t成绩1t成绩1t成绩3t总成绩t平均成绩 nn");DesplayOneNode(p);flag=1;break;p=p->next;if(!flag)printf(" 对不起,不存在姓名为 %s 的学生 n",studentName);/* 函数功能:

24、输出一个结点的信息 */ void DesplayOneNode(STUDENT *t) printf("%st",t->studentNumber);printf("%st",t->studentName); printf("%st",t->className); printf("%.2ft",t->mark1); printf("%.2ft",t->mark2); printf("%.2ft",t->mark3); printf(&qu

25、ot;%.2ft",t->mark1+t->mark2+t->mark3); printf("%.2ftn",(t->mark1+t->mark2+t->mark3)/3); /* 函数功能:根据用户输入的学号删除该学生 */ void DeleteNodeBystudentNumber(void) char studentNumber10;STUDENT *p,*q;char flag=0;printf(" 请输入要删除的学生学号: ");scanf("%s",studentNumber

26、);p=headLink;q=headLink->next;while(q)if(strcmp(q->studentNumber,studentNumber)=0)p->next=q->next;free(q);flag=1;break;p=p->next;q=q->next;if(!flag)printf(" 不存在该学号的学生 n");return;printf(" 成功删除 n");/* 函数功能:显示所有学生的信息*/ void OutputInformation(void)STUDENT *p;p=headL

27、ink->next;if(p=NULL)printf(" 现在没有学生信息,请先输入学生信息 nn");return;printf(" 学号t姓名t班级t成绩1t成绩1t成绩3t总成绩t平均成绩 nn");while(p)DesplayOneNode(p);p=p->next;/*函数功能:根据输入的班级修改成绩*/void ChangeMarkByName(void)STUDENT *p;int a;char studentName20;char flag=0;float mark1,mark2,mark3;p=headLink->n

28、ext;printf(" 请输入学生班级 :n");scanf("%d",&a);printf(" 请输入学生姓名: n");scanf("%s",studentName);while(p)if(strcmp(p->studentName,studentName)=0)printf(" 请输入新的第 1 门成绩: n");scanf("%f",&mark1);printf(" 请输入新的第 2 门成绩: n");scanf("

29、;%f",&mark2);printf(" 请输入新的第 3 门成绩: n");scanf("%f",&mark3);p->mark1=mark1;p->mark2=mark2;p->mark3=mark3;flag=1;printf(" 修改成功 n"); break; p=p->next;if(!flag)printf(" 对不起,不存在班级为 %s 的学生 n",studentName); /* 函数功能:根据输入的学期修改成绩 */ void ChangeM

30、arkByNumber(void) STUDENT *p;int b;char studentNumber20;char flag=0;float mark1,mark2,mark3; p=headLink->next;printf(" 请输入学生所在学期 :n"); scanf("%d",&b);printf(" 请输入学生学号: n"); scanf("%s",studentNumber);while(p) if(strcmp(p->studentNumber,studentNumber)=

31、0)printf(" 请输入新的第 1 门成绩: n"); scanf("%f",&mark1);printf(" 请输入新的第 2 门成绩: n"); scanf("%f",&mark2);printf(" 请输入新的第 3 门成绩: n"); scanf("%f",&mark3);p->mark1=mark1;p->mark2=mark2;p->mark3=mark3;flag=1;printf(" 修改成功 n&quo

32、t;); break; p=p->next;if(!flag)printf(" 对不起,不存在学期为 %s 的学生 n",studentNumber);/* 函数功能:保存链表数据到文件中*/void SaveLinkToFile(void)STUDENT *p;FILE *fp;p=headLink->next;if(p=NULL)printf(" 现在没有学生信息,请先输入学生信息 nn");return;fp=fopen("student.txt","w+");if(!fp)printf(&quo

33、t; 文件不存在 n");return;while(p)fprintf(fp,"%s %s %s %f %f %fn",p->studentNumber,p->studentName,p-> className,p->mark1,p->mark2,p->mark3);p=p->next;fclose(fp);/* 函数功能:不及格学生成绩*/void DesplayMarkSegment(void)STUDENT *p;int count=0;p=headLink->next;printf("60 分以下 (不及格 ) 的学生成绩如下: n");printf(" 学号t姓名t班级t成绩1t成绩1t成绩3t总成绩t平均成绩nn");while(p)if(6>(int)(p->mark1/10)|(6>(int)(p->mark2/10)|(6>(int)(p->mark3/10)/* 只要有一科不及格就认为该生不及格 */count+;Desp

温馨提示

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

评论

0/150

提交评论