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

下载本文档

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

文档简介

1、c+课程设计-学生成绩管理系统设计报告徐 州 师 范 大 学 科 文 学 院本 科 生 课 程 设 计课 程 名 称: 计算机程序设计 c+ 题 目: 学生信息管理系统 专 业 班 级: 电子信息工程 学 生 姓 名: 学 生 学 号:日 期: 2010-12-20 指 导 教 师:科文学院教务部印制一、课程设计目的、任务和内容要求:(1) 使学生掌握 c+编程的基本工作原理;(2) 培养学生基本掌握 c+应用编程的基本思路和方法;(3) 使学生掌握 c+应用调试的基本技能;(4) 培养学生分析、解决问题的能力;(5) 提高学生的科技论文写作能力任务如下:1 (进行需求分析和概要设计,给出流程

2、图。2 (写出详细设计,熟悉其中采用的关键技术。3 (给出具体的编码实现并调试。4 (写课程设计报告提交源程序。内容要求:设计并完成软件系统。要求:1 (应具有简洁友好的用户界面。2 (要求软件系统的功能完整。3 (要求程序具备正确性,可读性和运行的高效性。ii二、进度安排:第,2 天: 查找资料,进行需求分析和概要设计;第 25 天: 各模块的详细设计;第 510 天: 软件实现与调试;第 1014 天:写课程设计报告并提交源程序。三、主要参考文献:1. 刘觉夫 王更生等编著c+程序设计,北京邮电大学出版社2. 曾辉 王更生 李广丽等编著c+程序设计实训教程,北京邮电大学出版 社 3. 谭浩

3、强编著c+面向对象程序设计,北京清华大学出版社4. 百度文库(寻找 c+课程设计的模版及简易源代码)指导教师签字:年 月 日 iii徐州师范大学物理与电子工程学院课程设计报告摘要 . 5abstract . 61 概述 . 71.1 功能需求分析: . 71.11 学生成绩的读入和写出模块 . 71.12 学生成绩输入删除模块 . 71.13 学生成绩的查询模块 . 71.14 学生成绩的分类汇总模块 . 71.2 环境需求分析 . 71.3 方法需求分析 . 7 2 设计方案简述 . 82.1 系统功能模块图 . 82.2 设计思想: . 8 3 详细设计 . 93.1 设计原理 . 93.

4、2 程序详细代码描述 . 93.3 系统界面 . 214 设计结果及分析 . 224.1 调试过程 . 224.2 操作说明 . 23总结 . 24参考文献 . 254徐州师范大学物理与电子工程学院课程设计报告摘要随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,不仅在工业方面而且在日常生活中也越来越离不开计算机。尤其是在学校里,要处理大量的学生数据。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.作为计算机应用的一部分,使用计算机对学生 成绩信息进行管理,有着手

5、工管理所无法比拟的优点。学生成绩管理系统能方便用户迅速、准确处理学生的成绩,得到想要的数据并能将学生的信息以文档保存。本文介绍了简易学生成绩管理系统在 microsoftvisual c+ 6.0 环境下的实现过程:系统的分析,功能模块的设计,系统的调试和测试。此系统的主要管理的信息有:学生的班级,学号,姓名和三(可以更改)门课的成绩。本系统的主要功能有学生成绩的添加、删除、插入、显示,能对学生成绩按分数或学号进行排序,可以根据用户的要求按班级,姓名,学号查询学生的成绩信息,计算每位学生的总分,分类汇总统计每门课的的总分均分能保存信息到文件 以及从文件中读取信息等功能。关键词:学生成绩管理系统

6、;功能模块(函数);指针;结构;链表;文件保存及读取 5徐州师范大学物理与电子工程学院课程设计报告abstractwith the development of science and technology, computer field hasmade new research achievements. computer in replacing and extension ofmental work plays more and more important role, not only in theindustrial sector and in daily life, also mo

7、re and more inseparable fromthe computer. especially in the school, to deal with large numbers ofstudents data. along with the science and technology unceasingenhancement, the computer science is mature day after day, itsformidable function hadprofoundly known for the people, it entered thehuman soc

8、iety eachdomain and plays a more and more important role. as apart of computer application, use the computer to students performance information management, with crafts incomparable advantages.students performance management system can convenient user fast,accurate processing students scores, the de

9、sired data and studentsinformation according to the document preservation. this paperintroduces the simple student performance management system in microsoftvisual c + + 6.0 environment of realization process: system analysis,function module design, system commissioning and testing. the systemsmain

10、management information are: student class, student id, name andthree (can change) course grades. the systems main function of thestudents grade add, delete, insert, display, can according to thegrades of student achievement or student id sorting, can according tothe users requirements according to c

11、lass, name, student id inquiresthe student performance information, calculate each students totalscore, collect classified per course total score alike can storeinformation from the document to the file and read information, and other functions.keywords:students performance management system; functi

12、on module (function);pointers;structure;list;file save and load6徐州师范大学物理与电子工程学院课程设计报告1 概述此系统的主要管理的信息有:学生的班级,学号,姓名和三(可以更改)门课的成绩。本系统的主要功能有学生成绩的添加、删除、插入、显示,能对学生成绩按分数或学号进行排序,可以根据用户的要求按班级,姓名,学号查询学生的成绩信息,计算每位学生的总分,分类汇总统计每门课的的总分均分能保存信息到文件以 及从文件中读取信息等功能。1.1 功能需求分析:简易学生成绩管理系统主要有 4 个大的模块:学生成绩从文件读入和写入,学生成绩的输入和

13、删除,学生成绩信息的查询,以及学生成绩的分类汇总。 1.11 学 生成绩的读入和写出模块主要功能是读出要管理的成绩文档,保存修改后的成绩文档。实际生活中学生成绩的文件主要以 word 或 excel 保存,为了方便操作我在调式本系统中成绩文件采用了 txt 的文档格式保存,当然以 word 文档形式保存也是可以的。 1.12 学生 成绩输入删除模块主要功能是输入、追加、删除学生成绩的操作。添加操作是根据用户的要求实现的。例如用户可以输入要删除学生的学号删除学生的信息。 1.13 学生成绩的查 询模块主要功能是按照用户的要求查询学生的成绩。其中用户可以选择查询单个学生的成绩还是某个班级的成绩,成

14、绩查询中包括个人学生的总分,。 1.14 学生成绩 的分类汇总模块统计主要功能是某个班级的每门学科的总分。1.2 环境需求分析操作系统: windows xp开发软件: visual c+ 6.01.3 方法需求分析由于数组存放数据的时候要先确定数组的规模,不能动态的分配内存空间,而单链表是非连续存放的,可以对内存空间进行动态分配,此系统是用单链表完成 的。然后定义链表的结点类型为结构就可以实现对学生学号、姓名、成绩、班级等 7徐州师范大学物理与电子工程学院课程设计报告学保存。2 设计方案简述2.1 系统功能模块图学 生 成 绩 管 理 系 统链输删显按保读计学按分表入除示姓存取算生学类的学学

15、学名学学总成号合初生生生找生生绩查分 计始成成成学成成排成绩 绩 绩 序 化 绩 绩 生 绩2.2 设计思想:学生成绩管理系统是用面向对象的方法设计,由于数组的存放是连续的,而单链表是非连续存放的,是动态分配内存空间,因此此系统采用单链表来完成。各个 功能模块的实现主要转变到对单链表的遍历,添加和删除结点。8徐州师范大学物理与电子工程学院课程设计报告3 详细设计3.1 设计原理学生成绩管理系统以菜单选择,通过调用各个函数,对单链表的遍历,实现不同的功能,不同函数处理后返回的只是一个头结点,但是通过头结点可以找到所有链表中的信息,只要有函数,找到头指针就能进行相应的操作,所以模块化的程序方便以后

16、添加或者删除某些功能,程序中通过 system(“cls”)清屏函数实现界面的转换,主函数中的循环保证程序不会退出,一个循环和一个清屏函数实现了主菜单和各子画面的切换(子函数)。这样的话各个子函数都可以调用一开始输入的数据,这样就实现了各个不同函数调用时都能使用整个系统连续起来了。作为一个学 生成绩管理系统,增加了文件的读入和写出功能,增加了程序的实用性。3.2 程序详细代码描述#include#include#include#includeusing namespace std;#define max 100;class student public:student *next;public

17、:string name;/姓名long num;/学号int x,y,z;int aa;/总分void play()coutname学生的学号是num,c+:x,微机原 理:y,数字信号处理:z,总分:aanext; delete stu; stu=p;stu=0;void sadd(); /添加void sremove(); /删除 void samend(); /修改 void ssearch(); /查询 void staxis(); /排序void ssave(); /保存void sload(); /读取/排序函数void pxh(); void psx(); void pyw()

18、; void pyy(); void paa(); private: student *stu; /头接点 ;void cla:sadd()/添加 student *q; string name1; long num1; int x1,y1,z1; system(cls); coutn *增加的学生* nendl;cout请输入学生的(中间用空格间隔) endl;10徐州师范大学物理与电子工程学院课程设计报告cout姓名 学号 c+ 微机原理 数字信号处理:name1num1x1y1z1;q=new student(name1,num1,x1,y1,z1);q-next=0;q-aa=x1+y

19、1+z1; if(stu) student *t;t=stu;if(t-num=num1) cout学号已存在,请重新输入next) if(t-num=num1) cout学号已存在,请重新输入 next; t-next=q; else stu=q; cout输入完毕endl; void cla:sremove()/删除system(cls);int num1;coutn* 删除学生信息 *n; coutnum1;/查找要删除的结点student *p1,*p2; p1=stu;while(p1)if(p1-num=num1) break;elsep2=p1;p1=p1-next;/删除结点i

20、f(p1!=null)/若找到结点,则删除 11徐州师范大学物理与电子工程学院课程设计报告p1-play();cout确定删除吗?y/nc; if(toupper(c)!=y) return;if(p1=stu) /若要删除的结点是第一个结点stu=p1-next;delete p1;else /若要删除的结点是后续结点p2-next=p1-next;delete p1;cout找到学号为num1的学生,并删除n; else /未找到结点cout未找到想要删除的学生!n; void cla:samend()/修改 system(cls);long num1;coutn* 修改学生信息 *n;c

21、outnum1;/查找要修改的结点student *p1,*p2;p1=stu;while(p1) if(p1-num=num1)break;else p2=p1;p1=p1-next; if(p1!=null) cout学号是num1的学生的信息endl; cout姓名 namec+x微机原理y数字信号处理zendl;cout请输入修改后的信息:姓名 c+成绩 微机原理成绩 数字信号处理成绩 p1-namep1-xp1-yp1-z;p1-aa=p1-x+p1-y+p1-z; cout修改成功endl;12徐州师范大学物理与电子工程学院课程设计报告else /未找到接点cout未找到!n;vo

22、id cla:ssearch()/查询system(cls); coutn* 查询学生信息 *nendl;cout请输入查询方式:endl; cout1.按学号查询endl; cout2.按姓名查询endl; cout3.返回c; switch (c) case 1: long num1;cout要查询的学号num1;/查找要查询的结点student *p1,*p2; p1=stu;while(p1)if(p1-num=num1) break;else p2=p1;p1=p1-next; if(p1!=null) cout学号是num1的学生的信息endl;cout姓名:name c+:x 微

23、机原理:y 数字 信号处理:zendl; cout查询完毕.; else /未找到接点 cout未找到!n;break; case 2: string name1;cout要查询的学生姓名name1;/查找要查询的结点student *p1,*p2; p1=stu;13徐州师范大学物理与电子工程学院课程设计报告while(p1) if(p1-name=name1) break;else p2=p1;p1=p1-next; if(p1!=null)coutname1的学生的信息endl; cout学号:num c+:x 微机原理:y 数字信号处理:zendl; cout查询完毕.;else /未

24、找到接点coutnext) n+; p1=p1-next; cout共有n条信 息.endl; int i;p1=stu;for(i=1;inump1-next-num) / 如果头结点大于第二个的p2=p1-next;p1-next=p1-next-next;p2-next=p1; /头结点交换stu=p2;p1=stu;while(p1-next-next) /中间的交换14徐州师范大学物理与电子工程学院课程设计报告p2=p1;p1=p1-next;if(p1-nump1-next-num) p2-next=p1-next; p1-next=p1-next-next; p2-next-ne

25、xt=p1;p1=p2-next; /交换p1=stu;dop1-play();p1=p1-next;while(p1);void cla:psx()student *p1,*p2;int n;p1=stu;n=1;while(p1-next) n+; p1=p1-next; cout共有n条信息.endl; int i; p1=stu;for(i=1;ixp1-next-x) / 如果头结点大于第二个的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /头结点交换stu=p2;p1=stu;while(p1-next-next) /中间的交换 p2

26、=p1;p1=p1-next;if(p1-xp1-next-x) p2-next=p1-next;15徐州师范大学物理与电子工程学院课程设计报告p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交换 p1=stu;do p1-play();p1=p1-next;while(p1);void cla:pyw()student *p1,*p2;int n;p1=stu;n=1;while(p1-next) n+; p1=p1-next; cout共有n条信息.endl; int i; p1=stu;for(i=1;iyp1-next-y) /

27、如果头结点大于第二个的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /头结点交换stu=p2;p1=stu;while(p1-next-next) /中间的交换 p2=p1;p1=p1-next;if(p1-yp1-next-y) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1;p1=p2-next; /交换16徐州师范大学物理与电子工程学院课程设计报告p1=stu;do p1-play();p1=p1-next;while(p1);void cla:pyy()student *p1,

28、*p2; int n;p1=stu;n=1;while(p1-next) n+; p1=p1-next; cout共有n条信 息.endl; int i;p1=stu;for(i=1;izp1-next-z) / 如果头结点大于第二个的 p2=p1-next; p1-next=p1-next-next;p2-next=p1; /头结点交换stu=p2;p1=stu;while(p1-next-next) /中间的交换 p2=p1;p1=p1-next;if(p1-zp1-next-z) p2-next=p1-next; p1-next=p1-next-next;p2-next-next=p1;

29、 p1=p2-next; /交换p1=stu;do p1-play();p1=p1-next;while(p1);17徐州师范大学物理与电子工程学院课程设计报告void cla:paa()/按总分排序student *p1,*p2;int n;p1=stu;n=1;while(p1-next) n+; p1=p1-next; cout共有n条信息.endl; int i; p1=stu;for(i=1;iaap1-next-aa) / 如果头结点大于第二个的 p2=p1-next;p1-next=p1-next-next; p2-next=p1; /头结点交换stu=p2;p1=stu;whi

30、le(p1-next-next) /中间的交换 p2=p1;p1=p1-next;if(p1-aap1-next-aa) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1;p1=p2-next; /交换p1=stu;do p1-play();p1=p1-next;while(p1);void cla:staxis()/排序system(cls);char c;cout请选择以何种方式排序:endl; cout1以学号排序endl;18徐州师范大学物理与电子工程学院课程设计报告cout2以 c+成绩排序endl; cout3以微机原理成

31、绩排序endl;cout4以数字信号处理成绩排序endl; cout5以总分排序endl; cout6返回endl;cout请选择(1-6)c;switch (c)case 1:pxh(); break; case 2:psx(); break; case 3:pyw(); break; case 4:pyy(); break; case 5:paa(); break; case 6:return;void cla:ssave() /保存到文件system(cls);char c;coutc; if(toupper(c)!=y) return;ofstream tfile(date.txt,i

32、os_base:binary);student *p=stu;while(p)/ 写入文件tfilenametnumtxtytz;tfilenext;tfile.close();cout保存完毕.next;delete p;p=stu;19徐州师范大学物理与电子工程学院课程设计报告ifstream tfile(date.txt,ios_base:binary);string name1;long num1;int x1,y1,z1;tfilename1num1x1y1z1;while(tfile.good() /创建学生接点student *s;s=stu;s=new student(name

33、1,num1,x1,y1,z1);s-next=0;s-aa=x1+y1+z1;if(stu) /若已经存在结点student *p2;p2=stu;while(p2-next) /查找尾结点p2=p2-next;p2-next=s; /连接else /若不存在结点(表空)stu=s; /连接tfilename1num1x1y1z1;tfile.close();coutn 学生信息已经装入.n; void main()char c;cla a;docoutn 学 生 成 绩 管 理 系 统 n;cout*n;cout 作者:08 电信 吴龙 n; cout 1增加学生 n;cout 2删除学生

34、 n;20徐州师范大学物理与电子工程学院课程设计报告cout 3修改学生 n;cout 4查询学生信息 n;cout 5排序 n;cout 6保存信息 n;cout 7读取信息 n;cout 8退出 n;cout*n;coutc;switch(c)case 1: a.sadd();break; case 2: a.sremove();break; case 3:a.samend();break; case 4: a.ssearch();break; case 5:a.staxis();break; case 6: a.ssave();break; case 7: a.sload();break

35、; while(c!=8);3.3 系统界面系统主菜单列出了该程序的所有功能,学生个人的总分在输入创建链表是就计算好并储存好了,同时显示学生信息是就一起显示出来了,使用时该适当的使用第一个初始化链表的功能,否则可能出现意想不到的错误。 初始界面图 01:21徐州师范大学物理与电子工程学院课程设计报告 4 设计结果及分析 4.1 调试过程增加学生修改信息查询方式排序方式22徐州师范大学物理与电子工程学院课程设计报告保存信息4.2 操作说明一个成绩管理系统如果不能进行文档的读出和写入的操作,功能再多,程序关闭后,所做的操作都将没有,这就失去了实际的意义。此系统当用户退出系统时,用户可以选择是否保存

36、已做的修改。当用户任意选择一个操作时,系统将会提示。此外在输入成绩时,输入错误的数字系统可以提示错误,但是如果输入标点和字母时,系统将会出错,因此输入成绩时不可以输入字母和标点。此外,注意适当的使用链表初始化,防止出现意外错误,例如,一开始不初始化就显示学生信息,由于链表还未创建,会出现内存不能为 read 的错误。提示是否返回主菜单,如果不返 回则自动提示退出系统,选择是的话返回主菜单。23徐州师范大学物理与电子工程学院课程设计报告总 结一开始知道课题后,以为很简单,但我想如果用数组实现的话,在内存中是以连续地址存放的,不方便操作,所以我选择了使用链表,它可以实现无序的在内存中存放,只要有一个头结点,就可以对整个链表进行相关的操作,在调式时遇到了很多问题,最多的是指针问题引起的内存不能为 read,因此指针这一块知识还得好好的加强,当我将学生成绩管理系统的程序调试完毕后,心里感到轻松了许多,但还是对自己的程序不最满意,因为有时还是会出现内存不能 read。我现在体会到程序的调试是相当的重要的。在使用指针时要特别注意用过后的指针不使用就要 删除,已防出错。链表的尾部要指向

温馨提示

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

评论

0/150

提交评论