您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 通讯录管理系统数据结构课程设计(C语言)
1湖南工程学院课程设计报告通讯录管理系统姓名:李任学院:计算机与通讯学院专业:计算机科学与技术班级:计算机0803班学号:200803010326指导教师:刘长松完成日期:2010-9-132目录1.第一章:前言……………………………………………………………22.第二章:概述……………………………………………………………33.第三章:算法分析………………………………………………………54.第四章:主要流程图……………………………………………………125.第五章:程序源代码……………………………………………………136.第六章:测试及输出结果………………………………………………207.第七章:课程设计体会…………………………………………………238.第八章:参考文献………………………………………………………243第一章:前言通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。而C语言课程设计则对我们有以下几点帮助:1.进一步掌握和利用C语言进行程序设计的能力;2.进一步理解和运用结构化程序设计的思想和方法;3.初步掌握开发一个小型实用系统的基本方法;4.学会调试一个较长程序的基本方法;5.学会利用流程图或N-S图表示算法;6.掌握书写程设计开发文档的能力(书写课程设计报告)。4第二章:概述一、本课程设计的目的和意义本课程设计可加深对课堂理论学习的理解,增强动手能力,以培养学生合作的能力,为毕业设计作好实践环节上的准备。通讯录系统是在学校常见的计算机信息管理系统。它的主要任务是对学生信息进行管理,如学生信息的输入、查询、修改、增加、删除,迅速准确地完成各种学生信息的统计和查询。二、本课程设计主要内容本系统有分7个功能:(1)写入数据(2)读取数据(3)追加数据(4)查找数据(5)备份数据(6)删除数据(7)还原数据。其主要利用结构类型,指针,数组,函数等C语言知识来实现。5第三章:算法分析整个系统共分为8模块,主函数加7个子函数,从而实现7大功能:写入数据,读取数据,追加数据,查找数据,备份数据,删除数据,还原数据;各个程序的算法分析如下:(1)主函数main():利用for(;;)和switch()实现主界面的显示与各选项的连接;流程图如下:开始输入要运行的功能的序号判断用户的输入写入数据读取数据追加数据查找数据备份数据删除数据还原数据结束6(2)写入函数voidinput1():利用文件的fwrite()语句来实现数据的保存;流程图如下:开始输入y或n用if判断输入了y还是nyn输入要输入的资料将数据保存到指定的文件里结束7(3)读取数据voidread1():利用文件的fread()语句来实现数据的读取;流程图如下开始打开文件定义变量intifor(i=0;i数据的行数;i++)fread()读出i行数据结束8(4)追加数据voidappend1():利用fread()来读出文件里的数据,从而确定数据的数量,再在最后一条数据后通过fopen(“文件名”,”ab”)来实现追加;流程图如下:开始定义变量inti,sum=0;for(i=0;i数据行数;i++)读去i行的数据sum=sum+1for(i=sum;i通讯录数据上限;i++)将数据加入到文件里用户输入要增加的数据结束9(5)查找数据voidfind1()通过strcmp()==0来实现数据的查找;流程图如下:开始定义变量inti;输入要查找的名字for(i=0;i数据的行数;i++)判断strcmp(i行数据,输入名字)==0吗?YN输出该行数据结束10(6)备份数据voidbackup1():通过将数据复制到另一个文件里的方法来实现备份功能;流程图如下:开始打开保存数据的原文件打开一个新文件for(i=0;i数据的行数;i++)定义变量inti;读取原文件里第i行的数据将读到的数据写入到新文件里结束11(7)删除数据voiddelete1():通过将后一行数据覆盖前一行数据的方法来实现删除功能;流程图如下:(8)还原数据comeback1():判断strcmp(i行数据,输入名字)==0吗?Yfor(j=i+1;j数据的行数;j++)开始定义变量inti,j,n=0;for(i=0;i数据的行数;i++)输入要删除的名字将第j行数据覆盖第j-1行数据n=n+1Nfor(i=0;in-1;i++)写入第i行数据结束12通过将已备份的数据复制到原来的这个文件里的方法来实现还原的功能;流程图如下:开始打开保存数据的原文件打开备份了数据的备份文件for(i=0;i数据的行数;i++)定义变量inti;读取备份文件里第i行的数据将读到的数据写入到原文件里结束13第四章:主要流程图系统功能模块结构图:各模块功能的分析:(1)主函数:可让用户选择用系统的哪个功能,从而去连接到相应的子函数;(2)写入数据:让用户输入通讯录里的内容,并将内容保存好;(3)读取数据:显示通讯录里已保存的数据;(4)追加数据:让用户在通讯录原有数据中,再加上新的数据;(5)查找数据:通过用户输入需要找的名字来找到相关资料;(6)备份数据:将已有数据进行备份;(7)删除数据:让用户删除想要删除的资料;(9)还原数据:使通讯录里的数据恢复到备份时的模样。主函数写入数据读取数据追加数据查找数据备份数据删除数据还原数据14第五章:程序源代码#includestdio.h#defineN50structaddress{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;iN;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);}15}fclose(fp);}}voidread1(){FILE*fp;inti;if((fp=fopen(txl,rb))==NULL){printf(Cannottoopenthetxl.\n);return;}printf(================================================================================\n);printf(NameCityEmailPhoneZip\n);printf(================================================================================\n);for(i=0;fread(&stu[i],sizeof(structaddress),1,fp)!=0&&iN;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){16printf(Cannottoopenthetxl.\n);return;}for(i=0;fread(&stu[i],sizeof(structaddress),1,fp)!=0&&iN;i++)sum+=1;fclose(fp);if((fp=fopen(txl,ab))==NULL){printf(Cannottoopenthetxl.\n);return;}for(i=sum;iN;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;17}for(i=0;fread(&stu[i],sizeof(structaddress),1,fp)!=0&&iN;i++)if(strcmp(stu[i].name,s)==0){printf(================================================================================\n);printf(NameCityEmailPhoneZip\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&&iN;i++)fwrite(&stu[i],sizeof(structaddress),1,fp2);fclose(fp1);fclose(fp2);printf(Thebackupwasdone!\n);getch();}18voiddelete1(){FILE*fp;inti,j,n=0;chars[16];printf(Inputthename:\n);scanf(%s,s);if((fp=fopen(txl,rb))==NULL){printf(Cannottoopenthetxl.\n
本文标题:通讯录管理系统数据结构课程设计(C语言)
链接地址:https://www.777doc.com/doc-4252517 .html