《c语言课程设计报告-学生通讯信息管理系统》
西安郵電學院 目:学生通讯信息管理系统院系名称:通信与信息工程学院专业名称:信息工程
班 级:1001学生姓名:学号(8位):0座机电话号码(34)
指导教师:设计起止时间:2011年月日~20年月日一. 设计目的
(一)通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法。
(二)学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
(三)为后续各门计算机课程的学习打下坚实基础,为毕业设计和以后工作打下必要基础。
1.熟悉C语言程序的编辑、编译链接和运行的过程,至少能够用一种编译器较熟练地编辑、编译及调试程序。
2.掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
3.熟练运用if语句和switch语句以及嵌套应用。涉及循环调用的,了解并掌握两种控制语句while和for语句。
4.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
5. 掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
6.掌握结构体类型变量、数组的定义和使用。
7.了解指针和链表的概念,掌握指针的定义和使用指针变量的方法以及链表的正确用法。灵活使用链表来储存学生信息。
8. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串
二. 设计内容
用所学过的C语言知识(文件,结构体数组,函数)编写一个学生通讯信息管理系统,并完成对数据的录入、添加、查找、修改、删除、保存、读取、输出等一系列操作。
三.概要设计
1.功能模块图;
对系统进行分析,给出系统结构图;主函数
(2.)功能模块说明1.输入模块:录入系统所需的全部数据信息,如学生姓名,电话及类型,并且将学生通讯信息按学生姓名首字母以字典升序排序(此处使用选择排序法);
2.存储模块:将录入的数据存储,用文件的形式将录的数据存储(运用了fopen、fclose、fprintf等函数);
3.添加模块:对所需存储的数据进添加操作(运用字符串比较函数strcmp,通过数组的赋值语句将学生信息仍按字典升序排序);
4.修改模块:根据学生姓名对需要更正的数据信息进行修改操作(采用字符串比较函数找到所要修改的学生,通过赋值语句完成学生信息的修改);
5.删除模块:对数据进行删除操作,根据学生姓名将对应记录删除(使用字符串比较函数strcmp找到所要删除的学生信息,通过赋值语句完成删除);
6.查询模块:按要求对数据进行查询,根据学生姓名将该学生通讯信息输出(使用字符串比较函数strcmp查询);
7.读取模块:从文件读取已保存的学生通讯信息(运用了fopen、fclose、fscanf等函数);
8.打印模块:输出学生通讯信息
四.详细设计
功能函数的调用关系图;YYNYNYNYNYNNYNYNHYNYNY
2.各功能函数的数据流程图;
(1):输入模块;
(2):存储模块;
(3):添加模块;
(4):修改模块;(5):删除模块;
(6):查询模块:(7):读取模块;
(8):打印模块:
3.重点设计及编码。
五.测试数据及运行结果
正常测试数据(3组)及运行结果程序的菜单:
;录入功能,录入人数为五个人:查找和添加学生通讯信息:删除学生通讯信息:修改学生通讯信息:文件的保存及读取:退出程序:
2.非正常测试数据(2组)及运行结果。文件读取失败:
六.调试情况,设计技巧及体会
1.对自己的设计进行评价,指出合理和不足之处,提出改进方案;
优缺点:对系统的很多方面考虑的不是很完善,使得系统在实际运用中可能不会很方便,自己的系统没有做密码登陆,使得安全性降低。缺少对数据的组合查询,及数据的降序排列,整体采用结构体数组,难度比链表的要低,但程序条理清晰,运行效率高,整体自己还是满意的,自己花了两周的时间,确实学到了不少东西,提高了自己的动手能力,自己还需不断的学习来提高自己。
2.对设计及调试过程的心得体会。
① 心得:
在写完第一遍程序后,首先进行了调试,仍是按照从某个模块来分析的,然后在整体执行,但是远远有很多不如意的地方,特别是对警告的调试比较麻烦,棘手,但是通过向老师请教,向同学请教最终还是解决的不少问题,后来经过分析,参照同学所设计的程序,自己的功能比较单调和简单,后来又添加了几个模块使其变得功能稍微有点完善。通过很多次的调试,我知道了在写程序的时候应该注重于细节,例如一个小的标点符号,就能使我们浪费一整天的时间来调试,所以细节非常重要;其次是要在编写程序之前应该想明白程序的功能