您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言课程设计实习报告
长江大学工程技术学院C语言课程设计实习报告学生成绩管理系统学生姓名:潘志坤学号:201160139班类序号:14专业班级:应化61101指导老师:孟宪婷报告日期:2012年06月24日学生成绩信息管理系统设计第一部分课程设计的题目与要求1.问题的提出(1)用记事本新建一个文本文件(3)用主函数列一个主菜单并利用主菜单调用各个子菜单,通过各个函数来实现以下功能:○1读取学生成绩基本信息;○2姓名查询;○3性别查询;○4计算总成绩;○5按姓名排序;○6按总成绩排序;○7添加;○8按姓名删除;○9按学号删除;○10实现修改功能;○11计算学生的加权平均分。2.功能要求1)实现查询显示功能:○1按姓名查询;○2按性别查询;○3显示全部信息,将满足查询条件的学生信息显示在屏幕上。2)计算每位同学的总成绩,并重写在另一个文本文件中。3)实现排序功能:○1按姓名排序;○2按总成绩排序,将排序后的所以学生的信息显示在屏幕上。4)实现添加功能:录入新的学生信息数据。在录入新的学生信息前首先判断该学生的学号是否存在,如果不存在,则可进行数据录入并依次输入学生的相关信息;如果该学生的学号存在则提示不能进行添加操作。5)实现删除功能:○1按姓名删除○2按学号删除,先入学生的学号或姓名,若系统中有此学生的信息,则删除该学生的所有的信息;若无此学生的信息,则提示系统中无此学生信息。6)实现修改功能:先输入要修改的学生学号,如果该学生存在,则根据需要修改学生的相关信息;若该学生不存在,则提示系统中无此学生信息。7)计算每个学生的加权平均分(英语的学分为5,数学的学分为4,C语言的学分为4.5,物理的学分为3)加权平均分的小数为保留两位。按加权平均分原始数据文件分成2个,分别为:加权平均分在分加权平均分在分以下的其中,这2个文件中的内容为:学号姓名英语数学C语言物理总成绩加权平均分20100010赵鹏9878726520100011刘季红78827167第二部分课程设计题目功能1.系统功能模块框图设计系统功能主菜单查询和显示排序添加删除修改1读取学生信息2按姓名查询3按姓名查询4按总成绩排序5按学生成绩排序6添加学生成绩信息7按姓名删除8按学号删除按学生成绩修改进入界面学生成绩信息数据读入总成绩计算学生总成绩2.数据结构说明structstud//结构体名{charnum[10];//字符型结构体数组存放学号charname[10];//字符型结构体数组存放姓名charsex[4];//字符型结构体数组存放性别chardate[10];//字符型结构体数组存放出生日期intEnglish;//整型变量存放intm=7;//整型变量用于存放英语成绩inti,j;//整型变量intmath;//整型变量用于存放数学成绩intC//整型变量用于存放C语言成绩intwuli;//整型变量用于存放物理成绩本程序使用c语言作为编程工具,主要采用结构体数组进行临时的数据储存,主要应用数组、文件作为数据存贮的方式。3.详细设计主要函数:voidReadFile()//在main函数中被调用,函数从YH0114.txt文件中读取读取学生成绩的信息。voidchaxun()//在main函数中被调用,函数按姓名查询。voidsex()//在main函数中被调用,函数按性别查询。voidzcj()//在main函数中被调用,函数计算各位同学的总成绩,并从写入另一个文本文件。voidpaixuname()//在main函数中被调用,函数按姓名排序voidpaixuzcj()//在main函数中被调用,函数按学生的总成绩排序voidtianjia()//在main函数中被调用,函数会录入新学生的信息。voidshanchuxm()//在main函数中被调用,函数按姓名删除。voidshanchuxh()//在main函数中被调用,函数按学号删除。voidxiougai()//在main函数中被调用,函数修改学生的信息。voidAve()//在main函数中被调用,函数计算学生的加权平均数。main()//主函数模块功能说明:按物性名查询学生成绩信息的函数:voidchaxun()/******按物性名查找学生成绩信息******/{if(strcmp(stud[i].name,stud)==0)/*用比较法判断该学生的姓名是否存在*/if(strcmp(stud[i].sex,stud)!=0)/*用比较法来判断该学生的性别是否存在*/voidzcj()/****计算各位学生的总成绩******/{FILE*fp;if((fp=fopen(zcj0114.txt,w))==NULL){printf(创建总成绩文件失败\n);}fprintf(fp,学号姓名性别出生日期英语数学C语言物理总成绩\n);for(i=0;iM;i++)/*条件不成立执行此For循环*/{fprintf(fp,%s%s%s%s%d%d%d%d%d\n,stud[i].num,stud[i].name,stud[i].sex,stud[i].date,stud[i].English,stud[i].math,stud[i].C,stud[i].wuli,stud[i].English+stud[i].math+stud[i].C+stud[i].wuli);}/*打开指针指向zcj.txt文档,并写进去voidpaixuname()/******实现按姓名排序*******/{structstudentstu[M];/*定义一个新的结构体变量*/if(strcmp(stu[i].name,stu[j].name)0){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}/*做完比较后交换}voidpaixuzcj()/******按学生的总成绩排序******/if(st[i].English+st[i].math,st[i].C+st[i].wulist[j].English+st[j].math+st[j].C+st[j].wuli){temp=st[i];st[i]=st[j];st[j]=temp;}/*把总成绩看成一个整体进行比较然后交换voidtianjia()/*******按学生的学号添加*******/{for(i=0;iM;i++)if(!strcmp(str,stud[i].num))/*For-if比较输入的学号和源文件是否相同*/voidshanchuxm()/*按姓名删除*/{FILE*fp;/***定义文件的指针变量名fp****/{if(!strcmp(str,stud[i].name)){for(j=i;jM-1;j++)stud[j]=stud[j+1];hasBook=1;}/*比较源文件和输入的姓名是否有相同的,如果有用它的后一组数据来覆盖,循环.fp=fopen(F:\\tjzj.txt,w);/******打开一个供写入得文件*/fclose(fp);/***文件的关闭***/}voidshanchuxh()/*按学生的学号删除*/{FILE*fp;/***定义文件的指针变量名fp****/inthasBook=0;for(i=0;iM+1;i++){if(!strcmp(str,stud[i].name)){for(j=i;jM-1;j++)stud[j]=stud[j+1];hasBook=1;}/*比较后,如果是有后一个循环向前面覆盖*/}if(!hasBook){printf(未找到学生学号\n);gotonum;}if((fp=fopen(YH0114.txt,w))==NULL){printf(打开文件失败\n);}fprintf(fp,学号姓名性别出生日期英语数学C语言物理总成绩\n);for(i=0;iM-1;i++){fscanf(fp,%s%s%s%s%d%d%d%d\n,stud[i].num,stud[i].name,stud[i].sex,stud[i].date,&stud[i].English,&stud[i].math,&stud[i].C,&stud[i].wuli);printf(%s%s%s%s%d%d%d%d\n,stud[i].num,stud[i].name,stud[i].sex,stud[i].date,stud[i].English,stud[i].math,stud[i].C,stud[i].wuli);/*输出删除后的信息*/}fclose(fp);/*关闭指针*/printf(修改成功!\n);}voidxiougai()/*实现学生成绩信息修改功能*/{printf(请输入学生学号:);scanf(%d,&n);if(n1||n=M)/*判断学号是否存在printf(学号:);printf(学号:);scanf(%s,str);strcpy(stud[n-1].num,str);printf(姓名:);scanf(%s,str);strcpy(stud[n-1].name,str);stud[n-1].math=i;printf(C语言:);scanf(%d,&i);stud[n-1].C=i;printf(物理:);scanf(%d,&i);*//*输入学生成绩的修改信息*/voidAve()/*计算学生的加权平均分*/{FILE*fp;/***定义文件的指针变量名fp****/if((fp=fopen(Ave0114.txt,w))==NULL)打开Ave.txt文件fprintf(fp,学号姓名性别出生日期英语数学C语言物理总成绩Ave\n);/*将各标题录入Ave.txt中*/for(i=0;iM;i++)/*利用循环将每一位同学的成绩写进Ave.txt中*/4.调试与测试1.用ReadFile()函数从YH0114.txt文件中读取学生成绩信息:2.实现学生姓名查询3.实现学生性别查询4.计算各位学生的总成绩5.实现学生姓名的排序7.实现添加功能8.实现学生的姓名删除9.实现学生学号删除的功能10实现学生的修改功能11.实现学生的加权平均分的查询第三部分课程设计总结课程设计是培养学生综合运用所学的知识,发现、提出、分析和解决问题,锻炼实践能力的重要环节。在此次课程设计的过程中遇到了很多问题,可以说是困难重重,但这毕竟是第一次做,难免会遇到各种各样的问题,同时在设计的过程中发现了自己的很多不足之处,对前面学过的知识理解不够深刻,掌握的不够牢固,比如说:结构体,查询,排序等,到后面写功能函数时就一下子蒙了,例如在查询时只能查询文件中存在的物品信息,却不能显示不存在的物品;在排序时,老师说如果调整一个物品那它的所有信息都要跟着换,在这个程序上纠结了好久,有把以前学过的知识重新复习了一遍,最后在老师的耐心讲解和同学的热情帮助下我还是顺利完成了此次的编程。2个星期的课设到此就要结束了,在此次课设编程中,我学习到了很多课本所学习不到的知识,明白了做一个小型软件的步骤和流程。还能够把以前所学过的知识运用到实践中,更好地掌握这些知识。同时也感受到了编程的乐趣,能够把自己的大脑中的想法变成一个实实在在的程序。在做课程设计之前,我很就在想这课程设计到底是说明呢?好奇的想了很多种不同的答案,我以为就是c语言老师上课用的ppt,通过此次课程设计我才明白课设的作用,原来他可以运用到很多方面,如学生成绩管理、我还懂得了理论和实践的相结合的重要性,之前总以为自己的c语言学习的很好的,可运用到实际中来时却是如此的手忙脚乱,所以在以后的学习生活中我们要更多的参与实践来提高我们的社会实践能力,完善我们所学到的知识。指导教师评语:报告成绩:指导教师签名:年月日
本文标题:C语言课程设计实习报告
链接地址:https://www.777doc.com/doc-3180442 .html