C语言课程设计实验报告模板.docx

上传人:b****7 文档编号:9529415 上传时间:2023-02-05 格式:DOCX 页数:14 大小:133.91KB
下载 相关 举报
C语言课程设计实验报告模板.docx_第1页
第1页 / 共14页
C语言课程设计实验报告模板.docx_第2页
第2页 / 共14页
C语言课程设计实验报告模板.docx_第3页
第3页 / 共14页
C语言课程设计实验报告模板.docx_第4页
第4页 / 共14页
C语言课程设计实验报告模板.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C语言课程设计实验报告模板.docx

《C语言课程设计实验报告模板.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验报告模板.docx(14页珍藏版)》请在冰豆网上搜索。

C语言课程设计实验报告模板.docx

C语言课程设计实验报告模板

 

《程序设计基础》

课程设计报告

 

课程设计题目

通讯录管理系统

 

指导教师:

____李萍____

班级:

__0903班____

学生姓名:

2009100333_闫晓

2009100334皇倩

2009100335翟少平

2009100336谢成龙

2009100337姚琳

完成日期:

2010年9月16日

运城学院计算机科学与技术系

 

目录

一、课程设计目的3

二、课程设计内容3

三、总体设计4

四、详细设计4

五、调试与测试11

《C语言课程设计》

通讯录管理系统

一、课程设计目的

1、通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

2、通过课程设计,学会设计数据结构。

其中包括对结构数组、链表和数据文件等知识的运用。

3、通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。

4、通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过。

5、通过课程设计,开发一个中小型系统,掌握系统研发全过程。

6、通话课程设计,培养分析问题、解决实际问题的能力。

二、课程设计内容

设计一个实用的学生通讯录管理系统,能以简便高效的方式对通讯录进行管理和检索,具体要示:

(1)录入:

学生通讯录信息包括:

姓名,地址,电话等。

以结构数组或数据文件的形式存放通讯录信息。

(2)更新:

能插入、删除通讯录信息。

(3)浏览:

按姓名为序进行通讯录信息浏览。

(4)查询:

能实现指定联系人信息查询或指定课题组人员查询功能。

(5)系统以菜单方式工作,要求界面友好,易于操作。

三、总体设计

模块化设计

为实现系统功能,本程序主要分为六个模块。

它们分别为:

输入一个学生信息、删除一个学生信息、查询一个学生信息、插入一个学生信息、输出所有的学生信息、保存并且退出该程序。

这六个函数再通过主函数调用分别得以实现。

主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用通讯录的哪种功能。

然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能。

其它各个函数的功能分别如下:

creat函数用于对通讯录中的数据以文件的方式

进行读入及函数用于录入通讯录中学生的信息;

delete函数用于对通讯录中指定信息的删除;

search函数用于对通讯录中指定信息的查询;

append函数用于在通讯录中插入信息;

output函数用于对通讯录中所有信息进行浏览;

exit函数用于保存通讯录信息并且退出。

四、详细设计

(1)数据结构设计

本程序中,运用了多种数据结构。

首先对于学生通讯录中各项详细信息的记录用了结构数组的形式,然后又运用链表动态地分配内存单元,在creat函数中,把保存在数组中的值再赋值给其中的一个结点,通过指针的后移,把多个数据连成一个链,形成一个链表。

在这过程当中,还运用了数据文件的方式,每一次从终端输入的数据都以数据文件的形式保存到了磁盘。

对于主要数据结构的举例如下:

结构数组:

 structperson

{charname[10];

charaddr[30];

chartel[15];

};

(2)模块接口设计

由于本程序中存在很多指针,所以这个程序中被调用的函数都是空类型的,但这并没有影响最终结果的输出,反而使得函数调用的过程更加简便。

本程序执行的入口是main函数,然后在main函数中首先调用了creat函数,这就实现了对通讯录中的数据以文件的方式进行读入。

接下来在while语句中再套用switch语句实现对各个函数的调用。

最后,再从main函数中结束整个程序的运行。

其中涉及到被调用的函数有:

voidcreat33();

voidoutput34();

voidsearch34();

voidappend36();

voidmodify35();

voiddelete37();

(3)流程图

creat函数:

voidcreat33()

{

structpersonone;

longs1;

printf("\n请输入通讯簿名:

");

scanf("%s",filename);

if((fp=fopen(filename,"w"))==NULL)

{

printf("\n不能建立通讯簿!

");

exit();

}

fprintf(fp,"%-20s%-30s%-50s\n","姓名","电话号码","住址");

printf("\n请输入姓名、电话号码及住址(以0结束)\n");

scanf("%s",one.name);

while(strcmp(one.name,"0"))

{

scanf("%s%s",one.tel,one.addr);

fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);

scanf("%s",one.name);

}

fclose(fp);

}

output函数:

voidoutput34()

{

structpersonone;

if((fp=fopen(filename,"r"))==NULL)

{

printf("\n不能打开通讯簿!

");

exit();

}

printf("\n\n%20s\n","通讯簿");

while(!

feof(fp))

{

fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);

printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);

}

fclose(fp);

}

append函数:

voidappend36()

{

structpersonone;

if((fp=fopen(filename,"a"))==NULL)

{

printf("\n不能打开通讯簿!

");

exit();

}

printf("\n请输入添加的姓名、电话号码及住址\n");

scanf("%s%s%s",one.name,one.tel,one.addr);

fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);

fclose(fp);

}

search函数:

voidsearch34()

{

intk=0;

charnamekey[8];

structpersonone;

printf("\n请输入姓名:

");

scanf("%s",namekey);

if((fp=fopen(filename,"rb"))==NULL)

{

printf("\n不能打开通讯簿!

");

exit();

}

while(!

feof(fp))

{

fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);

if(!

strcmp(namekey,one.name))

{

printf("\n\n已查到,记录为:

");

printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);

k=1;

}

}

if(!

k)

printf("\n\n对不起,通讯簿中没有此人的记录。

");

fclose(fp);

modify函数

voidmodify35()

{

intm,k=0;

longoffset;

charnamekey[8];

structpersonone;

printf("\n请输入姓名:

");

scanf("%s",namekey);

if((fp=fopen(filename,"r+"))==NULL)

{

printf("\n不能打开通讯簿!

");

exit();

}

while(!

feof(fp))

{

offset=ftell(fp);

fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);

if(!

strcmp(namekey,one.name))

{

k=1;

break;

}

}

if(k)

{

printf("\n已查到,记录为:

");

printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);

printf("\n请输入新姓名、电话号码及住址:

");

scanf("%s%s%s",one.name,one.tel,one.addr);

fseek(fp,offset,SEEK_SET);

printf("%ld",ftell(fp));

fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);

}

else

printf("\n对不起,通讯簿中没有此人的记录。

");

fclose(fp);

}

delete函数

voiddelete37()

{

intm,k=0,flag;

longoffset1,offset2;

charnamekey[8],valid[4];

structpersonone;

printf("\n请输入姓名:

");

scanf("%s",namekey);

if((fp=fopen(filename,"r+"))==NULL)

{

printf("\n不能打开通讯簿!

");

exit();

}

while(!

feof(fp))

{

offset1=ftell(fp);

fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);

if(!

strcmp(namekey,one.name))

{

k=1;

break;

}

}

if(k)

{

printf("\n已查到,记录为");

printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);

printf("\n确实要删除,按1;不删除,按0:

");

scanf("%d",&m);

if(m)

{

fseek(fp,offset1,SEEK_SET);

fprintf(fp,"%-10s%-20s%-50s\n","","","");

}

}

else

printf("\n对不起,通讯簿中没有此人的记录。

");

fclose(fp);

}

 

五、调试与测试

(1)调试过程中的主要问题

由于本程序是分模块设计的,所以运行时选择完任务并且执行完任务后,又会继续回到用户选择界面,供用户继续选择任务并执行任务,整个程序以文件形式读写,所以每次都可对输入的数据进行保存。

对于本程序的调试运行,总体上情况良好。

(2)测试结果的分析与讨论

1用户界面

2输入学生信息

3查找学生信息

4删除学生信息

5添加学生信息

6浏览学生信息

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1