计算机科学与技术系课程设计报告2012~2013学年第1学期课程C语言课程设计课程设计名称学生籍贯信息记录簿设计学生姓名学号专业班级指导教师目录一、绪言——需求分析……………………二、系统设计……………………………(一)设计思想…………………………(二)源程序设计…………………………(三)、设计表示……………………………三、系统调试………………………………四、学生籍贯记录薄使用说明…………………五、总结……………………………………六、参考文献……………………………………一、绪言——需求分析随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。题目要求设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。要求为:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息(可选项)。二、系统设计(一)设计思想:流程图(二)、源程序设计#includestdio.h///宏定义函数#includestdlib.h//串操作及内存操作函数#includestring.h/////调用系统函数typedefstructstudent////定义新结构体student{charname[10];/*定义姓名*/intnum;/*定义学号*/charsex[10];/*定义性别*/intage;/*定义年龄*/charlocation[10];/*定义籍贯*/}s;voidFun(){charch1;/*定义字符*/printf(继续操作?\n\t——输入Y继续操作/N退出系统[不区分大小写]\n);scanf(%s,&ch1);/*接收字符*/switch(ch1)/*选择结构*/{case'Y':case'y':break;case'N':case'n':printf(欢迎您再次使用。\n);exit(0);default:printf(输入有误!);/*若输入的字符不是“Y”或“y”或“N”或“n”,会提示输入有误*/}system(cls);/*清屏*/}voidmenu()/*主函数菜单*/{/*按说明键入数字并键入enter后可查询*/printf(**********欢迎进入学生籍贯信息记录簿*************\n);printf(1--显示所有信息\n);printf(2--按学号查询\n);printf(3--按姓名查询\n);printf(4--按籍贯查询\n);printf(5--结束程序\n);printf(***********请选择您需进行的选项************\n);}main(){FILE*fp;/*定义文件型指针变量*/sstu[100];inti=0,n=0,m,num;/*定义变量*/charname[10],location[20];fp=fopen(information.txt,r+);/*打开文件并读取*/while(!feof(fp)){fscanf(fp,%s%d%s%d%s,&stu[i].name,&stu[i].num,&stu[i].sex,&stu[i].age,&stu[i].location);/*读取姓名,学号等信息*/i++;n++;}L:menu();printf(输入序号:);scanf(%d,&m);system(cls);switch(m)/*选择结构,选择查询方式或添加学生信息*/{case1:for(i=0;in;i++)printf(%s\t%d\t%s\t%d\t%s\n,stu[i].name,stu[i].num,stu[i].sex,stu[i].age,stu[i].location);Fun();gotoL;/*循环*/case2:K:printf(请输入学号:);scanf(%d,&num);if(num10)/*在“information.txt”这个文件中只有10位学生的信息,所以键入的数字不能超过10*/{printf(警告:输入错误!请重新输入:\n);/*键入的数字超过10后所显示的提示*/gotoK;}system(cls);for(i=0;in;i++)/*依次查询满足的学生*/{if(stu[i].num==num){printf(%s\t%d\t%s\t%d\t%s\n,stu[i].name,stu[i].num,stu[i].sex,stu[i].age,stu[i].location)break;}}Fun();gotoL;case3:printf(请输入需查询的学生姓名\n);printf(若输入错误则无法查询!\n:);scanf(%s,name);system(cls);for(i=0;in;i++)/*依次查询满足的学生*/{if(strcmp(stu[i].name,name)==0)/*判断字符串比较是否相等*/{printf(%s\t%d\t%s\t%d\t%s\n,stu[i].name,stu[i].num,stu[i].sex,stu[i].age,stu[i].location);break;}}Fun();gotoL;case4:printf(请输入籍贯\n);printf(若输入错误则无法查询!\n:);scanf(%s,location);system(cls);for(i=0;in;i++){if(strcmp(stu[i].location,location)==0)/*判断字符串比较是否相等*/{printf(%s\t%d\t%s\t%d\t%s\n,stu[i].name,stu[i].num,stu[i].sex,stu[i].age,stu[i].location);}}Fun();gotoL;case5:fp=fopen(information.txt,a+);/*打开文件并往里写入信息*/printf(请输入增加学生的人数:);scanf(%d,&n);printf(请输入增加学生的姓名、学号、性别、年龄及籍贯:\n);for(i=0;in;i++){scanf(%s%d%s%d%s,stu[i].name,&stu[i].num,stu[i].sex,&stu[i].age,stu[i].location);/*接收信息*/fprintf(fp,%s\t%d\t%s\t%d\t%s\n,stu[i].name,stu[i].num,stu[i].sex,stu[i].age,stu[i].location);/*打印信息*/}Fun();gotoL;case6:exit(0);default:printf(输入错误,请重新输入!\n);/*若输入的数字不是1,2,3,4,5,6所提示的信息*/gotoL;}}(三)、设计表示2.3.1进入到界面printf(*****************欢迎进入学生籍贯信息记录簿*******************\n);2.3.2选择程序进行管理printf(1--显示所有信息\n);printf(2--按学号查询\n);printf(3--按姓名查询\n);printf(4--按籍贯查询\n);printf(5--结束程序\n);2.3.3对文件进行读取,并显示学生的信息。FILE*fp;sstu[100];inti=0,n=0,m,num;charname[10],location[20];fp=fopen(information.txt,r+);while(!feof(fp))fscanf(fp,%s%d%s%d%s,&stu[i].name,&stu[i].num,&stu[i].sex,&stu[i].age,&stu[i].location)i++;n++;2.3.4后续程序为switch语句进行选择,选择完毕后会提示是否继续,继续则进入到主菜单,否则退出系统。三、系统调试3.2调试程序3.1.1显示所有信息进入系统后键入“1+enter”后即可显示如下界面。选择第一个选项后,系统将会读取磁盘文件information.txt中所保存的信息,并在显示屏上显示(如下图),且会提示是继续操作还是退出系统。3.1.2按学号查询系统会先提示:“请输入学号”。输入学号(例如:3)后键入“enter”:随后键入“Y”或“y”继续运行程序。3.1.3按姓名查询键入“enter”后,若磁盘文件中有你输入的学生姓名,则该同学的信息会在显示屏上显示。如若无此学生则直接跳到继续操作这一项。3.1.4按籍贯查询若磁盘文件所有学生籍贯信息中有你所输入的地点这会显示所有这个地点的学生,若无此地点的学生则直接跳到继续操作这一项。3.1.5添加学生信息系统先会提示你要输入的学生数目。接着会提示要依次输入那些信息:“请输入增加学生的姓名、学号、性别、年龄及籍贯”。输入的信息将会被写入“information.txt”文件中。如下图:3.1.6退出系统随后任意键入一个键就结束程序。3.2调试小结自己做的这个程序虽然简单,但过程中还是遇到了很多困难。例如对字符串的处理。开始时总是无法显示输入的学生姓名,性别,籍贯这三项信息。后来通过自己看书和询问同学,总算把字符串问题处理得当了。程序虽简单,调试过程中总是会出现这样那样很多错误,例如:少分号,未定义等等。有些错误很简单,自己看一下就可以改出来,但有些错误怎么也修改不出来,例如简单的少分号,很多时候加了分号还是没用!此时只有问同学和请教老师。好在最后是完成了这个程序。四、学生籍贯信息记录簿的使用说明进入系统后按照提示输入数字并键入enter即可实现你需要的操作。进入后会有提示信息提示用户应该怎么做,按照提示输入后再键入enter即可实现功能。本系统较为简单,使用时按照提示操作,输入所提示的信息后按enter键即可。五、总结通过这次课程设计,使我们更加熟悉的掌握了VisualC++语言的运用。帮助我们熟悉了更多VisualC++语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。现在知道自己还有很多的不足,而且,由于认识的有限,无法去完善现在的程序,导致这个程序有很多功能还没有实现。对此,自己以后还需要继续学习,把它完善。六、参考文献[1]马安鹏.VisualC++程序设计导学。北京:清华大学出版社,2002[2]谭浩强,C程序设计(第四版)[2]电子书籍.VisualC++技术内幕(第四版).网址:[3]BeckZaratian.MicrosoftVisualVisualC++6.0程序员指南.希望图书创作室译.北京:北京希望电脑公司出品,1998[4]RichardC.Leinecker,TomArcher.VisualC++6宝典.张艳,张谦译.北京:电子工业出版社,1999[5]李强,贾云霞.VisualC++项目开发实践.北京:中国铁道出版社,2004[6]郑莉,董渊,张瑞丰.C++语言程序设计.2003.[7]H.M.Deitel,P.J.Deitel.SmallC++HowtoProgram.2006.