1、项目报告书项目名称:学生成绩管理系统设计 学生姓名: 学 号: 班 级: 指导教师: 日期 2012.6.21一、课程设计目的本课程设计让学生通过查询资料自学,将本学期课本上的理论知识和实践结合起来,为学生提供了一个既动手又动脑,亲身实践的机会。锻炼学生分析编程问题和解决问题的能力,提高学生查询错误,修改错误及实践编程的能力,使学生对C+系统编程有一个更深刻的了解。二、需求分析 本系统设计者力求根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。开发目的如下:能对成绩进行录入和修改;能计算每个学生的平均成绩以及各门功课的平均成绩;能根据学生的学号来查询该学生的成
2、绩;能删除该学生的记录;能根据每个学生的平均成绩对他们进行排序。三、课程设计的内容及步骤1设计说明(1)定义一个结构体,其中的成员如下:序号成员名(字段名)数据类型长度字段含义11Numlong学号2strNamechar姓名3chSexchar性别4iScore4int第一门课程成绩5iScore4int第二门课程成绩6iScore4int第三门课程成绩7iScore4int3门课程的平均成绩8NUMvoid人数定义(2)定义多个函数以实现各个功能:1)主函数main():定义学生结构体数组,调用输入、统计等函数对成绩表进行处理;2)自定义函数UserScreen():用户主选择界面;3)自
3、定义函数Bell():输入错误提示;4)输入函数ReadDate ():输入一个学生的信息;5)二级菜单函数FunctionSelection ():日常事务处理功能选择;6)统计函数ScoreStatistic():统计各个分数段人数; 7)排序函数ScoreSort():对选定课程排序; 8)输出函数PrintMessage():输出选定学生的信息;(3)预先录入的数据如下表:INumstrNamechSex123iScore4学号姓名性别第一门成绩第二门成绩第三门成绩三门课程的平均成绩2005001男839187872005002女 90 87 94902005003 女 89 892.
4、程序流程图3部分程序及其说明:Fwrite():文件输出函数Fread():文件读取函数Atol():格式化函数4源程序/* 班级: 姓名: 学号:/*源文件 my.h*/#include #include typedef struct long 1Num; char strName20; char chSex; int iScore4;STUDENTINF;#define NUM 3/*函数原型声明*/int UserScreen(void);void Bell(void);void ReadData(STUDENTINF*);int FunctionSelection(void);void
5、 ScoreStatistic(STUDENTINF*,int*,int);void ScoreSort(STUDENTINF*,int);void PrintMessage(STUDENTINF*,int);/* main.c */#includemy.hint main(int argc,char*argv)STUDENTINF studNUM;FILE *fp;int i,j,iIndex,iSubIndex,iScoreCode;long 1NumSearch;char buffTmp10;int iScoreSeg5=0;doiIndex=UserScreen();system(cl
6、s);/clrscr();switch(iIndex)case 1:printf(开始输入: n);/*打开文件*/if(fp=fopen(Data.dat,w)=NULL)printf(文件打开错误,系统退出!);exit(1);for(i=0;iNUM;i+)ReadData(stud+i);fwrite(stud,sizeof(STUDENTINF),NUM,fp);fclose(fp);for(i=0;iNUM;i+)PrintfMessage(stud,i);getchar();break;case 2:if(fp=fopen(Data.dat,r+)=NULL)printf(文件打
7、开错误,系统退出!);exit(1);printf(请输入需要修改数据的学号:);gets(buffTmp);1NumSearch=atol(buffTmp);for(i=0;iNUM;i+)if(1NumSearch=studi.1Num)break;if(i=NUM)ReadData(stud+i);elseprintf(无此学号);fwrite(stud,sizeof(STUDENTINF),NUM,fp);fclose(fp);for(i=0;i0&iScoreCode3)printf(第%d门课的成绩各分数段的人数: n,iScoreCode+1);printf(90分以上的人数:
8、t%-5dn,iScoreSeg0); printf(80分到89分人数: t%-5dn,iScoreSeg1); printf(70分到79分人数: t%-5dn,iScoreSeg2); printf(60分到69分人数: t%-5dn,iScoreSeg3); printf(不及格人数: t%-5dn,iScoreSeg4);elseprintf(平均成绩各分数段的人数: n);printf(90分以上的人数: t%-5dn,iScoreSeg0); printf(80分到89分人数: t%-5dn,iScoreSeg1); printf(70分到79分人数: t%-5dn,iScore
9、Seg2); printf(60分到69分人数: t%-5dn,iScoreSeg3); printf(不及格人数: t%-5dn,iScoreSeg4);break;case 2:/*对所选课程排序*/printf(输入需要排序的课程,1、2、3分别为三门课程,4是平均分数n);gets(buffTmp);iScoreCode=atoi(buffTmp)-1;ScoreSort(stud,iScoreCode);for(i=0;iNUM;i+)PrintfMessage(stud,i);break;case 3:/*对输入学号查询*/printf(输入需要查找的学号(范围2005001200
10、500%d:,NUM);gets(buffTmp); 1NumSearch=atol(buffTmp);for(i=0;iNUM;i+)if(1NumSearch=studi.1Num)break;if(i4|ch04|ch01Num=atol(strTmp);printf(请输入姓名:);gets(p-strName);printf(请输入性别,m(男)/f(女):);dogets(strTmp);p-chSex=strTmp0;if(strTmp0!=f&strTmp0!=m)Bell();while(strTmp0!=f&strTmp0!=m);for(i=0;iiScorei=atoi
11、(strTmp);sum+=p-iScorei;p-iScore3=sum/3;/*-/ 函数名: FunctionSelection/ 作用:事务处理功能选择/ 参数: 无/ 返回值:用户选择数据,整型,范围13/-*/ int FunctionSelection(void)char ch3;/ clrscr();dosystem(cls);printf(1:统计各个分数段的人数n);printf(2:对所选课程排序n);printf(3:输入学号后查找n);printf(Please Selection:);gets(ch);if(ch03|ch03|ch01);/*-/ 函数名: Sco
12、reStatistic/ 作用:统计各个分数段人数/ 参数: pStu,指向STUDDENTINF的指针,传递成绩结构的首地址/ pScore,指向整型的指针,传递各个分数数组的首地址/ iSelCore,整型,传递所选课程/ 返回值:无/-*/ void ScoreStatistic(STUDENTINF*pStu,int*pScore,int iSelScore)int i;for(i=0;iNUM;i+)pScorei=0;for(i=0;iiScoreiSelScore=90)pScore0+;else if(pStu+i)-iScoreiSelScore=80)pScore1+; e
13、lse if(pStu+i)-iScoreiSelScore=70) pScore2+; else if(pStu+i)-iScoreiSelScore=60) pScore3+;elsepScore4+;/*-/ 函数名: ScoreSort/ 作用:对选定课程排序/ 参数: pStu,指向STUDDENTINF的指针,传递成绩结构的首地址 / iSelCore,整型,传递所选课程/ 返回值:无/-*/ void ScoreSort(STUDENTINF*pStu,int iSelScore)int i,j;STUDENTINF Temp; for(i=0;iNUM-1;i+)for(j=i
14、+1;jiScoreiSelScoreiScoreiSelScore)Temp=*(pStu+i);*(pStu+i)=*(pStu+j);*(pStu+j)=Temp;/*-/ 函数名: PrintMessage/ 作用: 输出选定学生的信息/ 参数: pStu,指向STUDDENTINF的指针,传递成绩结构的首地址 / iSel,整型,选定的学生在结构数组中的位置/ 返回值: 无/-*/ void PrintMessage(STUDENTINF *pStu,int iSel)printf(学号:%-8d 姓名: %-8s 性别: %-2c 三门课程成绩: %-4d %-4d %-4d 平均
15、成绩:%-4dn,(pStu+iSel)-1Num,(pStu+iSel)-strName,(pStu+iSel)-chSex,(pStu+iSel)-iScore0,(pStu+iSel)-iScore1,(pStu+iSel)-iScore2,(pStu+iSel)-iScore3);5.调试结果四、课程设计总结 此次学生成绩管理系统的设计,让我对C+程序设计有了更深的了解,对系统设计及开发有了比较清晰全面的思路。要想编出一个完整的、优秀的程序,首先,需要对系统进行需求分析,确定各个功能函数;然后具体地对他们进行编程,并且仔细查看是否有错;其后开始构造主函数,通过主函数把各个功能函数联系起
16、来,然后编译,修改错误和不足之处 在实际编程过程中会遇到很多不同的错误,有时候是一些很明显的语法错误,这些错误可以通过编译来查找,然而有些是并不明显的隐性错误,只好利用断点调试来检查代码中的错误,有时为了一个错误花费了大量的时间,所以我们需要耐心,这样才能编出更完整的程序。同时我翻阅了大量的书籍,从中得到了很多有价值的经验。 总之,此次系统设计给我们提供了一个既动手又动脑、自学、独立实践的机会,使我们养成了勤翻阅各种相关资料的习惯,将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际、实践编程的能力,为今后的学习和实践打下了良好的基础。五、参考文献1康丽.
17、C+面向对象程序设计简明教程【M】.北京:中国电力出版社,2008. 2陈维兴。C+面向对象程序设计习题解析与上机指导【M】北京:清华大学出版社.3谭浩强. C程序设计(第三版)【M】 北京:清华大学出版社,2005. 4吕凤煮. C+语言基础教程 北京:清华大学出版社. 5石志国.C+程序设计教程【M】。北京:清华大学出版社,2005. 个人工作业务总结本人于2009年7月进入新疆中正鑫磊地矿技术服务有限公司(前身为“西安中正矿业信息咨询有限公司”),主要从事测量技术工作,至今已有三年。在这宝贵的三年时间里,我边工作、边学习测绘相专业书籍,遇到不懂得问题积极的请教工程师们,在他们耐心的教授和
18、指导下,我的专业知识水平得到了很到的提高,并在实地测量工作中加以运用、总结,不断的提高自己的专业技术水平。同时积极的参与技术培训学习,加速自身知识的不断更新和自身素质的提高。努力使自己成为一名合格的测绘技术人员。在这三年中,在公司各领导及同事的帮助带领下,按照岗位职责要求和行为规范,努力做好本职工作,认真完成了领导所交给的各项工作,在思想觉悟及工作能力方面有了很大的提高。 在思想上积极向上,能够认真贯彻党的基本方针政策,积极学习政治理论,坚持四项基本原则,遵纪守法,爱岗敬业,具有强烈的责任感和事业心。积极主动学习专业知识,工作态度端正,认真负责,具有良好的思想政治素质、思想品质和职业道德。 在
19、工作态度方面,勤奋敬业,热爱本职工作,能够正确认真的对待每一项工作,能够主动寻找自己的不足并及时学习补充,始终保持严谨认真的工作态度和一丝不苟的工作作风。 在公司领导的关怀以及同事们的支持和帮助下,我迅速的完成了职业角色的转变。一、回顾这四年来的职业生涯,我主要做了以下工作:1、参与了新疆库车县新疆库车县胡同布拉克石灰岩矿的野外测绘和放线工作、点之记的编写工作、1:2000地形地质图修测、1:1000勘探剖面测量、测绘内业资料的编写工作,提交成果新疆库车县胡同布拉克石灰岩矿普查报告已通过评审。2、参与了库车县城北水厂建设项目用地压覆矿产资源评估项目的室内地质资料编写工作,提交成果为库车县城北水
20、厂建设项目用地压覆矿产资源评估报告,现已通过评审。3、参与了新疆库车县巴西克其克盐矿普查项目的野外地质勘查工作,参与项目包括:1:2000地质测图、1:1000勘查线剖面测量、测绘内业资料的编写工作;最终提交的新疆库车县康村盐矿普查报告已通过评审。4、参与了新疆哈密市南坡子泉金矿2009年度矿山储量监测工作,项目包括:野外地质测量与室内地质资料的编写,提交成果为新疆哈密市南坡子泉金矿2009年度矿山储量年报,现已通过评审。6、参与了新疆博乐市五台石灰岩矿9号矿区勘探项目的野外地质勘查工作,项目包括:1:2000地质测图、1:1000勘探剖面测量、测绘内业资料的编写工作,并绘制相应图件。7、参与
21、了新疆博乐市托特克斜花岗岩矿详查报告项目的野外地质勘查工作,项目包括:1:2000地质测图、1:1000勘探剖面测量、测绘内业资料的编写工作,并绘制相应图件。通过以上的这些工作,我学习并具备了以下工作能力: 1、通过实习,对测绘这门学科的研究内容及实际意义有了系统的认识。加深对测量学基本理论的理解,能够用有关理论指导作业实践,做到理论与实践相统一,提高分析问题、解决问题的能力,从而对测量学的基本内容得到一次实际应用,使所学知识进一步巩固、深化。2、熟悉了三、四等控制测量的作业程序及施测方法,并掌握了全站仪、静态GPS、RTK等测量仪器的工作原理和操作方法。3、掌握了GPS控制测量内业解算软件(
22、南方测绘 Gps数据处理)以及内业成图软件(南方cass)的操作应用。能够将外业测量的数据导入软件进行地形图成图和处理。4、在项目技术负责的指导下熟悉了测量技术总结的编写要求和方法,并参与了部分项目测量技术总结章节的编写工作。5、在项目负责的领导下参与整个测量项目的组织运作,对项目的实施过程有了深刻理解。通过在项目组的实习锻炼了自己的组织协调能力,为以后的工作打下了坚实基础。二、工作中尚存在的问题 从事测绘工作以来,深深感受到工作的繁忙、责任的重大,也因此没能全方位地进行系统地学习实践,主要表现为没有足够的经验,对于地形复杂的地段理解不够深刻;理论知识掌握不够系统,实践能力尚为有限。以上问题,在今后工作中自己将努力做到更好。三、今后的工作打算 通过总结四年来的工作,我无论从工作技术上,还是从世界观、人生观、价值观等各个方面,都有了很大的提高。今后,我会在此基础上,刻苦钻研,再接再厉,使自己在业务知识水平更上一层楼,为测绘事业的发展,贡献自己的力量。