一、 需求分析。
设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。首先编制一个学生籍贯信息记录簿,记录学生的一些基本信息,包括学号、姓名、性别、年龄、籍贯。该软件系统能够解决一下问题(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3) 按学号或姓名查询籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息。
二、 设计。
1:设计思想:本程序包括5个模块,分别是添加模块、显示模块、删除模块,修改模块和查询模块。功能模块图如图所示。
2:设计表示:
为了更好地满足题目上的信息要求,从而创建了自定义数据类型,用于存储所有学生的籍贯信息。自定义结构体类型如下:
struct student
char studentid[20];/学生学号。
char name[20];/学生姓名。
char sex[20];/学生性别。
char age[20];/学生年龄。
char province[20];/学生籍贯。
每个子函数原型及其功能如下:
1) int reads(struct student stu[n])
该函数为磁盘文件内容的读取函数,将学生的籍贯基本信息存储于txt文档之中。用此函数来读取,从而实现籍贯信息的显示,等函数模块的运行成功。
2) void s**e(struct student stu[n],int n)
该函数为学生籍贯信息更改后保存新的学生信息的函数,为系统几大模块中的删除模块、修改模块和添加模块服务。
3)void show() void add() void del() void change()
以上几个函数第一个为学生籍贯信息显示函数,在程序运行时选择相应的菜单序号将txt文档中的信息显示在命令窗口中。第二个为籍贯信息添加函数,在原有的学生信息基础上添加信息,追加在txt文档中。第三个为籍贯信息删除函数,即删除原有的生信息,再保存更新后的文件。
最后一个为信息更能改函数,即读取原txt文档中学生的籍贯信息,在程序命令窗口中选择相应的操作序号,更改相应的学生籍贯信息,然后保存更新后的信息。
4)void find1() void find2() void find3()
上面定义的子函数均为查询子函数,分别为按姓名查询籍贯、按学号查询籍贯和按籍贯查询学生信息。其中每个子函数中都定义了一个结构体变量 struct student stu[n]u,以此来简化程序的结构,提高程序运行的效率。
3.实现注释:该系统已经能够完全实现题目要求的一些内容,即创建了磁盘文件存储了文件信息,即txt文档中的学生籍贯信息记录簿。
能够实现信息的显示,添加、删除和修改信息,这些都是题目要求的可选项。还有就是信息的查询功能,都已经能够很好的准确查询,从学生的学号或者姓名查询籍贯,或者从籍贯查询学生的姓名等等,这些都已经能够实现。
4.详细设计表示:
主要算法的框架如下:
三、 用户手册。
程序运行菜单:运行程序后进入主菜单界面,如下图所示。
显示学生籍贯信息:在主菜单界面下,选择2,然后回车键,可将学生信息显示在屏幕上。
添加学生籍贯信息 :在主菜单界面下,选择1,来添加学生籍贯信息。按屏幕提示,添加数量为1,分别输入学号、姓名、性别、年龄和籍贯。
用空格隔开,回车键确认。再选择2,显示新的学生籍贯信息。可得下图,与上图比较可看出,成功添加了一名学生的籍贯信息。
修改学生籍贯信息:在主菜单界面下,选择4,来修改学生籍贯信息。输入要修改学生的学号,按回车键确认,然后再输入新的学生籍贯信息。
选择2,可得如下新的学生籍贯信息图。从下图可看出成功的修改了最后一名学生的籍贯。
删除学生籍贯信息:在主菜单界面下,选择3删除学生籍贯信息。输入要删除学生的学号,按回车键确认。从下图可看出成功的删除了学号为***的学生的学生籍贯信息。
查询子系统:在主菜单界面下选择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版) 》北京:清华大学出版社。
附录:#include ""
#include ""
#include ""
#include ""
#define n 20
struct student//结构体,用于存储学生的籍贯信息。
char studentid[20];
char name[20];
char sex[20];
char age[20];
char province[20];
void menu1()
puts("\t\t---欢迎进入学生籍贯信息记录簿系统---
puts("\t\t 1---添加学生籍贯信息");
puts("\t\t 2---显示学生籍贯信息");
puts("\t\t 3---删除学生籍贯信息");
puts("\t\t 4---修改学生籍贯信息");
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...
C语言课程设计报告
华中科技大学计算机科学与技术学院。题目 专业 班级 学号 姓名 成绩 指导教师 完成日期 2016年月日。目录。一 系统需求分析 1 二 总体设计 2 三 数据结构设计 3 四 详细设计 4 五 系统实现 5 六 运行测试与结果分析 6 七 总结 7 八 参考文献 8 九 指导教师评语 9 对所要解...
C语言课程设计报告
c语言。课程设计。商业销售管理系统。学号 121407210 姓名 宋军。班级 软件1202 指导老师 邹姝稚。成绩 2013年6月。一 任务描述。编写一个商品销售管理系统,是其能够拥有商品买卖和库存管理功能。在顾客选购时,需给出输入商品名称,或商品型号,或选择列表进而输入商品编号三种选择,在顾客选...