西安郵電學院高级语言课程设计报告书学院名称:计算机学院学生姓名:张昕专业名称:计算机科学与技术系班级:0901班学号:04091035时间:2010年9月13日至2010年9月25日高级语言课程设计报告书共17页第2页学生成绩管理系统一、实验目的1.熟悉C语言程序的编辑、编译链接和运行过程。2.掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。3.熟练运用if语句和switch语句以及嵌套应用。4.掌握C语言函数的定义基本方法、声明函数及调用函数的方法和过程。5.掌握结构体类型变量、结构体数组的运用。6.熟悉C语言的定义方法及合法语法标识符。7.掌握数组的定义、引用以及通过字符数组存储字符串,进一步使用字符串,并对指针初步了解。8.掌握文件开辟内存存储、修改及读取。8.掌握学习方法,开拓计算机语言视野,培养创新意识。二、实验内容1.运用结构体等编辑一个简单的学生成绩管理系统,使之能够完成学生信息管理、成绩信息管理、专业课程信息管理,并使每个单元能进行输入,浏览,查询,删除及修改等功能。2.执行编译操作,并根据提示调试程序,排除所有的错误和警告,直到编译成功。3.执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功。高级语言课程设计报告书共17页第3页4.请指导老师进行检查,对程序进行相关解释与说明,回答老师所提出的相关问题。对程序不足之处进行改进。5.根据源程序及运行情况截取相应的图片,认真完成实验报告。三、需求分析3.1信息输入及浏览基本信息部分包括两个模块的信息:学生成绩信息及专业设置信息。3.2信息修改可以随意修改两个模块中所需修改的信息。3.3信息删除(查询)删除(查询)指定元素(学生成绩信息,专业)的所有信息。3.4界面设计界面友好,层次清楚。提示齐全,操作可行易懂。四、概要设计4.1方案设计该程序主要由2个模块组成,分别是学生成绩信息管理、专业课程信息管理。整体上使用结构体数组进行控制,同时也使用了函数与等共同实现各个模块的功能,整个模块通过主函数系统紧密地联系在一起。用随机读写实现文件之间的连接,通过文件实现信息的及时存储与读取。系统的结构图如图4.1.1所示高级语言课程设计报告书共17页第4页图4.1.1学生成绩管理系统结构图4.2各个模块功能说明(因两个模块基本思路相同,故取第一个模块做例子说明)4.2.1信息输入模块输入学生学号,学生姓名,学生班级,学生专业,专业所属课程成绩,同时存入文本,保证本输入的信息录入存储。4.2.2信息浏览模块用数字键选中所要浏览的模块,进入浏览界面,自动显示当前所要浏览的所有信息。4.2.3信息删除模块通过提示学号查找到所要删除信息,自动删除之后,及时调整所学生成绩管理系统信息添加信息修改信息显示专业设置信息删除信息清空信息查找信息操作专业查找专业显示专业修改专业删除专业清空专业添加按成绩排序按姓名排序统计高级语言课程设计报告书共17页第5页存储的信息,让信息立即更新。4.2.4信息查询模块通过提示学号输入查询信息,之后自动输出所有当前模块所指定的查询的信息。4.2.5信息修改模块通过提示输入学号,之后根据提示重新录入,并将修改后的信息输出并且及时保存。4.2.6说明:每个模块运行过后根据界面提示都可回到主界面,程序直至主界面上的提示按0键结束。五、详细设计及运行结果5.1设计理念程序中in_stud(或in_major)为原始信息输入函数,find_stud(或find_major)为查找函数,show_stud(或show_major)为输出函数,执行各种相关操作时(例如注销与编辑),预先会自动判断并输出原始录入的信息。同时,为了实现代码简单化易懂,大部分模块中使用简单的printf和scanf和fread和fwrite语句。使用结构体数组存储当前所有数据。5.2程序主要模块流程图5.2.1主函数模块main()主函数部分简单,主要进行用户登录,用if-else语句控制,共设置两种模式,登录成功进入系统操作,否则进行重新登录5.2.1主函数流程图如图:高级语言课程设计报告书共17页第6页5.2.1.1主函数调用结构示意图5.2.2子函数模块给出提示语句,用户根据提示语句输入,存储的数据于文件中。如图5.2.2.1所示。图5.2.2.1基本信息模块流程图删除流程图(查询和修改类似)给出提示语句用户输入存于文件中输入用户名及密码开始判断用户登录登录成功,进行各项操作错误返回重新登录Yesno高级语言课程设计报告书共17页第7页5.3程序运行截图(核心部分截图(学生成绩登录))图5.3.1学生成绩管理系统登录界面图5.3.2学生成绩管理系统主界面开始输入删除的信息读取判断是否存在删除信息元素根据提示返回主菜单否高级语言课程设计报告书共17页第8页学生成绩系统专业课程界面浏览界面高级语言课程设计报告书共17页第9页(专业浏览)成绩浏览查询界面高级语言课程设计报告书共17页第10页数据分析主界面数据分析-排序高级语言课程设计报告书共17页第11页按成绩排序按姓名升序排序评级高级语言课程设计报告书共17页第12页六、调试情况,设计技巧及体会6.1自我评价在本次课程设计中,加强了对C语言的了解与思考的能力,面对程序中出现的种种问题,都能仔细认真排查,最终找到较为合适的解决方案。可以心平气和的面对繁杂的代码,脚踏实地的一步一步分析与构架,虚心接受同学与指导老师的建议与意见,不断进步。但是,毕竟没有高级语言课程设计的经验,所以考虑不周全导致陷进死胡同,这些都有待提高。6.2程序分析本程序在VC++6.0环境下编写,运用函数、数组、循环、结构体、文件等知识将整体融合在一起。在函数模块构建部分,运用判断语句简化整个程序,调用与嵌套大大减少了不必要的代码。尽量采取简单可用的语句,使程序易懂。高级语言课程设计报告书共17页第13页6.3实习心得通过为期两周的实习,感受颇多。我觉得,编写应用程序是一个由难到易,再到难的过程。其实,C语言的核心就是算法,一个好的程序员,一定有最好的算法。那么,在设计算法与模块时,应该进行十分周密的考虑。课程设计的前两天,我一直在考虑算法,画结构图,当大致框架出来后,再进行了一系列的评审与试验,检验结构的可行性。实习期间,认真地编写与调试程序是关键部分,通过先前做的功课,觉得要实现要求的功能还是很容易的,尤其是两个模块的函数相互可以直接拿来用的。就这样,我完成了自己的程序初稿。后期调试阶段,出现了许多很棘手的问题。譬如文件无法存储和读取,储存时覆盖文件原数据,使用错误的跳转语句等。这些失误都是由于自己的粗心与偷懒导致的。经过自己的编译与同学的帮忙调试,重新编写修改错误部分,才解决了问题。我觉得上机实习真的可以让人在高级语言方面取得较大的进步,纸上谈兵的方法在学习方面永远行不通,要实践,才能成功。编写一个程序,除了需要具备扎实的只是以外,还要有细心、虚心、专心的品质,这些都是成功的关键。附:程序源代码:高级语言课程设计报告书共17页第14页#includestdlib.h#includestdio.h#includestring.h#includeconio.h#includewindows.h#defineMAX100typedefstruct{intmno;//专业号charmname[20];//专业名称charcour[3][20];//专业课程}MAJOR;typedefstruct{intsno;//学号charsname[10];//姓名charclassno[8];//班级intmno;//专业号intcour[3];//课程高级语言课程设计报告书共17页第15页floataver;//平均分charflag[10];//标记}STUDENT;voidstudent();//学生基本信息函数voidin_stud();//添加voidup_stud();//修改voiddel_all_stud();//全删voiddel_stud();//删除一个voidshow_stud();//显示voidfind_stud();//查找voidsort_stud();//排序voidsort_1();//按成绩排序voidsort_2();//按姓名排序voidsort_3();//统计voidmajor();//专业管理主函数voidin_major();//添加voidup_major();//修改voiddel_all_major();//全删voiddel_major();//删除一个voidshow_major();//显示高级语言课程设计报告书共17页第16页voidfind_major();//查找/*专业·添加函数*/voidin_major(){FILE*fp;MAJORmajor,major1;if((fp=fopen(major.dat,rb+))==NULL)if((fp=fopen(major.dat,wb+))==NULL){printf(\n\t\t...不能打开建立文件!);return;}printf(\n\n\t请输入信息:);printf(\n\t请输入专业号:);scanf(%d,&major.mno);printf(\n\t请输入专业名:);scanf(%s,major.mname);printf(\n\t请输入专业第一课程:);scanf(%s,major.cour[0]);printf(\n\t请输入专业第二课程:);scanf(%s,major.cour[1]);高级语言课程设计报告书共17页第17页printf(\n\t请输入专业第三课程:);scanf(%s,major.cour[2]);rewind(fp);while(!feof(fp)){fread(&major1,sizeof(MAJOR),1,fp);if(major1.mno==major.mno)break;}if(!feof(fp)){printf(\n\t\t\t...专业号重复!\n);printf(\n按任意键返回重新操作!);getch();}elsefwrite(&major,sizeof(MAJOR),1,fp);fclose(fp);}/*专业·修改函数*/voidup_major()高级语言课程设计报告书共17页第18页{FILE*fp;MAJORmajor,nmajor;inti,num;if((fp=fopen(major.dat,rb+))==NULL){printf(\n\t\t...不能打开文件!\n);return;}fseek(fp,0,SEEK_END);if(ftell(fp)0)//文件不空{rewind(fp);printf(\n\t\t请输入要修改的专业号:);scanf(%d,&num);for(i=0;!feof(fp)&&fread(&major,sizeof(MAJOR),1,fp)==1;i++)if(major.mno==num)break;if(feof(fp)){printf(\n\t\t...没有该专业号的专业!\n);高级语言课程设计报告书共17页第19页return;}printf(\n\t\t修改信息:);printf(\n\t\t请输入专业名:);scanf(%s,nmajor.mname);nmajor.mno=major.mno;fseek(fp,-(long)sizeof(MAJOR),SEEK_CUR);fwrite(&nmajor,sizeof(MAJOR),1,fp);fclose(fp);}}/*专业·删除函数*/voiddel_major(){FILE*fp;MAJORmajor[MAX];inti,j,n,num;if((fp=fopen(major.dat,rb))==NULL){printf(\n\t\t...没有找到文件!\n);return;}高级语言课程设计报告书共17页第2