当前位置:文档之家› C语言课程设计通讯录管理系统

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

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

C语言课程设计通讯录

管理系统

文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)

***科技大学

本科生课程设计说明书

题目:C语言课程设计

——通讯录管理系统

学生姓名:**

学号:***

专业:软件工程

班级:1

指导教师:**

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

一、教学要求

1. 巩固和加深学生对C语言课程的基本知识的理解和掌握

2. 掌握C语言编程和程序调试的基本技能

3. 利用C语言进行基本的软件设计

4. 掌握书写程序设计说明文档的能力

5. 提高运用C语言解决实际问题的能力

二、设计资料及参数

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

通讯录管理系统

现有一批通讯录的数椐,要求输入计算机并存放在内存中,然后增加若干个新通讯录的记录,并可输出通讯录清单,实现文件存盘和读入文件进行修改的功能。通讯录的基本信息包括编号,姓名,电话号码,QQ号码,电子邮件,通讯地址。要求设计菜单来调用其各功能模块:

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

输入记录、输出记录

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

询)

修改、插入和删除记录

三、设计要求及成果

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

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

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

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

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

四、进度安排

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

第二天? 编程

第三天? 编程及调试

第四天? 写课程设计报告

目录

第一章需求分析

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数据类型设计(或数据结构设计)

typedef struct

{

char score; /*编号*/

char name[10]; /*姓名*/

char num[15]; /*号码*/

char email[20]; /*邮箱*/

char age[8]; /*年龄*/

char adds[20]; /*住址*/ }Person;

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

2.3接口设计

表:函数列表

2.4运行界面设计

void main() /*主函数*/ {

int n=0;

for(;;)

{

switch(menu_select())

{

case 1:

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

n=Input(pe,n);

break;

case 2:

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

Display(pe,n);

break;

case 3:

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

n=Delete_a_record(pe,n);

/*删除记录*/

printf("\t");

system("pause");

break;

case 4:

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

/*查找记录*/

printf("\t");

system("pause");

break;

case 5:

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

/*修改数据*/

printf("\t");

system("pause");

break;

case 6:

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

/*保存数据*/

printf("\t");

system("pause");

break;

case 0:

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

/*结束程序*/

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

system("pause");

exit(0);

}

}

}

以switch为关键控制选着要调用函数的开关,然后以主菜单为主界

面,其他功能为扩展界面来运行通讯录管理系统。

主菜单代码为:

int menu_select()

{

char c;

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输入模块设计

int Input(Person per[],int n)

{

int i=0;

char sign,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输出模块设计

void Display(Person per[],int n)

{

int i;

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查找模块设计

void Query_a_record(Person per[],int n)

{

int m;

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)

{

char s[20];

int i=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)

{

char s[20];

int i=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)

{

char s[20];

int i=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删除模块设计

int Delete_a_record(Person per[],int n)

{

char s[20];

int i=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);

}

相关主题
文本预览
相关文档 最新文档