1、 《C语言程序设计》 课程设计报告书 题目:通讯录程序设计 系 别:计算机工程系 专 业:计算机网络 设计班级:网12 姓 名:胡玉婷 学 号: 指导教师:耀军、新爱 二○一一年六月七日 一、课程设计(论文)的容 编写学生通讯录程序,包括以下功能模块: 1、通讯录的每一条信息包括学号、、(字符数组)。 2、输入功能:可以一次完成若干条信息的输入。 3、显示功能:完成全部通讯录信息的显示。 4、查找功能:完成按查找通讯信息,并显示。 5、增加功能:
2、增加通讯信息。 6、删除功能:完成按删除通讯信息。 7、将通讯录信息存在文件addrbook中。 8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观! 二、课程设计(论文)的要求与数据 1、用C语言实现系统; 2、利用结构体数组或动态链表实现学生通讯录的数据结构设计; 3、系统具有增加,查询,删除等基本功能; 4、系统的各个功能模块要求用函数的形式实现; 5、将通讯录信息存在文件中; 6、完成设计任务并编写课程设计说明书。 7、每个同学提交源程序(*.c),可执行程序(*.exe),保存通讯录信息的文件addrbook,课程设计说明书电
3、子文档(word)。 每班交一光盘,包含所有学生的资料(按学号排序),每个学生的资料放在以学号命名的文件夹中。 三、课程设计(论文)应完成的工作 1.完成程序的编制、调试,并能正确运行。 2.完成课程设计说明书的编写,其容包括 (1)封面 (2)任务书 (3)目录 (4)正文 (1)总体设计(包含几大功能模块)。 (2)详细设计(各功能模块的具体实现算法——流程图) (3)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。 (4)调试分析(包含各模块的测试用例,与测试结果。) (5)总结(课程设计完成了哪些功能,还有哪些地方需要改进,与通过一周的课程
4、设计有何收获,调试程序的体会等) (5)参考文献 四、应收集的资料与主要参考文献 [1] 谭浩强著. C程序设计(第三版). :清华大学,2005 [2] 谭浩强著. C程序设计题解与上机指导. :清华大学,2005 目 录 一、总体设计(包含几大功能模块)4 二、详细设计(各功能模块的具体实现算法——流程图)5 第一个函数为输入函数:5 第二函数为显示函数:5 第三个函数为查找函数:5 第四为排序函数6 第五为插入函数:6 第六删除函数.7 三、数据结构设计描述,各模块(函数)的功能介绍,参数说明等9 (一):结构设计
5、描述9 (二)功能介绍9 四、调试分析(包含各模块的测试用例,与测试结果)。12 五、总结(课程设计完成了哪些功能,还有哪些地方需要改进,与通过一周的课程设计有何收获,调试程序的体会等)16 六、参考文献16 一、总体设计(包含几大功能模块) 1、 输入功能 2、 显示功能 3、 查找功能 (1)用学号查找 (2)用查找 4、 删除功能 5、 插入功能 6、 排序功能 7、 复制功能 二、详细设计(各功能模块的具体实现算法——流程图) 第一个函数为输入函数:N-S流程图: 定义整型变量i,j. for(i
6、0;i 7、义整型I,j,n,结构体变量struct student temp
打开文件
将文件数据读出 并确定记录个数n
关闭文件
for(I=0;I 8、入
打开文件 stu .dat
将文件数据读出 并确定记录个数n
关闭文件
使新记录赋给stu[n],n=n+1
打开文件
for(i=0;i 9、stu[i].name)==0
T
F
for(j=i;j 10、生数据资料。
主函数,main()前不加void编译系统会提示funstion should return a value,不过不会出错。在主函数开头先声明子函数,设一界面菜单,用do-while语句实现不断执行直到选择退出。
(二)功能介绍
1输入功能
可以一次完成若干条信息的输入。并将输入的数据保存在文件stu.dat中.
2显示功能
如,将上面的输入的数据显示出来:
*********************************************************
No. name phone
*********************** 11、
06693宋昌恩 234567
06694 王淑其 234568
06695王壮辉 234569
06696 吴浩龙 234570
*********************************************************
3查找功能
在主函数开头先声明子函数,设一界面菜单,用do-while语句实现不断执行直到选择学号或查找、还是退出。
(1) 用学号查找
定义字符型数组用于输入要查找的学生学号。
如:输入学号:06694
显示
Input num:0 12、6694
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
The record you search is
:No. name phone
06694 王淑其 234568
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
(2)用插入功能
用查找该学生的资料:(跟学号一样都是字符型,在比较输入的/学号都是用strcmp()实现的。原理一样。只是把学号换 13、成。如:输入: 打印结果跟上一题一样。)
如输入 王淑其
显示
Input name:王淑其
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
The record you search is
:No. name phone
06694 王淑其 234568
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
4 删除功能
按删除 若有两个一样的 则两 14、个一起删除;删除后把新的记录写人文件并显示出来 ;
5 增加功能
可无限的增加记录;记录后把新的记录写人文件并显示出来 ;
6 排序功能
可根据学好由小到大排序;排序后新的记录写人文件并显示出来 ;
原来的记录为:
显示:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
No. name phone
l * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
06694 15、 王淑其 234568
06693宋昌恩 234567
06695王壮辉 234569
06696 吴浩龙 234570
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
排序后的结果显示:
No. name phone
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
06693宋昌恩 234567
06694 王淑其 234568
06695王壮辉 23456 16、9
06696 吴浩龙 234570
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
7 复制功能
可把当前记录从stu.dat复制到别的文件;
四、调试分析(包含各模块的测试用例,与测试结果)。
1输入功能
请选择(0~7):
0
Input score of student1:
NO.:06694
name:王淑其
phone:234568
Input score of student2:
NO.:06693
name:宋昌恩
phone:23 17、4567
Input score of student3:
NO.:06695
name:王壮辉
phone:234569
Input score of student4:
NO.:06696
name:吴浩龙
phone:234570
Input score of student5:
NO.:00
name:
phone:234571
2显示功能
请选择(0~7):
1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
No. nam 18、e phone
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
06694 王淑其 234568
06693 宋昌恩 234567
06695 王壮辉 234569
06696 吴浩龙 234570
00 234571
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3查找功能
请选择(0~7):
2
* * * * * * * * MEN 19、U* * * * * * * * * * * * * * * * * * * * * * * * * * * *
8----------------------用学号查找.
9----------------------用查找
10---------------------安全退出.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
(1)用学号查找
请选择(8~10):
8
Input num:06694
* * * * 20、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
The record you search is
:No. name phone
06694 王淑其 234568
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
(2)用查找
请选择(8~10):
9
Input name:王淑其
* * * * * * * * * * * * * * * * * 21、 * * * * * * * * * * * * * * * * * * * * *
The record you search is
:No. name phone
06694 王淑其 234568
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
4删除功能
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
请选择(0~7):
3
In 22、put name deleted:
Now the list is:
?* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
No. name phone
06694 王淑其 234568
06693 宋昌恩 234567
06695 王壮辉 234569
06696 吴浩龙 234570
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 23、 *
5插入功能
请选择(0~7):
4
NO.:06697
name:丹萍
phone:234572
Now the new list is:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
No. name phone
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
06694 王淑其 234568
06693 宋昌恩 24、 234567
06695 王壮辉 234569
06696 吴浩龙 234570
06697 丹萍 234572
6排序功能
请选择(0~7):
5
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
No. name phone
06693 宋昌恩 234567
06694 王淑其 234568
06695 王壮辉 234569
06696 吴浩龙 234570
06697 丹萍 234572
25、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
五、源程序代码:
#include 26、)
{void enter(void);
void list(void);
void search(void);
void Delete(void);
void sort(void);
void add(void);
void copy(void);
int m;
do
{printf("* * * * * * * * * ** * * * *MENU * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 0--------输入资料\n");
p 27、rintf(" 1--------显示资料\n");
printf(" 2--------查找已有的记录\n");
printf(" 3--------删除一个记录\n");
printf(" 4--------添加记录\n");
printf(" 5--------重新排序\n");
printf(" 6------- 复制\n");
printf(" 7--------安全退出\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * 28、 * * * * * * * * * * * *\n");
printf("\n请选择(0~7):\n");
scanf("%d",&m);
switch(m)
{case 0:enter();break;
case 1:list();break;
case 2:search();break;
case 3:Delete();break;
case 4:add();break;
case 5:sort();break;
case 6:copy();break;
ca 29、se 7:exit(0);
default:printf("input error.\n");break;
}
}while(m!=7);
}
void enter(void)
{FILE*fp;
int i,j;
for(i=0;i 30、me);
printf("phone:");
scanf("%s",stu[i].phone);
}
if((fp=fopen("stu.dat","wb"))==NULL)
{printf("Can not open the file.\n");
exit(0);
}
for(i=0;i 31、t(void)
{
FILE*fp;
int i,n;
if((fp=fopen("stu.dat","rb"))==NULL)
{printf("Can not open the file.\n");
exit(0);
}
for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++;
n=i;
for(i=0;i 32、 * * * * * * * * * * * * *\n");
printf("No.\tname\tphone\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
for(i=0;i 33、 * * * * * * * * * *\n");
}
void search(void)
{void sea_num(void);
void sea_name(void);
int b;
do{
printf("* * * * * * * * * * * * * *MENU * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 8----------------------用学号查找.\n" );
printf(" 9----------------------用查 34、找.\n");
printf(" 10---------------------安全退出.\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\n请选择(8~10):\n");
scanf("%d",&b);
switch(b)
{case 8:sea_num();break;
case 9:sea_name();break;
case 10:break 35、
default:printf("input error.\n");break;
}
}while(b!=10);
printf("exit.\n");
}
void sea_num(void)
{FILE*fp;
int i,flag,n;
char num[10];
if((fp=fopen("stu.dat","rb"))==NULL)
{printf("Can not open the file.\n");
exit(0);
}
for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i+ 36、
n=i;
for(i=0;i 37、rch is\n:");
printf("No.\tname\tphone\n");
printf(" %s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone);
flag=1;
}
}
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
if(flag!=1)printf("Not found the record\n");
}
void sea_name(void)
{F 38、ILE*fp;
int i,j,flag,n;
char name[10];
if((fp=fopen("stu.dat","rb"))==NULL)
{printf("Can not open the file.\n");
exit(0);
}
for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++;
n=i;
for(i=0;i 39、for(flag=0,i=0;i 40、ne);
flag=1;
}
}
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
if(flag!=1)printf("Not found the record\n");
}
void sort(void)
{FILE*fp;
int i,j,n;
struct student temp;
if((fp=fopen("stu.dat","rb"))==NULL)
{printf("Can n 41、ot open the file.\n");
exit(0);
}
for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++;
n=i;
for(i=0;i 42、mp;
}
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("No.\tname\tphone\n");
for(i=0;i 43、
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
fclose(fp);
}
void add(void)
{
int i,j,n;
FILE*fp;
struct student s;
printf("NO.:");
scanf("%s",s.num);
printf("name:");
scanf("%s",s.name);
printf("phone:");
scanf("%s",s.phone); 44、
if((fp=fopen("stu.dat","rb"))==NULL)
{printf("\nCan not open the file.\n");
exit(0);
}
for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++;
n=i;
for(i=0;i 45、tu[n].phone,s.phone);
n=n+1;
printf("\nNow the new list is:\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("No.\tname\tphone\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
fp=fopen("s 46、tu.dat","wb");
for(i=0;i 47、 file.\n");
exit(0);
}
for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++;
n=i;
printf("\nInput name deleted:");
scanf("%s",name);
for(flag=1,i=0;i 48、
strcpy(stu[j].phone,stu[j+1].phone);
}
flag=0;
n=n-1;
}
}
printf("\nNow the list is:\n?");
fp=fopen("stu.dat","wb");
for(i=0;i 49、 * * * * * * * * * * * * * * * * * *\n");
printf("No.\tname\tphone\n");
for(i=0;fread(&stu[i],LEN,1,fp)!=0;i++)
printf("%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone);
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
if(flag)
printf("\ 50、nNot found the record\n");
fclose(fp);
}
void copy(void)
{FILE * in,* out;
if((in=fopen("stu.dat","rb"))==NULL)
{printf("Can not open the infile.\n");
exit(0);
}
if((out=fopen("stu2.dat","wb"))==NULL)
{printf("Can not open the outfile.\n");
exit(0);
}
wh






