同学录课程设计报告正文

同学录程序设计

一、简介

1.设计目的:通过本课程设计,使我巩固C语言程序设计的基本概念、原理和技术,学会使用C语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。

2.问题的描述:建立一个程序实现对同学信息的建立,并可以实现增加,删除,修改,查询同学等信息的功能。

二、数据结构的设计:

struct student

{

char num[12];

char name[10];

char sex[2];

char birth[10];

char tele[10];

char addr[30];

struct student * next;

};

建立了同学的学号,姓名,性别,生日,地址,电话的信息的结构体。通过我的了解与c语言书后面的参考学习,我明白指针与结构体的融合可以实现一个链。这样可以实现对同学信息的建立一个个的连接下去。

三、功能(函数)设计:

功能模块有同学信息的建立,增加模块,删除模块,修改模块,查询模块,打印模块。这6个模块之间功能实现独立,可以很好地通过主函数调用个个不同的模块。模块间的耦合很小。

具体功能描述如下:

建立模块:

函数 creat实现输入学生的学号、姓名、性别、出生年月,,电话,地址信息。本函数的使用while循环这样通过与用户的交互可以跳出循环,“若想结束请输入no 若继续输入1”。满足条件循环便结束。且函数的模块化好,函数间数据传递少,这样函数可移植性好。

增加模块:

函数add可实现对同学信息的增加,通过对头结点的调用使用while循环通过指针移动找到要在哪位同学后面增加。通过对结构体内指针指向地址的修改要增加同学的信息增加。函数add来实现对同学信息的增加。

删除模块:

函数delete可实现同学信息的删除,通过对头结点使用while的循环找到需删除的结点的学号然后通过把查找到的信息删除。函数delete来实现对所需信息的删除。

修改模块:

函数update可实现对同学信息的修改,通过对头结点的调用使用while循环通过指针移动找到要删除的同学学号。通过对结构体内指针的修改把查找到的信息修改。函数update来实现对所需信息的修改。

打印模块:

函数print实现打印同学的信息。它通过对while循环实现对每个同学信息的打印输出。实现了同学信息的输出。

查询模块:

函数search通过头结点检索提示用户输入要搜索的学号,然后通过指向链表指针的操作实现搜索功能。且在整个函数中可用性好,可重复率高。实现很好的模块化设计。

main:

main函数通过各个函数模块的调用整合实现啦所需设计的问题。包括要建立的同学信息,要删除同学信息,要添加某个同学的信息,要查询某个同学信息,要修改学生信息,要打印所有同学信息;分别对应的函数及函数间调用如下:

creat(struct student *);delete(struct student *);add(struct student *); search (struct student *);print (struct student *head)); update(struct student *); print(struct student *);

函数之间的关系:

函数间关系图如下:

函数调用图如上,各个函数模块化设计,函数之间的数据传递少均通过函数间相互调用,把函数之间联系起来,这样函数的重用率高,设计代码的效率更高,用很好的实用性,很好的兼容性。

四、界面设计:

Main函数中通过switch语句对于所有的模块进行整合。用户通过键盘输入相对应的数字实现对同学录信息的建立。对同学信息的增加,删除,修改,查询,打印。

五、程序设计:

函数流程图:

creat函数 add 函数 delete函数update函数search 函数 print函数

main函数流程图如上

问题:

1.问题1

(1)问题描述:输入时字符数组输入不稳定。

(2)解决办法:在反复尝试中还没发现,后来在同学帮助下发现是一些基础问题,对于链表中数组字符的如scanf("%s",&p->name);这样是有问题的.虽然是一个会的人看似很简单的问题,但对于意念中存在看这样问题的人是很严重的。由此 要多多与同学交流,特别是编程的思想理念,很是重要。对于个人存在的基本被错误要通过多编程序发现,并及时改正。细节很决定成败。

2.问题2

(1)问题描述:对于界面该觉很不舒服

(2)解决办法