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

下载本文档

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

文档简介

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

2、ASP 网页编程 +ACCESS数据库 +DREAMWEAVERMX2004+SQL查询语言实现的。重点介绍了学生成绩管理系统的实现过程:包括系统分析,系统调查 , 功能设计,数据库设计,系统实现,系统测试和调试等。本系统主要功能有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理页面和修改管理员密码等容。【关键词】成绩管理;成绩查询; C+. 学习帮手 .专业整理 .目录中文摘要。11绪论。41.1选题背景。 51.2需求分析。 62总体设计。 72.1程序设计组成框图。82.2模块功能说明。92.3程序流程图。102.4主要函数之间相互调用。 113在设计过程中的感受。1

3、2致谢。 13参考文献。 14附录:源程序清单。 151. 绪论1.1选题背景为了提高高校学生信息的管理效率,方便对学生信息进行管理、 学校里面的. 学习帮手 .专业整理 .学生和管理员方便去管理和查询学生信息,如再要进行查询, 就得在众多的学生信息中查找自己的成绩信息, 面对学院大量的学生信息, 怎么可以即时而方便的管理,学生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。 建立一个学生信息管理系统, 使学生信息管理工作规化,系统化,程序化,避免学生管理的随意性, 提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工

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

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

6、:按要求显示学生记录。9 排序功能:按要求完成对学生信息的排序。10 退出系统。( 3)程序流程图. 学习帮手 .专业整理 .开始输入指令( 110)12345678910学按增删按按保不平生姓加除班学存及均成名学学级期信格分绩查生生修修息成排单询改改绩序退出结束( 4)主要函数之间相互调用如下:主函数 main ()的调用switch(choice)case 1:OutputInformation();break;case 2:DesplayInfoBystudentName();break;case 3:p=MallocNode();GetInformation(p); InsertOne

7、Node(p); break; case 4:DeleteNodeBystudentNumber();break;case 5:ChangeMarkByName();break;case 6:ChangeMarkByNumber();break;case 7:SaveLinkToFile();break;case 8:DesplayMarkSegment();break;case 9:CompositorByTotalMark();break;case 10:SaveLinkToFile();总结. 学习帮手 .专业整理 .首先经过一周的编程实习, 并在后一段的报告总结, 我对数据结构这门科有

8、新的认识, 本人实在是获益不浅! 要想编写一个准确、 高效并有使用价值的程序, 一定先要对课本知识熟悉, 还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。这次设计 , 让我重新掌握了数据结构 , 而且还得到了用数据结构解决实际问题的宝贵经验。其次 , 通过此次编程我也发现了自己在学习中的错误和不足, 复习了以前学过的知识。 同时也学到了一些没学过的知识, 让我从中收益非浅,也为期末考试准备了一下! 更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!致谢. 学习帮手 .专业整理 .因为初次接触等原因此次设计遇到了许多问题 , 我深刻体会到老师发挥的

9、重要作用 , 数据结构程序对我们来说比较难 , 在匆忙的学习中更是难上加难 , 似乎觉得自己仅是个匆匆过客 , 但在老师的帮助下我学会了如何调试 , 如何查找系统没有提示的错误 , 最后终于排除万难把程序搞定 , 体会到原来编程也挺有意思的快感 . 我想没有老师的帮助我很难在短期把程序设计做的这样好, 在此特地感谢老师的帮助。. 学习帮手 .专业整理 .参考文献1 丽娟 . C 语言程序设计教程(第二版) . 北京:人民邮电20092 刁成嘉 . C 语言程序设计论文 D. 北京:清华大学 20043 文军,柳 . C语言程序设计教程 M. 北京:清华大学 20104 周启海 . C 语言程序

10、设计报告 R. 北京:中国水利工程20055 谭浩强 . C 程序设计(第三版) M. 北京:清华大学 2005附 录源程序清单. 学习帮手 .专业整理 .#include#include#include#includetypedef struct STUDENTchar studentNumber10;/*学生学号 */char studentName20;/*学生 */char className20;/*班级名称 */char yearName20;/*学期名称 */float mark1;/*第 1门成绩 */float mark2;/*第 2门成绩 */float mark3;/*第

11、 3门成绩 */struct STUDENT *next;STUDENT;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(S

12、TUDENT *t);void InsertOneNode(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();ReadInfoFormF

13、ile();DesplayMenu();/*函数功能:从文件中读学生信息到链表中*/. 学习帮手 .专业整理 .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-className,&(p-mark1),&(p-mark2),&(p-mark3)0)InsertOneNode(p);p=Mall

14、ocNode();fclose(fp);/*函数功能:显示菜单,根据用户的输入完成相应的功能*/void DesplayMenu(void)STUDENT *p;printf(-请选择相应功能 -nn);printf(| 1按班级输出学生成绩单 |n);printf(| 2按查询 |n);printf(| 3增加学生 |n);printf(| 4删除学生 |n);printf(| 5按班级修改学生成绩 |n);printf(| 6按学期修改学生成绩 |n);printf(| 7保存所有学生信息 |n);printf(| 8显示不及格学生成绩 |n);printf(| 9按平均成绩排序并输出绩

15、|n);printf(| 10退出 |nn);scanf(%d,&choose);/*取得用户的选择 */switch(choose)case 1:OutputInformation();/*显示所有学生的信息 */break;case 2:. 学习帮手 .专业整理 .DesplayInfoBystudentName();break;case 3:p=MallocNode();/*先申请一个新结点 */GetInformation(p);/* 要求用户输入信息到新结点中 */ InsertOneNode(p);/* 将新结点加到链表中 */ break;case 4:DeleteNodeBys

16、tudentNumber();/* 根据用户输入的学号删除该学生 */ break;case 5:ChangeMarkByName();/* 根据用户输入的修改学生成绩 */ break;case 6:ChangeMarkByNumber();/* 根据用户输入的学号修改学生成绩 */ break;case 7:SaveLinkToFile();/*保存数据 */break;case 8:DesplayMarkSegment();/* 显示不及格的学生成绩 */ break;case 9:CompositorByTotalMark();/*按平均成绩排序 */break;case 10:Sav

17、eLinkToFile();/*保存数据后再退出 */free(headLink);break;default:break;DesplayMenu();/*递归调用 */*函数功能:建立链表表头*/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(ST

18、UDENT);if(p=NULL)return NULL;for(i=0;istudentNumberi=0;for(i=0;istudentNamei=0;for(i=0;iclassNamei=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);printf(请输入学生: n);scanf(%s,t-studentName);print

19、f(请输入该生所在班级:n);scanf(%s,t-className);printf(请输入第 1 门成绩: n);scanf(%f,&(t-mark1);printf(请输入第 2 门成绩: n);scanf(%f,&(t-mark2);printf(请输入第 3 门成绩: n);scanf(%f,&(t-mark3);/*函数功能:在链表的结尾处增加一个结点*/void InsertOneNode(STUDENT *t). 学习帮手 .专业整理 .STUDENT *p;p=headLink;while(p-next)p=p-next;p-next=t;/*函数功能:根据用户输入的学生显示

20、该学生的信息*/void DesplayInfoBystudentName(void)STUDENT *p;char studentName20;char flag=0;p=headLink-next;printf(请输入学生: n);scanf(%s,studentName);while(p)if(strcmp(p-studentName,studentName)=0)printf( 学号 tt 班级 t 成绩 1t 成绩 1t 成绩 3t 总成绩 t 平均成绩 nn); DesplayOneNode(p);flag=1;break;p=p-next;if(!flag)printf(对不起,

21、不存在为%s 的学生 n,studentName);/*函数功能:输出一个结点的信息*/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(%.2ft,t-mark1+t-mark2+t-mark3);printf(%.2ftn,(t-mark1+t-mark

22、2+t-mark3)/3);/*函数功能:根据用户输入的学号删除该学生*/void DeleteNodeBystudentNumber(void)char studentNumber10;STUDENT *p,*q;char flag=0;printf(请输入要删除的学生学号:);scanf(%s,studentNumber);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(!

23、flag)printf(不存在该学号的学生 n);return;printf(成功删除 n);/*函数功能:显示所有学生的信息*/void OutputInformation(void)STUDENT *p;p=headLink-next;if(p=NULL). 学习帮手 .专业整理 .printf( 现在没有学生信息,请先输入学生信息 nn); return;printf( 学号 tt 班级 t 成绩 1t 成绩 1t 成绩 3t 总成绩 t 平均成绩 nn); while(p)DesplayOneNode(p);p=p-next;/*函数功能:根据输入的班级修改成绩*/void Chang

24、eMarkByName(void)STUDENT *p;int a;char studentName20;char flag=0;float mark1,mark2,mark3;p=headLink-next;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(%f,&mark

25、2);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 ChangeMarkByNumber(void)STUDENT *p;int b;char studentNumber20;char flag=0;float mark1,mark2

26、,mark3;p=headLink-next;printf(请输入学生所在学期 :n);scanf(%d,&b);printf(请输入学生学号: n);scanf(%s,studentNumber);while(p)if(strcmp(p-studentNumber,studentNumber)=0)printf(请输入新的第 1 门成绩: n);scanf(%f,&mark1);printf(请输入新的第 2 门成绩: n);scanf(%f,&mark2);printf(请输入新的第 3 门成绩: n);scanf(%f,&mark3);p-mark1=mark1;p-mark2=mark

27、2;p-mark3=mark3;flag=1;printf(修改成功 n);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(文件不存在 n);return;whi

28、le(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( 学号 tt 班级 t 成绩 1t 成绩 1t 成绩 3t 总成绩 t 平均成绩 nn); while(p

29、)if(6(int)(p-mark1/10)|(6(int)(p-mark2/10)|(6(int)(p-mark3/10)/*只要有一科不及格就认为该生不及格*/count+;DesplayOneNode(p);p=p-next;printf(不及格的学生一共有 %d人n,count);. 学习帮手 .专业整理 ./*函数功能:按平均成绩排序*/void CompositorByTotalMark(void)STUDENT exchange,*r,*p,*q;r=headLink-next;if(r=NULL)printf( 现在还没学生信息 , 请先输入学生信息 n); return;wh

30、ile(r)/*两层 while 循环实现排序 */p=r;q=r-next;while(q)if(q-mark1+q-mark2+q-mark3)(p-mark1+p-mark2+p-mark3)strcpy(exchange.studentNumber,q-studentNumber);/* 先复制 q 结点信息到 exchange*/strcpy(exchange.studentName,q-studentName);strcpy(exchange.className,q-className);exchange.mark1=q-mark1;exchange.mark2=q-mark2;e

31、xchange.mark3=q-mark3;strcpy(q-studentNumber,p-studentNumber);/*再复制 p 结点信息到 q*/strcpy(q-studentName,p-studentName);strcpy(q-className,p-className);q-mark1=p-mark1;q-mark2=p-mark3;q-mark3=p-mark3;strcpy(p-studentNumber,exchange.studentNumber);/*最后复制 exchange 结点信息到 p*/strcpy(p-studentName,exchange.stu

32、dentName);strcpy(p-className,exchange.className);p-mark1=exchange.mark1;p-mark2=exchange.mark2;p-mark3=exchange.mark3;q=q-next;. 学习帮手 .专业整理 .r=r-next;OutputInformation();修改程序如下:/*2015 年 12 月 7 日编制丹白工作室*/#include#include#include#includetypedef struct STUDENTchar studentNumber10;/*学生学号 */char studentN

33、ame20;/*学生 */char className20;/*班级名称 */char yearName20;/*学期名称 */float mark1;/*第 1门成绩 */float mark2;/*第 2门成绩 */float mark3;/*第 3门成绩 */struct STUDENT *next;STUDENT;STUDENT *headLink;/*链表表头指针 */* 以下是函数声明 */void ReadInfoFormFile(void);void DesplayMenu(void);void CreateHeadLink(void);STUDENT *MallocNode(

34、void);void GetInformation(STUDENT *t);void OutputInformation(void);void DesplayInfoBystudentName(void);void DesplayOneNode(STUDENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber(void);void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);. 学习帮手 .专业整理

35、.void DesplayMarkSegment(void);void CompositorByTotalMark(void);int choose;/*用于接受用户的选择*/* 主函数 */int main(void)CreateHeadLink();ReadInfoFormFile();DesplayMenu();return 0;/*函数功能:从文件中读学生信息到链表中*/void ReadInfoFormFile(void)FILE *fp;STUDENT *p;fp=fopen(student.txt,r);if(!fp)printf(tt数据结构课程设计编制:丹白工作室ttn);p

36、rintf(ttt调试:丹白工作室ttn);printf(n);printf(ttt*学生成绩管理系统*ttn);printf(n);return;p=MallocNode();while(fscanf(fp,%s%s%s%f%f%f,p-studentNumber,p-studentName,p-className,&(p-mark1),&(p-mark2),&(p-mark3)0)InsertOneNode(p);p=MallocNode();fclose(fp);/*函数功能:显示菜单,根据用户的输入完成相应的功能*/void DesplayMenu(void). 学习帮手 .专业整理 .STUDENT *p;printf(tt-请选择相应功能 -nn);printf(ttt| 0输入相应学生信息 |n);printf(ttt| 1按班级输出学生成绩单|n);printf(ttt| 2按查询 |n);printf(ttt| 3增加学生 |n);printf(ttt| 4删除学生 |n);printf(ttt| 5按班级修改学生成绩|n);printf(ttt| 6按学期修改学生成绩|n);printf(ttt| 7保存所有学生信息 |n);printf(ttt

温馨提示

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

评论

0/150

提交评论