通讯录管理系统课程设计C语言.docx

上传人:b****4 文档编号:5415629 上传时间:2022-12-16 格式:DOCX 页数:23 大小:186.22KB
下载 相关 举报
通讯录管理系统课程设计C语言.docx_第1页
第1页 / 共23页
通讯录管理系统课程设计C语言.docx_第2页
第2页 / 共23页
通讯录管理系统课程设计C语言.docx_第3页
第3页 / 共23页
通讯录管理系统课程设计C语言.docx_第4页
第4页 / 共23页
通讯录管理系统课程设计C语言.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

通讯录管理系统课程设计C语言.docx

《通讯录管理系统课程设计C语言.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统课程设计C语言.docx(23页珍藏版)》请在冰豆网上搜索。

通讯录管理系统课程设计C语言.docx

通讯录管理系统课程设计C语言

XXXX大学计算机学院

课程设计报告

 

通讯录管理系统

 

姓名:

学院:

专业:

班级:

学号:

指导教师:

完成日期:

年月日

目录

1.第一章:

前言……………………………………………………………2

2.第二章:

概述……………………………………………………………3

3.第三章:

算法分析………………………………………………………5

4.第四章:

主要流程图……………………………………………………12

5.第五章:

程序源代码……………………………………………………13

6.第六章:

测试及输出结果………………………………………………20

7.第七章:

课程设计体会…………………………………………………23

8.第八章:

参考文献………………………………………………………24

 

第一章:

前言

通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

而C语言课程设计则对我们有以下几点帮助:

1.进一步掌握和利用C语言进行程序设计的能力;

2.进一步理解和运用结构化程序设计的思想和方法;

3.  初步掌握开发一个小型实用系统的基本方法;

4.  学会调试一个较长程序的基本方法;

5.  学会利用流程图或N-S图表示算法;

6.  掌握书写程设计开发文档的能力(书写课程设计报告)。

 

第二章:

概述

一、本课程设计的目的和意义

本课程设计可加深对课堂理论学习的理解,增强动手能力,以培养学生合作的能力,为毕业设计作好实践环节上的准备。

通讯录系统是在学校常见的计算机信息管理系统。

它的主要任务是对学生信息进行管理,如学生信息的输入、查询、修改、增加、删除,迅速准确地完成各种学生信息的统计和查询。

二、本课程设计主要内容

本系统有分7个功能:

(1)写入数据

(2)读取数据(3)追加数据(4)查找数据(5)备份数据(6)删除数据(7)还原数据。

其主要利用结构类型,指针,数组,函数等C语言知识来实现。

 

第三章:

算法分析

整个系统共分为8模块,主函数加7个子函数,从而实现7大功能:

写入数据,读取数据,追加数据,查找数据,备份数据,删除数据,还原数据;各个程序的算法分析如下:

(1)主函数main():

利用for(;;)和switch()实现主界面的显示与各选项的连接;

流程图如下:

 

(2)写入函数voidinput1():

利用文件的fwrite()语句来实现数据的保存;

流程图如下:

 

 

(3)读取数据voidread1():

利用文件的fread()语句来实现数据的读取;

流程图如下

 

 

(4)追加数据voidappend1():

利用fread()来读出文件里的数据,从而确定数据的数量,再在最后一条数据后通过

fopen(“文件名”,”ab”)来实现追加;

流程图如下:

 

 

(5)查找数据voidfind1()

通过strcmp()==0来实现数据的查找;

流程图如下:

 

 

(6)备份数据voidbackup1():

通过将数据复制到另一个文件里的方法来实现备份功能;

流程图如下:

 

 

 

(7)删除数据voiddelete1():

通过将后一行数据覆盖前一行数据的方法来实现删除功能;

流程图如下:

 

(8)还原数据comeback1():

通过将已备份的数据复制到原来的这个文件里的方法来实现还原的功能;

流程图如下:

 

 

第四章:

主要流程图

系统功能模块结构图:

各模块功能的分析:

(1)主函数:

可让用户选择用系统的哪个功能,从而去连接到相应的子函数;

(2)写入数据:

让用户输入通讯录里的内容,并将内容保存好;

(3)读取数据:

显示通讯录里已保存的数据;

(4)追加数据:

让用户在通讯录原有数据中,再加上新的数据;

(5)查找数据:

通过用户输入需要找的名字来找到相关资料;

(6)备份数据:

将已有数据进行备份;

(7)删除数据:

让用户删除想要删除的资料;

(9)还原数据:

使通讯录里的数据恢复到备份时的模样。

 

第五章:

程序源代码

#include

#defineN50

structaddress

{

charname[20];

charcity[15];

charemail[20];

unsignedlongphone;

unsignedlongzip;

}stu[N];

voidinput1()

{

FILE*fp;

inti;

charn;

printf("Becareful!

!

!

Doyousuretoinput?

(y/n):

\7\7\7\n");

n=getchar();

n=getchar();

if(n!

='y')

return;

else

{

fp=fopen("txl","wb");

for(i=0;i

{

printf("Inputthename(Inputexitreturn):

\n");

scanf("%s",stu[i].name);

if(strcmp(stu[i].name,"exit")==0)

return;

else

{

printf("Inputthecity:

\n");

scanf("%s",stu[i].city);

printf("Inputtheemail:

\n");

scanf("%s",stu[i].email);

printf("Inputthephone:

\n");

scanf("%ld",&stu[i].phone);

printf("Inputthezip:

\n");

scanf("%ld",&stu[i].zip);

fwrite(&stu[i],sizeof(structaddress),1,fp);

}

}

fclose(fp);

}

}

voidread1()

{

FILE*fp;

inti;

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

{

printf("Cannottoopenthetxl.\n");

return;

}

printf

("===========================================================================

=====\n");

printf("NameCityEmail

PhoneZip\n");

printf

("===========================================================================

=====\n");

for(i=0;fread(&stu[i],sizeof(structaddress),1,fp)!

=0&&i

{

printf("%15s%15s%20s%15ld%10ld\n",stu[i].name,stu

[i].city,stu[i].email,stu[i].phone,stu[i].zip);

}

getch();

fclose(fp);

}

voidappend1()

{

FILE*fp;

inti,sum=0;

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

{

printf("Cannottoopenthetxl.\n");

return;

}

for(i=0;fread(&stu[i],sizeof(structaddress),1,fp)!

=0&&i

sum+=1;

fclose(fp);

if((fp=fopen("txl","ab"))==NULL)

{

printf("Cannottoopenthetxl.\n");

return;

}

for(i=sum;i

{

printf("Inputthename(Inputexitreturn):

\n");

scanf("%s",stu[i].name);

if(strcmp(stu[i].name,"exit")==0)

return;

else

{

printf("Inputthecity:

\n");

scanf("%s",stu[i].city);

printf("Inputtheemail:

\n");

scanf("%s",stu[i].email);

printf("Inputethephone:

\n");

scanf("%ld",&stu[i].phone);

printf("Inputethezip:

\n");

scanf("%ld",&stu[i].zip);

fwrite(&stu[i],sizeof(structaddress),1,fp);

}

}

fclose(fp);

}

voidfind1()

{

FILE*fp;

inti,j;

chars[16];

printf("Inputthename:

\n");

scanf("%s",s);

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

{

printf("Cannottoopenthetxl.\n");

return;

}

for(i=0;fread(&stu[i],sizeof(structaddress),1,fp)!

=0&&i

if(strcmp(stu[i].name,s)==0)

{

printf

("===========================================================================

=====\n");

printf("NameCity

EmailPhoneZip\n");

printf

("===========================================================================

=====\n");

printf("%15s%15s%20s%15ld%10ld",stu[i].name,stu

[i].city,stu[i].email,stu[i].phone,stu[i].zip);

getch();

}

fclose(fp);

}

voidbackup1()

{

FILE*fp1,*fp2;

inti;

if((fp1=fopen("txl","rb"))==NULL)

{

printf("Cannottoopenthetxl.\n");

return;

}

fp2=fopen("txl2","wb");

for(i=0;fread(&stu[i],sizeof(structaddress),1,fp1)!

=0&&i

fwrite(&stu[i],sizeof(structaddress),1,fp2);

fclose(fp1);

fclose(fp2);

printf("Thebackupwasdone!

\n");

getch();

}

voiddelete1()

{

FILE*fp;

inti,j,n=0;

chars[16];

printf("Inputthename:

\n");

scanf("%s",s);

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

{

printf("Cannottoopenthetxl.\n");

return;

}

for(i=0;fread(&stu[i],sizeof(structaddress),1,fp)!

=0&&i

{

if(strcmp(stu[i].name,s)==0)

{

for(j=i+1;fread(&stu[j],sizeof(struct

address),1,fp)!

=0&&j

{

strcpy(stu[j-1].name,stu[j].name);

strcpy(stu[j-1].city,stu[j].city);

strcpy(stu[j-1].email,stu[j].email);

strcpy(stu[j-1].phone,stu[j].phone);

strcpy(stu[j-1].zip,stu[j].zip);

}

}

n+=1;

}

fclose(fp);

fp=fopen("txl","wb");

for(i=0;i

{

fwrite(&stu[i],sizeof(structaddress),1,fp);

}

fclose(fp);

printf("Thedatewasdelete.");

getch();

}

comeback1()

{

FILE*fp,*fp1;

inti;

if((fp1=fopen("txl2","rb"))==NULL)

{

printf("Cannottoopenthetxl.\n");

return;

}

fp=fopen("txl","wb");

for(i=0;fread(&stu[i],sizeof(structaddress),1,fp1)!

=0&&i

fwrite(&stu[i],sizeof(structaddress),1,fp);

fclose(fp1);

fclose(fp);

printf("Thecombackwasdone!

\n");

getch();

}

main()

{

inta;

for(;;)

{

printf("*************************\n");

printf("*************************\n");

printf("****\n");

printf("****\n");

printf("**

(1)Inputthedata**\n");

printf("**

(2)Readthetxl**\n");

printf("**(3)Appendthedata**\n");

printf("**(4)Findthedata**\n");

printf("**(5)Backupthedata**\n");

printf("**(6)Deletethedata**\n");

printf("**(7)Comebackthedata**\n");

printf("****\n");

printf("****\n");

printf("*************************\n");

printf("****\n");

printf("**(0)Exit**\n");

printf("****\n");

printf("*************************\n");

printf("*************************\n");

printf("%%%%%%%%%%%%%%%%%%%\n");

printf("%%\n");

printf("%ThisprogramismakeforWuFeng!

%\n");

printf("%%\n");

printf("%%%%%%%%%%%%%%%%%%%\n");

printf("Input0-7:

");

scanf("%d",&a);

switch(a)

{

case1:

input1();break;

case2:

read1();break;

case3:

append1();break;

case4:

find1();break;

case5:

backup1();break;

case6:

delete1();break;

case7:

comeback1();break;

case0:

printf("*******************

**\n");

printf("*

*\n");

printf("*Goodby~~~

*\n");

printf("*

*\n");

printf("*******************

**\n");

getch();exit();break;

default:

printf("Thenumberisnotin0-7!

\n");getch();break;

}

}

}_

 

第六章:

测试及输出结果

写入数据函数测试:

在主界面输入:

1

屏幕输出:

Becareful!

!

!

Doyousuretoinput?

(y/n):

输入:

y

屏幕输出:

Inputthename(Inputexitreturn):

输入:

liang

屏幕输出:

Inputthecity:

输入:

zhuhai

屏幕输出:

Inputtheemail:

输入:

liangi@

屏幕输出:

Inputthephone:

输入:

123456

屏幕输出:

Inputthezip:

输入:

519055

屏幕输出:

Inputthename(Inputexitreturn):

输入:

exit

回到主界面;

读取数据函数测试:

在主界面输入:

2

屏幕输出:

按下任意键回到主函数;

追加数据函数测试:

在主界面输入:

3

屏幕输出:

Inputthename(Inputexitreturn):

输入:

li

屏幕输出:

Inputthecity:

输入:

zhuhai

屏幕输出:

Inputtheemail:

输入:

li@

屏幕输出:

Inputthephone:

输入:

654321

屏幕输出:

Inputthezip:

输入:

519055

屏幕输出:

Inputthename(Inputexitreturn):

输入:

exit

回到主界面,

输入:

2

屏幕输出:

按任意键回到主函数;

查找数据函数测试:

在主界面输入:

4

屏幕输出:

Inputthename:

输入:

liang

屏幕输出:

按任意键返回主界面;

备份数据函数测试:

在主界面输入:

5

屏幕输出:

Thebackupwasdone!

按任意键返回主界面;

删除数据函数测试:

在主界面输入:

6

屏幕输出:

Inputthename:

输入:

li

屏幕输出:

Thedatewasdelete.

按任意键返回主界面,输入:

2

屏幕输出:

按任意键返回主界面;

还原数据函数测试:

在主界面输入:

7

屏幕输出:

Thecombackwasdone!

按任意键返回主界面,输入2

屏幕输出:

 

按任意键返回主界面;

退出程序:

在主界面输入:

0

屏幕输出:

按任意键退出程序。

 

第七章:

课程设计体会

一、对实验原理有更深的理解

通过该课程设计,掌握了什么是C语言程序设计,C语言程序设计的基本过程及其各阶段的基本任务,熟悉了C语言程序设计的流程图,了解了与C语言程序设计相关的技术,对课本上的知识有了更深的理解,课本上的知识是机械的,表面的。

通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

二、激发了学习的积极性

通过该课程设计,全面系统的理解了C语言程序设计构造的一般原理和基本实现方法。

把死板的课本知识变得生动有趣,激发了学习的积极性。

把学过的C语言程序设计的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

以前对于C语言程序设计的认识是模糊的,概念上的,现在通过自己动手做实验,对C语言程序设计的认识更加深刻。

课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,将不必要的命令去除。

在这次课程设计中,我就是按照实验指导的思想来完成。

加深了理解TC的内部功能及内部实现,培养实践动手能力和程序设计能力的目的。

 

第八章:

参考文献

[1]《C语言程序设计教程》

作者:

李凤霞

[2]《C程序设计(第三版)》

作者:

谭浩强

 

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

当前位置:首页 > 解决方案 > 学习计划

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

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