最新版通讯录管理系统数据结构毕业课程设计C语言.docx
《最新版通讯录管理系统数据结构毕业课程设计C语言.docx》由会员分享,可在线阅读,更多相关《最新版通讯录管理系统数据结构毕业课程设计C语言.docx(18页珍藏版)》请在冰点文库上搜索。
最新版通讯录管理系统数据结构毕业课程设计C语言
湖南工程学院
课程设计报告
通讯录管理系统
姓名:
李任
学院:
计算机与通讯学院
专业:
计算机科学与技术
班级:
计算机0803班
指导教师:
刘长松
目录
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)还原数据:
使通讯录里的数据恢复到备份时的模样。
第五章:
程序源代码
#includeprintf("Becareful!
!
!
Doyousuretoinput?
(yn):
\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&&isum+=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&&iif(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&&ifwrite(&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&&ifwrite(&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?
(yn):
输入:
y
屏幕输出:
Inputthename(Inputexitreturn):
输入:
liang
屏幕输出:
Inputthecity:
输入:
zhuhai
屏幕输出:
Inputtheemail:
屏幕输出:
Inputthephone:
输入:
123456
屏幕输出:
Inputthezip:
输入:
519055
屏幕输出:
Inputthename(Inputexitreturn):
输入:
exit
回到主界面;
读取数据函数测试:
在主界面输入:
2
屏幕输出:
按下任意键回到主函数;
追加数据函数测试:
在主界面输入:
3
屏幕输出:
Inputthename(Inputexitreturn):
输入:
li
屏幕输出:
Inputthecity:
输入:
zhuhai
屏幕输出:
Inputtheemail:
屏幕输出:
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程序设计(第三版)》
作者:
谭浩强
[3]《数据结构教程(第三版)》