毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 报告 >> 正文

C语言程序上机实习报告电话簿管理系统

更新时间:2007-10-3:  来源:毕业论文

C语言程序上机实习报告电话簿管理系统|c语言程序代码编程小程序设计|c语言课程设计报告课程案例

一 需求分析

设计一个电话簿管理系统,该系统主要有7个功能:(1)输入原始姓名,电话和地址;(2)删除信息;(3)查找信息;(4)插入信息(5)对信息进行排序;(6)输出信息;(7)退出程序。

二 概要设计

1.本程序包含11个函数:

(1)主函数main()

(2)创建单链表create()

(3)显示菜单函数menu()

(4)链表输出函数output()

(5)结点输入函数input()

(6)插入元素函数insert()

(7)删除元素函数delete()

(8)查找函数select()

(9)操作选择函数f()

(10)动画函数dh()

(11)图形函数tp()

2.各函数功能:

(1)main()函数首先调用动画函数dh(),在程序开始运行时显示一幅动画,按任意键退出;

(2)进入图形函数tp(),显示一朵六色花,按任意键退出;

(3)运行create()函数创建一个由用户输入的单链表(其中包括姓名,电话,地址),并在输入同时调用插入函数insert()对其进行排序;

(4)调用menu()函数,显示操作菜单,由用户输入选择项;

(5)调用f()函数,根据用户输入的选项调用相应的函数,如果选项不合法,要求用户重复输入;

(6)insert()函数,将用户输入的一条记录顺序插入到链表中;

(7)delete()函数,删除与用户输入姓名的相关记录;

(8)select()函数,可以按照姓名或电话号码查找与用户输入相关记录;

(9)在执行以上任一操作后,返回主菜单,执行下一次操作或退出;

(10)在每次操作后,调用output()函数输出当前链表内容;

(11)input()函数,由用户输入一条记录;

三.详细设计



1.链表输入输出函数

因为程序中多次用到链表输入输出,所以设计一个输入函数input()用于输入链表元素,输出函数output()用于链表输出.链表输入函数用指针变量作为形参,调用时将实参地址赋予形参,从而达到目的.链表输出函数也采用指针变量作为形参,调用时将链表首地址赋予形参,通过循环输出链表每一个元素.

2.创建链表排序输出

创建链表采用队列链表,考虑到创建后要进行排序,因此在创建的同时对其进行排序,也就是按顺序创建链表.因此,设想在创建链表时采用插入函数insert(),对其每一项进行顺序插入,在创建链表的同时也进行了排序.这样链表的排序得以实现,而且思路清晰,方法简单.

3.程序代码

下面是以上两个模块的程序代码

1. 输入输出

input(struct tb *p)

{ flushall();/*清空键盘缓冲区,为输入大量数据作准备*/

gets(p->name);

gets(p->tel);

gets(p->add);

}

void output(struct tb *head)

{ struct tb *p;

printf("the linked list is:\n");

for(p=head;p!=NULL;p=p->next)

printf("%-20s%-15s%-45s\n",p->name,p->tel,p->add);/*循环输出链表内容*/

}

2. 创建排序

struct tb *create(void)

{ struct tb *head,*q;

int i;

printf("This is a telenumber book!\nFirst,you should input %d records!\nPress \"enter\" to end the input of the \"name\",\"phonenumber\" and \"address\"!\n",N);

head=NULL;/*创建一个空链表*/

for(i=0;i<N;i++)

{ q=(struct tb *)malloc(L);

input(q);

head=insert(head,q);

}/*通过循环调用插入函数insert()创建顺序链表*/

return head;

}



四.调试分析

1.输入输出

考虑到电话号码可能包含区号,需要将区号和电话号码分隔开来, 由于各人习惯不同,所以将电话号码设计为字符串.这样,就可以采用习惯的分隔符将电话号码和区号分隔开来.但是这样以后,输入项都是大量字符,所以还得加上flushall()函数清空键盘缓冲区,为输入大量数据作准备.这样就解决了gets()函数不能输入的问题.输出链表关键要控制好循环和结束条件.先将指针p指向头指针head,通过p=p->next作为循环条件,而结束条件用p!= NULL 来控制.这样,每次调用output()函数,将头指针传给形参,通过循环就可以输出链表内容.

2.创建排序

创建链表采用队列式,关键是控制尾指针.由于考虑到要排序,所以为了简化程序实现,所以采用插入函数创建链表.创建链表时的每一个输入项都作为新元素插入到链表中,而插入函数是在有序链表的基础上设计的,并且插入也是顺序插入,因此,通过循环调用插入函数就可以实现创建链表和排序.

五.改进设想

1.用户输入数据时应有相应的提示,输入错误时应提示重新输入.添加帮助信息,在用户遇到问题时可以查看相应的帮助文件.输出时也应该使用比较规范的格式.

2. 创建链表应该可以从外部文件中读取信息.排序应设计相应独立的函数,以供其它函数独立调用,而且具有通用性.

3.整个程序初值应该从外部文件中调用,操作结果应该可以保存在外部文件中,以供下次运行时调用.

六.测试结果

1.建立单链表

输入 zhan san

12345678

shanghai

li si

021-87654321

ligong

wang wu

13579

guangzhou

zhao liu

24680

beijing

ma qi

12345

xianggang

2.排序

输出 li si 021-87654321 ligong

ma qi 12345 xianggang

wang wu 13579 guangzhou

zhang san 12345678 shanghai

zhao liu 24680 beijing

3.查询

输入 1

输入 1

输入 li si

输出 li si 021-87654321 ligong

输入 1

输入 2

输入 12345

输出 ma qi 12345 xianggang

4.插入

输入 2

输入 ba jie 123 taiyuan

输出 ba jie 123 taiyuan

li si 021-87654321 ligong

ma qi 12345 xianggang

wang wu 13579 guangzhou

zhang san 12345678 shanghai

zhao liu 24680 beijing

5.删除

输入 3

输入 ba jie

输出 li si 021-87654321 ligong

ma qi 12345 xianggang

wang wu 13579 guangzhou

zhang san 12345678 shanghai

zhao liu 24680 beijing

输入 5

输出 “菜单”

输入 4

退出程序

 

C语言程序上机实习报告电话簿管理系统下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。