软件设计课程设计报告题目:学生信息管理系统系部名称:专业名称:班级:学号:学生姓名:指导教师:时间:2009年5月25日至2009年6月5日***Createdon1/4/201712:17:43PM第1页共10页一、课程设计目的1)对C各部分知识的综合应用能力2)提高程序设计的能力3)提升对于较大程序的抽象分析设计能力4)学习调试和测试的技巧二、课程设计内容1)熟悉C实验环境,按给定的上机步骤练习完成;2)熟悉C程序的编辑,编译,链接和运行的过程。3)编译一个应用系统程序,形成一个软件系统。三、需求分析随着当今社会发展,信息化水平逐步提高,对教务管理有了新的要求,因此,编写一个信息管理系统是十分有必要的。该软件主要是实现对学生信息进行系统化的管理,首先可以对学生基本信息进行输入和读取,其次查找并显示特定学生的相关信息,然后可以插入学生的相关信息,还有就是可按学生相关信息排序,以求达到简易操作的目的。四、概要设计1.系统结构图(功能模块图)和数据变量说明2.功能模块说明1.输入模块2.列表模块主菜单输入列表查找增加修改排序退出-1-1-1开始输入输入数据i=-1i=-1返回主程序返回主程序返回主程序开始输出列表返回主程序***Createdon1/4/201712:17:43PM第2页共10页3.查找模块4.修改模块5.增加模块6.成绩排序开始读文件数据输入numstu[i].num==nuum?输出数据返回主函数返回主函数YN开始读文件数据输入numstu[i].num==nuum?输出数据返回主函数YN显示数据修改数据返回主函数NN开始读文件数据列出数据s=ii=-1i=-1输入数据YY返回主函数返回主函数开始读文件数据列出数据冒泡排序输入数据返回主函数Createdon1/4/201712:17:43PM第3页共10页五、运行情况1.主菜单2.录入数据3.输出数据4.查找数据5.增加数据5.增加数据Createdon1/4/201712:17:43PM第4页共10页6.修改数据7.成绩排序8.退出系统Createdon1/4/201712:17:43PM第5页共10页六、设计体会和反思通过两周的上机实习,我对C语言又有了崭新的认识。C语言的学习是一个系统的过程,需要长期的知识积累和储备并辅以大量的上级实际操作练习,自己也应该有所体会,在实践中成长,在实践中求知。这次我设计的课题是学生信息管理系统。课题要求对学生信息实现一系列基本操作。我选择通过结构体数组来实现这个设计。通过fread和fwrite两个函数实现对文件的读写,过程比较简洁(这里也有参考《C程序设计》中某例题的思想)。通过大量的符号和printf语句,使得操作界面更加和谐友善,这些都是我通过这次实习积累的经验。同时,设计完成后我也发现了代码中的一些不足,例如在录入数据时要求输入序号的值,这个我认为操作比较复杂,但由于时间紧迫,未能提出完美的解决方案,但此问题并不影响程序的运行和要求的实现。经过实际检验,只要按照程序要求输入,就能够实现。总之,通过这次实习,我也认识到了我自己在程序设计这门课程上的不足,在以后的学习实践中,要更加的严谨踏实,对知识的把握要更加的细致入微,要活学活用,争取在这个学科上取得更大的进步。七、参考文献谭浩强著.C程序设计(第三版).北京:清华大学出版社,2005Createdon1/4/201712:17:43PM第6页共10页八、程序源代码#includestdio.h#defineSIZE100000#includestring.h#includestdlib.h#includeconio.hstructstudent{intn;intnum;charname[10];intC;intMaths;intEn;floatave;}stu[SIZE];/*录入数据*/voidfinput(){FILE*fp;inti,p;fp=fopen(fstu,wb);for(i=0;iSIZE;i+1){printf(i=%d输入序号i(当输入i=-1时,返回),i=,i++);scanf(%d,&i);if(i==-1){fclose(fp);return;}else{printf(请输入学号,姓名,C成绩,数学成绩,英语成绩:);scanf(%d%s%d%d%d,&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,&stu[i].En);stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;stu[i].n=i+1;fwrite(&stu[i],sizeof(structstudent),1,fp);}}fclose(fp);}/*输出数据*/voidflist(){FILE*fp;inti;fp=fopen(fstu,rb);printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);printf(成绩列表\n);printf(-----------------------------------------------------------\n);printf(序号学号姓名C成绩数学英语平均\n);printf(-----------------------------------------------------------\n);for(i=0;fread(&stu[i],sizeof(structstudent),1,fp)==1;i++){printf(%d%8d%8s%8d%8d%8d%16.2f\n,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);}printf(-----------------------------------------------------------\n\n);printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);Createdon1/4/201712:17:43PM第7页共10页fclose(fp);}/*查找数据*/voidfsearch(){FILE*fp;inti,num;fp=fopen(fstu,rb);rewind(fp);printf(请输入要查找的学号:);scanf(%d,&num);printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);printf(查询结果\n);printf(-----------------------------------------------------------\n);printf(序号学号姓名C成绩数学英语平均\n);printf(-----------------------------------------------------------\n);for(i=0;i=SIZE;i++)if(stu[i].num==num){printf(%d%8d%8s%8d%8d%8d%16.2f\n,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);}printf(-----------------------------------------------------------\n\n);printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n);fclose(fp);}/*增加数据*/voidfadden(){inti,s;FILE*fp;fp=fopen(fstu,ab+);rewind(fp);printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);printf(成绩列表\n);printf(-----------------------------------------------------------\n);printf(序号学号姓名C成绩数学英语平均\n);printf(-----------------------------------------------------------\n);for(i=0;fread(&stu[i],sizeof(structstudent),1,fp)==1;i++){printf(%d%8d%8s%8d%8d%8d%16.2f\n,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);}printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);s=i;for(i=s;iSIZE;i++){printf(i=%d输入序号i(当输入i=-1时,返回),i=,i+1);scanf(%d,&i);if(i==-1){fclose(fp);return;}else{printf(请输入学号,姓名,C成绩,数学成绩,英语成绩:);stu[i].n=i+1;scanf(%d%s%d%d%d,&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,&stu[i].En);Createdon1/4/201712:17:43PM第8页共10页stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;fwrite(&stu[i],sizeof(structstudent),1,fp);}}fclose(fp);}/*修改数据*/voidfchange(){FILE*fp;inti,num,n;intflag=0;printf(请输入要修改学生的学号:);scanf(%d,&num);for(i=0;i=SIZE;i++)if(stu[i].num==num){printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);printf(成绩列表\n);printf(-----------------------------------------------------------\n);printf(序号学号姓名C成绩数学英语平均\n);printf(-----------------------------------------------------------\n);printf(%d%8d%8s%8d%8d%8d%16.2f\n,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);printf(-----------------------------------------------------------\n\n);printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);n=i;flag=1;break;}if(flag==0){printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);printf(输入错误!\n);printf(请返回!\n);printf(※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n);return;}printf(\n\n\n);fp=fopen(fstu,rb+);fseek(fp,n*sizeof(structstudent),0);printf(请输入新的学号,姓名,C成绩,数学成绩,英语成绩:);scanf(%d%s%d%d%d,&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,&stu[i].En);stu[i].ave=(stu[i].C+stu[i].Maths+stu[i]