您好,欢迎访问三七文档
一、需求分析设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。首先编制一个学生籍贯信息记录簿,记录学生的一些基本信息,包括学号、姓名、性别、年龄、籍贯。该软件系统能够解决一下问题(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息。二、设计1:设计思想:本程序包括5个模块,分别是添加模块、显示模块、删除模块,修改模块和查询模块。功能模块图如图所示。2:设计表示:为了更好地满足题目上的信息要求,从而创建了自定义数据类型,用于存储所有学生的籍贯信息。自定义结构体类型如下:structstudent{charstudentID[20];//学生学号charname[20];//学生姓名charsex[20];//学生性别charage[20];//学生年龄charprovince[20];//学生籍贯};每个子函数原型及其功能如下:(1)intreads(structstudentstu[N])该函数为磁盘文件内容的读取函数,将学生的籍贯基本信息存储于txt文档之中。用此函数来读取,从而实现籍贯信息的显示,等函数模块的运行成功。(2)voidsave(structstudentstu[N],intn)该函数为学生籍贯信息更改后保存新的学生信息的函数,为系统几大模块中的删除模块、修改模块和添加模块服务。(3)voidshow()voidadd()voiddel()voidchange()以上几个函数第一个为学生籍贯信息显示函数,在程序运行时选择相应的菜单序号将txt学生籍贯信息记录簿添加显示删除修改查询文档中的信息显示在命令窗口中。第二个为籍贯信息添加函数,在原有的学生信息基础上添加信息,追加在txt文档中。第三个为籍贯信息删除函数,即删除原有的生信息,再保存更新后的文件。最后一个为信息更能改函数,即读取原txt文档中学生的籍贯信息,在程序命令窗口中选择相应的操作序号,更改相应的学生籍贯信息,然后保存更新后的信息。(4)voidfind1()voidfind2()voidfind3()上面定义的子函数均为查询子函数,分别为按姓名查询籍贯、按学号查询籍贯和按籍贯查询学生信息。其中每个子函数中都定义了一个结构体变量structstudentstu[N]u,以此来简化程序的结构,提高程序运行的效率。3.实现注释:该系统已经能够完全实现题目要求的一些内容,即创建了磁盘文件存储了文件信息,即txt文档中的学生籍贯信息记录簿。能够实现信息的显示,添加、删除和修改信息,这些都是题目要求的可选项。还有就是信息的查询功能,都已经能够很好的准确查询,从学生的学号或者姓名查询籍贯,或者从籍贯查询学生的姓名等等,这些都已经能够实现。4.详细设计表示:主要算法的框架如下:三、用户手册程序运行菜单:运行程序后进入主菜单界面,如下图所示。开始;菜单输入选择的序号主菜单2主菜单1主菜单5主菜单4主菜单3显示学生信息添加学生信息删除学生信息修改学生信息查询子系统子菜单1子菜单2子菜单3按姓名查询按学号查询按籍贯查询退出系统显示学生籍贯信息:在主菜单界面下,选择2,然后回车键,可将学生信息显示在屏幕上添加学生籍贯信息:在主菜单界面下,选择1,来添加学生籍贯信息。按屏幕提示,添加数量为1,分别输入学号、姓名、性别、年龄和籍贯。用空格隔开,回车键确认。再选择2,显示新的学生籍贯信息。可得下图,与上图比较可看出,成功添加了一名学生的籍贯信息修改学生籍贯信息:在主菜单界面下,选择4,来修改学生籍贯信息。输入要修改学生的学号,按回车键确认,然后再输入新的学生籍贯信息。选择2,可得如下新的学生籍贯信息图。从下图可看出成功的修改了最后一名学生的籍贯。删除学生籍贯信息:在主菜单界面下,选择3删除学生籍贯信息。输入要删除学生的学号,按回车键确认。从下图可看出成功的删除了学号为1104013045的学生的学生籍贯信息。查询子系统:在主菜单界面下选择5,进入学生籍贯查询子系统按姓名查询籍贯:在子系统下,按1进行姓名查询,输入要查询的学生的姓名,按回车确认,可得学生相应的籍贯信息。按学号查询籍贯:在子系统下,按2进行学号查询。输入要查询的学生的学号,回车键确认,可得相应学生的籍贯信息。按籍贯查询输出该学生的所有信息:在子系统下,按3进行籍贯查询,输入相应的籍贯,按回车键确认,可得出所有该籍贯的学生的姓名。四:测试及调试:经过将近两个多星期的课程设计,上机时就坐在电脑旁边,不断地对系统程序中的每个模块进行删除和修改,通过对此程序的编写,使我自己把课本的知识更加熟练的掌握和运用到实际当中,但也只有在实际当中才能知道自己有那么多的错误。例如下面列举的一些发现的问题:1.如何把函数定义清楚是很重要的,这个学生籍贯信息记录簿系统中主函数只有那么几十行,其余的都是子函数,只要其中的一个子函数错误,那可就所有的程序都运行不了了。2.要注意全局变量的应用,若全局变量没定义好的话,对整个程序的编写与都有很大影响!!发现问题,理所当然测试及调试就显得很重要了。1.其实个人觉得应该先自己人工检查一遍,多数情况下很问题都是一些低级的东西,例如pfintf()scanf()一时手快把某个字母给打错了。这些都是我们自己能够检查出来的,而且这样培养了自己的严谨思维,不要什么都靠机器。2上机调试。(1)程序运行出错时,在vc底部的命令窗口都会有提示信息,这在平时的时候,我们都应该记住什么样的错误对应着什么样的提示信息。(2)对程序尽量的多添加一些注释,这样能够帮助我们理解,不至于写了后面忘了前面。(3)运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法:a.可以将流程图与程序相对照,逐断的检查,因为很多的情况下,vc下的错误下的提示窗口所提示的程序行数,其实并没有错,可能只是前后的程序出错而引起的。b.有时程序的编译并没有错误(绝大多数情况下都是这一种情况),但程序的运行总是出错,例如在对菜单进行选择时,scanf(%c,&choice1),总是接受错误,后来才发现,原来要写这样的格式:scanf(%c,&choic=e);(多一个空格),应为c在scanf()函数的缓冲区内误读了回车键,空格的目的是吸收回车键。五:小结本次的课程设计,我的题目是学生籍贯信息记录簿系统,回顾从那道题目到现在书写的报告总结。将近两个星期的学习,虽然整天待在机房会有那么点的枯燥吧,但是在我的程序能运行的那一刻,我感受到了,内心一种喜悦感,虽然说自己的程序代码页参考了老师编写过的学生成绩管理系统,但是我依然很自豪,因为从刚进入合肥学院,到我们计算机科学与技术系学习了一年,想想当时还在参加高考的我也能自己编写小系统了,虽然系统功能不是很强大,但也是一点一滴的劳动成果啊。我相信经过后面时间的继续学习,我一定能够做的更好。过程的酸甜苦辣也是人生的一点难得的经历。课程设计中,困难时不可避免的。这也是在程序设计中必须要过的坎,过去了一片海阔天空,没有跨过去的勇气,那我们只能够原地踏步,在我们的人生道路上停滞不前。其实这次的课程设计何尝不是对我们的一种考验呢,不仅仅是学习上,当我们在程序运行错误时,绞尽脑汁的去寻找答案时,我们已经在进步,因为我们没有放弃,没有因为那几十个错误而放弃,没有因为函数写不出来而放弃或者情绪低落。相反的,我们的斗志被激励起来了,不就是一个程序吗,老子还怕它??笑话。在程序的编程过程中,我们也自然的拉近了同学和同学之间的距离,老师和学生之间的距离。增强了合作精神。因为我们不可能什么都能靠自己埋头苦想来解决一件事,同学,老师是我们的垫脚石。我们可以与同学老师一起研究讨论,其中我们的专业知识也在悄无声息的不断增长。本次的课程设计时间放在学期末,它不仅是上课,它还是对我们这一个学期以来知识成果的检验。我们应该把握这样一个难得的机会。我们可以校验自己到底这个学期c语言这门课程掌握的怎么样,上课有没有认真的听讲,课后有没有好好的去复习。上课有没有提前的去预习课本。这样才能够检查自己的不足之处,挖掘自己的提升空间,要我们更加的了解到学习永无止境。不是一朝一夕就行的。况且,我们这次的课程设计难道不是给我吗回顾课本知识的时候吗,在编写程序中,遇到忘记或者是不懂的问题我们就会去翻书,翻着翻着我们就复习了我们以前学习的一些专业知识了,或者遇到了一个常犯的错误,错误的反复就是正确的了,温故而知新,这是一句最简单不过的道理了。课程设计的收获并不止于眼前,放眼长远,利益还在后面。本次的课程设计题目学生籍贯信息记录簿系统,虽然自己实现了题目所要求的所有内容,但是缺陷还是有不少的,毕竟我们的专业知识还不是很丰富,有些部分的内容并不是很了解。比如说我这个系统可以用链表做的话就会更加的专业,程序运行的效率会更高,其系统本身的价值也会提高。另外,我自己做的系统还是不够人性化,好的系统是让人刚接触是就能够自己用,一眼就有爱上的感觉。我觉得自己系统的菜单界面太过僵硬,好的程序不仅仅是能够运行,还要给人一种耳目一新的感觉,自己在这方面还是有待改进。如何去做到这些呢,我认为培养自己的专业知识是相当的重要,只有你对一件事产生了浓厚的兴趣,你才会去追求它的完美,才会有跟多得动力和坚持不懈的毅力。六、参考文献[1]孙小红王宇颖孙志岗等编著《C语言程序设计》北京:高等教育出版社2011.4[2]谭浩强编著《C程序设计题解与上机指导(第3版)》北京:清华大学出版社[3]谭浩强编著《C程序设计(第3版)》北京:清华大学出版社附录:#includestdio.h#includestdlib.h#includeconio.h#includestring.h#defineN20structstudent//结构体,用于存储学生的籍贯信息{charstudentID[20];charname[20];charsex[20];charage[20];charprovince[20];};voidMenu1(){puts(\t\t-----欢迎进入学生籍贯信息记录簿系统-----);puts(\t\t1----添加学生籍贯信息);puts(\t\t2----显示学生籍贯信息);puts(\t\t3----删除学生籍贯信息);puts(\t\t4----修改学生籍贯信息);puts(\t\t5----查询系统);puts(\t\t6----退出);puts(\t\t请选择……);}voidMenu2(){puts(\t\t-----欢迎进入学生籍贯查询子系统-----);puts(\t\t1---按姓名查询);//按学号或姓名查询其籍贯;puts(\t\t2---按学号查询);puts(\t\t3---按籍贯查询);//按籍贯查询并输出该籍贯的所有学生;puts(\t\t4---返回);puts(\t\t请选择……);}intreads(structstudentstu[N])//读取文件中的内容{FILE*fp;inti=0;if((fp=fopen(学生籍贯信息记录簿.txt,r))==NULL){printf(文件打开失败!\n);return0;}else{for(i=0;!feof(fp);i++)fscanf(fp,%s%s%s%s%s\n,stu[i].studentID,stu[i].name,stu[i].sex,stu[i].age,stu[i].province);}fclose(fp);returni;}voidsave(structstudentstu[N],intn)//学生籍贯信息改变后更新并保存文件{FILE*fp;inti=0;if((fp=fopen(学生籍贯信息记录簿.txt,w))==NULL){printf(文件打开失败!\n);return;}else{for(i=0;in;i++)fprintf(fp,%s%s%s%s%s\n,stu[i].s
本文标题:c语言课程设计报告
链接地址:https://www.777doc.com/doc-5839576 .html