ImageVerifierCode 换一换
格式:DOC , 页数:30 ,大小:271.50KB ,
资源ID:9284794      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9284794.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(C--学生成绩管理系统.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C--学生成绩管理系统.doc

1、 课程设计(论文) 编 号: 学 号: 201040420120 课 程 设 计 教 学 院 计算机 课程名称 高级语言程序设计Ⅱ 题 目 学生成绩管理系统 专 业 网络工程 班 级 1班 姓 名 曹彦 同组人员 唐舸轩、蔡敏、黄伴、程良康、张雄峰 指导教师 谢晋 2013 年 1 月 7 日 目 录 一 概述 2 1. 课程设计的目 2 2. 课程设计的要求 2

2、 二 总体方案设计 3 三 详细设计 4 3.1 程序功能描述 4 3.2 程序流程图 4 四 程序的调试与运行结果说明 5 4.1 程序源代码 5 4.2 调试并运行程序 18 五 课程设计总结 23 参考文献 24 一 概述 1. 课程设计的目的 1.理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养综合运用所学知识独立完成课题的能力。 3.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4.掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经

3、验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 2. 课程设计的要求 1.界面友好,函数功能要划分好 2.总体设计应画一流程图 3.程序要加必要的注释 4.要提供程序测试方案 5.程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行 的程序是没有价值的。二 总体方案设计 使用面向对象的程序设计方法,程序的功能主要包括:对学生成绩信息的增、删、查、改等基本功能,并能够按照学号或姓名及成绩等进行排序和筛选,使用文件进行数据的存储和维护,能够按照班级或专业进行分类的管理。 程序中使用了双向链表保存数据的底层数据结构,实现起来很简单。C++推荐使用标准库,

4、这也是目前编程的方向,推荐此题目为本课程设计作为选做内容,可以根据实际教学情况决定,目的是使学生熟悉和了解C++的标准库。 本人负责部分: 1.删除一个学生的成绩记录:通过两个结点指针的使用来实现结点的删除,这两个指针分别是pNodepre,pNodeTal,其中pNodepre指针指向前一个结点,pNodeTal指针指向紧接的后一个结点,其中以pNodeTal指向的结点为基准进行比较,刚开始这两个结点分别指向第一个空结点和第一个实结点,若不满足姓名匹配,则两个指针同时向后移动一个单位,知道找到要删除的结点为止,当删除的结点是第一个实结点时,利用语句m_head->next = pNode

5、Tal->next实现,若是最后一个结点用pNodepre->next = NULL语句实现,否则用pNodepre->next = pNodeTal->next语句实现。 2.计算学生成绩总和:每输入一个同学的一科成绩时,程序将这科成绩自动加到totalmark中,直到第五科成绩。 三 详细设计 3.1 程序功能描述 该程序完成的功能如下: 输入学生信息,由addstudent()函数完成 在查找学生信息时按名字查找,由searchbyname()函数完成 将学生成绩信息保存到指定路径的文档中,由save()函数完成 根据学生总成绩按降序排序,,由sortbymark

6、)函数完成 根据学生姓名删除想要删除的学生信息,由Delete()函数完成 可根据姓名更改学生信息,由Change()函数完成 将文件信息保存到链表中,由readfiletolist()函数完成 添加学生信息,由addstudent()函数完成 从文件读取信息,由display()函数完成 10、显示学生信息,由show()函数完成 3.2 程序流程图 程序流程图如下: 保存学生信息在文件中并读取 可实现的功能 根据姓名查找学生信息 保存文件信息到链表中 根据姓名删除学生信息 计算总成绩并按此排序 输入学生信息 根据姓名修改学生信息

7、四 程序的调试与运行结果说明 4.1 程序源代码 完整的程序如下: #include "stdafx.h" #include "Student.h" #include #include #include #include using namespace std; enum {SUBJECT=5};//一共五门功课 typedef struct { char subject[10];//科目名称 int score;//科目成绩 }markinfo; typedef struc

8、t studentnode { markinfo mark[SUBJECT]; int totalmark; char name[10];//学生姓名 studentnode * next; }studentnode; class CStudent { public: CStudent(); virtual ~CStudent(); int addstudent(); int countmark(); int sortbymark(); int save(); int show(); int display(); int

9、 readfiletolist(); int searchbyname(); int Delete(); int Change(); private: studentnode *m_head; }; CStudent::CStudent() { m_head = new studentnode; m_head->next = NULL; } CStudent::~CStudent() { studentnode *pHead,*pTail; pHead=m_head->next; while(pHead) { pTai

10、l=pHead->next; delete pHead; pHead=pTail; } delete m_head; } //输入学生姓名,成绩等数据,并保存在链表中 int CStudent::addstudent() { studentnode *pStuNode; int nCount; char check; system("cls"); cout<<"**********************"<

11、entnode; cin.ignore(); cout<<"姓名:"; gets(pStuNode->name); nCount=0; pStuNode->totalmark=0; do { cout<<"科目:"; gets(pStuNode->mark[nCount].subject); cout<<"成绩(0--100):"; do { cin>>pStuNode->mark[nCount].score; }while(pStuNode->mark[nCount].s

12、core > 100 || pStuNode->mark[nCount].score < 0); pStuNode->totalmark=pStuNode->totalmark+pStuNode->mark[nCount].score; getchar(); }while(SUBJECT != ++nCount); //头插法 if(m_head->next==NULL) { m_head->next=pStuNode; pStuNode->next=NULL; } else { pStuNo

13、de->next=m_head->next; m_head->next=pStuNode; } cout<<"继续添加?y or n :"; check=getchar(); }while(check!='n' &&check!='N'); return 0; } //计算每位学生的总成绩 int CStudent::countmark() { studentnode *pStuNode=m_head->next; if( pStuNode == NULL ) { cout<<"没有学生,请重新输入"<

14、system("pause"); return 0; } else { cout<<"***************"<name<<" 总成绩:"<totalmark<next; } } system("pause"); return 0; } //按照总成绩大小对成绩进行排序 int CS

15、tudent::sortbymark() { studentnode *pmove1=m_head->next; studentnode *pmove2,*pmax,*ppre1,*ppre2,*pmaxpre,*ps=pmove1; if(m_head->next==NULL) { cout<<"没有记录,请添加"<next; ppre1=

16、pmove1,pmaxpre=ppre1,pmove1=pmove1->next,pmax=pmove1) { ppre2=pmove1; pmove2=pmove1->next; //排序 : pmaxpre指向最大值的前一个元素 pmax总是指向总成绩最大的元素 ppre2总是指向比较的第二个元素 //pmove1总是指向插入点的第一个元素 pmove2总是指向即将成为 第二个比较元素 的元素 for( ; NULL != pmove2; ) { if(pmove2->totalmark > pmax->totalmark)

17、 { pmaxpre=ppre2; pmax=pmove2; } ppre2=pmove2; pmove2=pmove2->next; } if(pmove1->next == pmax) //交换max和move1。 { ppre1->next=pmax; pmove1->next=pmax->next; pmax->next=pmove1; pmove1=pmax; } else { ps=pmove1->next; pmove1->next

18、 = pmax->next; pmax->next =ps; pmaxpre->next = pmove1; ppre1->next = pmax; pmove1 = pmax; } } cout<<"已经按照从大到小排序"<next; cout<

19、<"请输入保存的地址"<提示:无法打开这个文件!"<next; } fprintf(fp,"%d\n",nNum);

20、pNode=m_head->next; while(pNode) { fprintf(fp,"%-8s",pNode->name); nCount=0; while(SUBJECT != nCount) { fprintf(fp,"%-6s %-7.1d",pNode->mark[nCount].subject,pNode->mark[nCount].score); nCount++; } fprintf(fp,"\n"); pNode=pNode->next; } fclose(fp); cout<

21、<"已经保存,请查阅"<next; int nCount; if(m_head->next==NULL) { cout<<"没有学生记录,请添加"<n

22、ame; nCount = 1; while(SUBJECT+1 != nCount) { cout<<"科目:"<mark[nCount-1].subject; cout<<" 成绩:"<mark[nCount-1].score; nCount++; } cout<next; } } system("pause"); return 0; } //从文件中读取信息,并显示 int CStudent::display()

23、 { ifstream fin; char buf[100]; char str[25]; cout<<"请输入路径及文件名:"<

24、 return 0; } //从文件中读取数据,并保存在链表中 int CStudent::readfiletolist() { char str[25]; cout<<"请输入路径及文件名:"<

25、fscanf(fp,"%d",&nNum); for(int i = 0; itotalmark=0; fscanf(fp,"%s",pNode->name); int nCount=0; while(SUBJECT != nCount) { fscanf(fp,"%s%d",pNode->mark[nCount].subject,&pNode->mark[nCount].score); pNode->totalmark+=pNode->mar

26、k[nCount].score; nCount++; } if(NULL == m_head->next) { m_head->next=pNode; pNode->next=NULL; } else { pNode->next=m_head->next; m_head->next=pNode; } } cout<<"信息已经保存在链表中"<

27、 { if(m_head->next==NULL) { cout<<"没有学生,请添加或者从文件中读取"<next; char findname[10]; int i; cout<<"请输入姓名:"; cin.ignore(); gets(findname); while(p) { if(!strcmp(p->name,findname)) { cout<<"经查找,找到该生信息如下:"<<

28、endl<name; i=1; while(i!=SUBJECT+1) { cout<<"科目:"<mark[i-1].subject; cout<<" 成绩:"<mark[i-1].score; i++; } cout<next; } cout<<"没有此学生,请添加或者从文件中读取"<

29、 return 0; } //删除学生 int CStudent::Delete() { if(m_head->next==NULL) { cout<<"没有学生,请添加或者从文件中读取"<>szName; studentnode *pNodepre = m_head; studentnode *pNodeTal = m_head->next; while(NUL

30、L != pNodeTal) { if(!strcmp(pNodeTal->name,szName)) { if(pNodepre == m_head) { m_head->next = pNodeTal->next; delete pNodeTal; cout<<"删除成功!"<next) { pNodepre->next = NULL;

31、delete pNodeTal; cout<<"删除成功!"<next = pNodeTal->next; delete pNodeTal; cout<<"删除成功!"<next; } cou

32、t<<"没有此学生,请添加或者从文件中读取"<next==NULL) { cout<<"没有学生,请添加或者从文件中读取"<>szName; studentnode *pStuNode = m_head->next; i

33、nt sorce; while(NULL != pStuNode) { if(!strcmp(pStuNode->name,szName)) { int nCount = 0; nCount=0; pStuNode->totalmark=0; do { cout<<"科目:"; char szBuf[20]; cin>>szBuf; strcpy(pStuNode->mark[nCount].subject,szBuf); cout<<"成绩(0--100):";

34、 do { cin>>sorce; pStuNode->mark[nCount].score = sorce; }while(sorce > 100 || sorce < 0); pStuNode->totalmark=pStuNode->totalmark+pStuNode->mark[nCount].score; getchar(); }while(SUBJECT != ++nCount); cout<<"修改成功!"<

35、 return 0; } pStuNode = pStuNode->next; } cout<<"没有此学生,请添加或者从文件中读取"<

36、 { case 1:{stu.addstudent();break;} case 2:{stu.countmark();break;} case 3:{stu.sortbymark();break;} case 4:{stu.save();break;} case 5:{stu.show();break;} case 6:{stu.display();break;} case 7:{stu.readfiletolist();break;} case 8:{stu.searchbyname();break;} case 9:

37、{stu.Delete();break;} case 10:{stu.Change();break;} case 11:{flag=0;break;} } } return 0; } int showmenu() { int choice; char * menu[11]={ "1:输入学生成绩保存到链表\n", "2:计算每位学生总成绩\n", "3:按照总成绩大小对记录进行排序\n", "4:输出所有学生成绩到一个文件中\n", "5:显示新输入的学生信息\n", "6:从文件中读取信息\n", "7:将文件信息

38、保存在链表中\n", "8:根据姓名查找学生记录\n", "9:根据姓名删除学生记录\n", "10:根据姓名修改学生记录\n", "11:结束程序\n" }; cout<<" "<<"*****************************************************"<

39、choice<11;choice++) cout<<" "<>choice; } while(choice>11||choice<1); //???当输入不在0与10之间 return choice; } 4.2 调试并运行程序 结果依次如下所示 初始界面: 输入

40、学生信息 显示学生信息 计算学生总成绩 按总成绩排序 读入文件中 从文件显示 将信息保存在链表中 按姓名查找学生成绩 删除学生信息 修改学生信息 删除学生信息 退出程序 五 课程设计总结 在这次的课程设计当中,我觉得我对C++这门课的理论知识有了更进一步的理解,加强了我们动手、思考和解决问题的能力。巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过实际编译系统的分析设计、编程调试,掌握

41、应用软件的分析方法和工程设计方法。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。而且做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很能理解,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。 这次的课程设计使我懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的

42、能力。在整个设计过程中,构思是很花费时间的。调试时经常会遇到这样那样的错误,有的是因为粗心造成的语法错误。当然,很多也时用错了方法,总是实现不了。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。,我们类的分配不够详细,仅仅只自定义了一个学生类,我们本可以设计更完善的类分配与功能分配。其次,我们的接口讨论得也不够详细,我们应该做更详细的设计。最后,对于数据的存储我们只是选用了文件的形式,用文件进行存储更加的耗费事件与资源,我们还可以用数据库来代替。 通过本次课程设计,我学到了很多,明白编写程序是一个很严谨而需要恒心的东西。我们首先用的C++设计编程,遇

43、到了很多困难,初次运行达到了80余个错误,但是我们硬是一个一个改正,最终执行出来,但是由于才疏学浅在C++有一些函数没做出来,比如删除信息,大量移动数组,还有重载,但是我们查资料还是通过一点点的编写改正学到了很多东西,比如指针的运用,还有一些格式上的要求。后来,我们通过查阅很多资料用C语言实现了程序的大部分功能。 总之这次实验获得了很多知识,感觉很充实,也感觉做一个程序员真的很不易。 参考文献 [1] 谭浩强, C程序设计题解与上机指导(第二版),清华大学出版社,2000年9月。 [2] 陈维兴、林小茶,C++面向对象程序设计(第三版),清华大学出版社,2009年6月。 [3

44、] 严蔚敏、吴伟民,数据结构(C语言版),清华大学出版社,2010年7月。   高级语言程序设计Ⅱ课程设计成绩评定表 1、课程设计答辩或质疑记录 1) 2) 3) 2、答辩情况 a)未能完全理解题目,答辩情况较差 □ c)理解题目较清楚,问题回答基本正确 □ b)部分理解题目,答辩情况较差 □ d)理解题目透彻,问题回答流利 □ 3、课程设计报告 a)内容: 不完整 □ 完整 □

45、 详细 □ b)方案设计: 较 差 □ 合理 □ 非常合理 □ c)实现: 未实现 □ 部分实现 □ 全部实现 □ d)文档格式: 不规范 □ 基本规范 □ 规范 □ 考勤成绩: , 占总成绩比例10% 答辩成绩: , 占总成绩比例30% 课程设计论文成绩: , 占总成绩比例60% 课程设计总成绩: 4、课程设计评语 指导教师签字: 年 月 日 29

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服