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

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

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

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

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

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

Preparedon24November2020

 

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

***科技大学

本科生课程设计说明书

题目:

C语言课程设计

——通讯录管理系统

学生姓名:

**

学号:

***

专业:

软件工程

班级:

1

指导教师:

**

内蒙古科技大学课程设计任务书

课程名称

C语言课程设计

设计题目

通讯录管理系统

指导教师

***

时间

——

一、教学要求

1.巩固和加深学生对C语言课程的基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.掌握书写程序设计说明文档的能力5.提高运用C语言解决实际问题的能力

二、设计资料及参数

每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。

通讯录管理系统

现有一批通讯录的数椐,要求输入计算机并存放在内存中,然后增加若干个新通讯录的记录,并可输出通讯录清单,实现文件存盘和读入文件进行修改的功能。

通讯录的基本信息包括编号,姓名,电话号码,QQ号码,电子邮件,通讯地址。

要求设计菜单来调用其各功能模块:

v新建文件、打开文件、保存信息到文件

v输入记录、输出记录

v查询记录(至少具有两种查询方式,例如以姓名查询和以电话号码查询)

v修改、插入和删除记录

三、设计要求及成果

1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)

2.写出详细设计说明(至少包括功能实现分析和模块流程图)

3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)

4.设计完成的软件要便于操作和使用

5.设计完成后提交课程设计报告(请严格按照模板进行排版)

四、进度安排

第一天选择课程设计题目,分析课题的要求

第二天编程

第三天编程及调试

第四天写课程设计报告

第五天提交课程设计报告(打印稿及电子稿)

五、评分标准

1.根据平时上机考勤、表现和进度,教师将每天点名和检查

2.根据课程设计完成情况,必须有可运行的软件。

3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。

六、建议参考资料

1.《C语言程序设计》,谭浩强,清华大学出版社

2.《C语言程序设计课程设计》,刘振安,机械工业出版社。

 

第一章需求分析

1.1引言

通过程序设计,达到理论与实际应用相结合,提高对信息管理系统的分析能力,能够根据实际应用,初步实现系统功能模块及算法的设计,通过编程基本实现信息管理系统。

1.2任务概述

1.采用结构体的形式对数据进行输入输出。

2.可以对通讯录进行简单的排序,筛选,删除。

3.可以对任意信息就行修改。

4.可以把数据已文件的形式输入输出。

5.任意浏览信息。

1.3数据描述

以所示的文本数据位初始数据进行简单操作,也可另行添加。

1.4功能需求

实现以上功能需求。

1.5性能需求

1.能够进行简单的数据处理。

2.具有对新信息处理打印打能力。

1.6运行需求

1.输入个人信息时以例如按照“编号、姓名、年龄、电话号码、通讯地址、电子邮箱”的顺序输入。

2.输入时编号年龄、电话号码、通讯地址、电子邮箱以数字格式输入,输入姓名以文字输入。

3.以(Y/N)形式判断时,仅限N或者n为否,其他字符真。

4.进入排序功能后,要想见排序信息,到主菜单下见浏览信息功能。

1.7任务计划

1.样例输入和输出

2.本通讯录管理程序,可以对数据进行输入输出,集排序,修改,打印,删除等功能。

下面以上述数据描述的数据为测试数据进行简单输入输出。

——1.未排序前的信息

4).删除界面:

删除后,通讯录里的显示记录:

5).查询界面:

以姓名查询方式为例:

6).修改界面:

修改后,通讯录里的显示记录:

7).保存界面:

文件截图:

第二章概要设计

2.1总体设计

添加:

可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。

显示:

可以以表格形式输出所有通讯录里的记录

删除:

输入欲删除的那个人的名字后,会自动删除他(她)的记录内容

查询:

可以选择用姓名、电话、地址三种方式查询

修改:

输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改

保存:

,输入文件名(带后缀名)后,即可将通讯录信息保存到文件

2.2数据类型设计(或数据结构设计)

typedefstruct

{

charscore;/*编号*/

charname[10];/*姓名*/

charnum[15];/*号码*/

charemail[20];/*邮箱*/

charage[8];/*年龄*/

charadds[20];/*住址*/

}Person;

以结构体数组类型输入数据。

2.3接口设计

表:

函数列表

函数名

函数首部

函数功能

intmenu_select()

void

运行界面

intInput

(Personper[],intn)

int

输入函数

voidDisplay

(Personper[],intn)

Void

输出函数

intDelete_a_record

(Personper[],intn)

int

删除数据

voidQuery_a_record

(Personper[],intn)

void

查询数据

voidChange

(Personper[],intn)

void

更改数据

voidWritetoText

(Personper[],intn)

void

把数据写到文件

2.4运行界面设计

voidmain()/*主函数*/

{

intn=0;

for(;;)

{

switch(menu_select())

{

case1:

printf("\n\t添加记录到通讯录\n");/*添加记录*/

n=Input(pe,n);

break;

case2:

printf("\n\t\t\t通讯录记录表\n");/*显示记录*/

Display(pe,n);

break;

case3:

printf("\n\t从通讯录中删除记录\n");

n=Delete_a_record(pe,n);/*删除记录*/

printf("\t");

system("pause");

break;

case4:

printf("\n\t在通讯录中查找记录\n");

Query_a_record(pe,n);/*查找记录*/

printf("\t");

system("pause");

break;

case5:

printf("\n\t修改通讯录中的记录\n");

Change(pe,n);/*修改数据*/

printf("\t");

system("pause");

break;

case6:

printf("\n\t保存功能\n");

WritetoText(pe,n);/*保存数据*/

printf("\t");

system("pause");

break;

case0:

printf("\n\t\t谢谢使用,再见!

\n");/*结束程序*/

printf("\n\t\t");

system("pause");

exit(0);

}

}

}

以switch为关键控制选着要调用函数的开关,然后以主菜单为主界面,其他功能为扩展界面来运行通讯录管理系统。

主菜单代码为:

intmenu_select()

{

charc;

do{

system("cls");

printf("\t\t*****通讯录*****\n");

printf("\t\t|----------------------------------|\n");

printf("\t\t│1.添加记录│\n");

printf("\t\t│2.显示记录│\n");

printf("\t\t│3.删除记录│\n");

printf("\t\t│4.查询记录│\n");

printf("\t\t│5.修改记录│\n");

printf("\t\t│6.保存记录│\n");

printf("\t\t│0.退出程序│\n");

printf("\t\t\|----------------------------------|n");

printf("\t\t请您选择(0-6):

");

c=getchar();

}while(c<'0'||c>'6');

return(c-'0');

}

如图所示为主要运行界面:

第三章详细设计

3.1输入模块设计

intInput(Personper[],intn)

{

inti=0;

charsign,x[10];

while(sign!

='n'&&sign!

='N')

{

printf("\t编号:

");

scanf("\t%d",&per[n+i].score);

printf("\t姓名:

");

scanf("\t%s",per[n+i].name);

printf("\t年龄:

");

scanf("\t%s",per[n+i].age);

printf("\t电话号码:

");

scanf("\t%s",per[n+i].num);

printf("\t通讯住址:

");

scanf("\t%s",per[n+i].adds);

printf("\t电子邮箱:

");

scanf("\t%s",per[n+i].email);

gets(x);

printf("\n\t是否继续添加(Y/N)");

scanf("\t%c",&sign);

i++;

}

return(n+i);

}

3.2输出模块设计

voidDisplay(Personper[],intn)

{

inti;

printf("----------------------------------------------------------------------\n");/*格式*/

printf("编号姓名年龄电话号码通讯地址电子邮箱\n");

printf("----------------------------------------------------------------------\n");

for(i=1;i

{

printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email);

if(i>1&&i%10==0)

{

printf("\t-----------------------------------\n");

printf("\t");

system("pause");

printf("\t-----------------------------------\n");

}

}

printf("----------------------------------------------------------------------\n");

system("pause");

}

3.3查找模块设计

voidQuery_a_record(Personper[],intn)

{

intm;

printf("\t\n请选择查询方式:

\n");

printf("\t┌──────┐\n");

printf("\t│1------姓名│\n");

printf("\t│2------电话│\n");

printf("\t│3------地址│\n");

printf("\t│4------返回│\n");

printf("\t└──────┘\n");

printf("请选择:

");

scanf("%d",&m);

while(m!

=1&&m!

=2&&m!

=3&&m!

=4)

{

printf("输入错误,请重新选择:

");

scanf("%d",&m);

}

if(m==1)

{

chars[20];

inti=0;

printf("\t请输入想查询的姓名:

");

scanf("\t%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t电子邮箱:

%s\n",per[i].email);

};

if(m==2)

{

chars[20];

inti=0;

printf("\t请输入想查询的电话:

");

scanf("\t%s",s);

while(strcmp(per[i].num,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t电子邮箱:

%s\n",per[i].email);

};

if(m==3)

{

chars[20];

inti=0;

printf("\t请输入想查询的地址:

");

scanf("\t%s",s);

while(strcmp(per[i].adds,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t电子邮箱:

%s\n",per[i].email);

};

}

3.4删除模块设计

intDelete_a_record(Personper[],intn)

{

chars[20];

inti=0,j;

printf("\t请输入想删除记录中的名字:

");

scanf("%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return(n);

}

for(j=i;j

{

strcpy(per[j].num,per[j+1].num);

strcpy(per[j].name,per[j+1].name);

strcpy(per[j].age,per[j+1].age);

strcpy(per[j].adds,per[j+1].adds);

strcpy(per[j].email,per[j+1].email);

per[j].score=per[j+1].score;

}

printf("\t\t\t已经成功删除!

\n");

return(n-1);

}

3.5更改模块设计

voidChange(Personper[],intn)

{

chars[20];

inti=0;

printf("\t请输入想修改的记录中的名字:

");

scanf("%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t编号:

");

scanf("\t%d",&per[i].score);

printf("\t姓名:

");

scanf("\t%s",per[i].name);

printf("\t年龄:

");

scanf("\t%s",per[i].age);

printf("\t电话号码:

");

scanf("\t%s",per[i].num);

printf("\t通讯住址:

");

scanf("\t%s",per[i].adds);

printf("\t电子邮箱:

");

scanf("\t%s",per[i].email);

printf("\t修改成功!

");

}

保存模块设计

voidWritetoText(Personper[],intn)

{

inti=0;

FILE*fp;/*定义文件指针*/

charfilename[20];/*定义文件名*/

printf("\t保存到文件\n");/*输入文件名*/

printf("\t请输入所保存的文件名:

");

scanf("\t%s",filename);

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

{

printf("\t无法打开文件\n");

system("pause");

return;

}

fprintf(fp,"******************************************通讯录******************************************\n");

fprintf(fp,"编号姓名年龄电话号码通讯地址电子邮箱\n");

fprintf(fp,"------------------------------------------------------------------------------------------\n");

while(i

{

fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);

i++;

}

fprintf(fp,"------------------------------------------------------------------------------------------\n");

fprintf(fp,"***************************************共有%d条记录****************************************\n",n);

fclose(fp);/*关闭文件*/

printf("保存成功!

\n");

}

voidmain()/*主函数*/

{

intn=0;

for(;;)

{

switch(menu_select())

{

case1:

printf("\n\t添加记录到通讯录\n");/*添加记录*/

n=Input(pe,n);

break;

case2:

printf("\n\t\t\t通讯录记录表\n");/*显示记录*/

Display(pe,n);

break;

case3:

printf("\n\t从通讯录中删除记录\n");

n=Delete_a_record(pe,n);/*删除记录*/

printf("\t");

system("pause");

break;

case4:

printf("\n\t在通讯录中查找记录\n");

Query_a_record(pe,n);/*查找记录*/

printf("\t");

system("pause");

break;

case5:

printf("\n\t修改通讯录中的记录\n");

Change(pe,n);/*修改数据*/

printf("\t");

system("pause");

break;

case6:

printf("\n\t保存功能\n");

WritetoText(pe,n);/*保存数据*/

printf("\t");

system("pause");

break;

case0:

printf("\n\t\t谢谢使用,再见!

\n");/*结束程序*/

printf("\n\t\t");

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

当前位置:首页 > 农林牧渔 > 林学

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

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