重庆科技学院《个人通讯录管理系统》课程设计报告
重庆科技学院
课程设计报告
院(系):_电气与信息工程学院__ 班 级: 计科普1001 学生姓名: 刘静 学 号: 2010441674 设计地点(单位)____计算机自主学习中心 ___ ___
设计题目:___ 个人通讯录管理系统__ _____ _____ 完成日期: 20xx年 7月 7日
指导教师评语: _______________________________________ _______________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):______ __________
教师签名:_________________________
1
重庆科技学院《个人通讯录管理系统》课程设计报告
摘要
本次课程设计的题目是个人通讯录管理系统,要求在磁盘中以二进制文件的形式存储人员的姓名、年龄、性别等基本信息,并运用程序将磁盘文件中的个人基本信息进行查询、修改和删除等。
我编写的程序从整体上看可分为五大部分,分别是“添加”、“查询”、“修改”、“删除”和“全部显示”。其中添加信息是将人员的基本信息输入并以二进制文件的形式保存在文件中,当添加完所要输入的个人通讯信息后继续选择其它功能;若要对文件中存储的个人通讯信息进行查询、修改和删除等时,则可按照程序提示分别进行。
关键词:通讯信息、添加、查询、修改、删除、全部显示。
2
重庆科技学院《个人通讯录管理系统》课程设计报告
课程设计任务书
设计题目:个人通讯录管理系统
教研室主任: 指导教师:伍建全/向毅/陈应祖/
李忠/陈刘奎
年 月 日
3
重庆科技学院《个人通讯录管理系统》课程设计报告
目录
摘要................................................................................................................................................... 2
课程设计任务书 ............................................................................................................................... 3
目录................................................................................................................................................... 4
第一章 软件需求分析说明书 ......................................................................................................... 5
1.1 信息的存储 ........................................................................................................................ 5
1.2 个人通讯信息 .................................................................................................................... 5
1.3 主函数 ................................................................................................................................ 5
1.4 信息添加 ............................................................................................................................ 5
1.5 信息查询 ............................................................................................................................ 6
1.6 信息删除 ............................................................................................................................ 6
1.7 信息修改 ............................................................................................................................ 6
1.8 信息显示 ............................................................................................................................ 6
第二章 系统分析及设计 ................................................................................................................. 7
2.1 软件界面设计 .................................................................................................................... 7
2.2 软件的数据(结构)统计 ................................................................................................ 7
2.3 软件的算法统计 .............................................................................................................. 10
2.3.1 软件的模块图 ............................................................................................................... 10
2.3.2 信息输入流程图 ........................................................................................................... 11
2.3.3 信息查询流程图 ........................................................................................................... 11
2.3.4 信息删除流程图 ........................................................................................................... 12
2.3.5 信息修改流程图 ........................................................................................................... 12
2.3.6 信息显示流程图 ........................................................................................................... 13
第三章 软件的实现 ....................................................................................................................... 14
3.1 文件输入 .......................................................................................................................... 14
3.2查询结果 .......................................................................................................................... 14
3.3 修改结果 ........................................................................................................................ 15
3.4 删除结果 .......................................................................................................................... 16
3.5 全部显示结果 .................................................................................................................. 17
第四章 软件的测试 ....................................................................................................................... 18
第五章 软件使用说明书 ............................................................................................................... 20
致谢................................................................................................................................................. 21
参考文献 ......................................................................................................................................... 22
附录................................................................................................................................................. 23
4
重庆科技学院《个人通讯录管理系统》课程设计报告
第一章 软件需求分析说明书
1.1 信息的存储
运行编写好的程序,通过提示,输入人员的姓名、性别、年龄和电话等信息,再根据提示反复输入,并以二进制文件形式保存。
1.2 个人通讯信息
需定义一个结构体类型,用来表示学生的各种信息,如下。
typedef struct Man{
char Name[12];
char Sex[4];
char Old[4];
char Mobil[12];
char Tel[12];
char Address[16];
char QQ[12];
char Email[16];
char Sort[12];
}man;
1.3 主函数
其功能实现从屏幕输出6个选择: 1添加信息2. 查询信息3.删除信息4.修改信息5.显示信息6.退出程序,从中选择任一一个来进行个人通讯信息的管理。
1.4 信息添加
此模块通过void TianJia( );函数实现。从键盘输入个人通讯信息,以二进制文件将这些信息写入文本。先建立一个文件指针(FILE *fp),打开文件,输入信
5
重庆科技学院《个人通讯录管理系统》课程设计报告
息,写入文件,关闭文件。
1.5 信息查询
此模块通过void ChaXun()。从键盘输入要查询的人员姓名,程序将从文件中读出先前出入的个人通讯信息,再从屏幕上输出您要查找的信息。
1.6 信息删除
此模块通过void ShanChu( )函数实现。从屏幕上输出所要删除的人员姓名,根据操作提示,然后删除信息。
1.7 信息修改
此模块通过void XiuGai( )函数实现。从屏幕上输出:请输入您要修改的人员姓名,然后显示要修改的人员信息,并根据提示继续输入需修改后的信息,这些信息将以二进制形式写入文本。这需要打开文件读出原信息,再将修改后的所有通讯信息一起写入文件并保存。
1.8 信息显示
此模块通过void XianShi( )函数实现,只需选择显示信息菜单即可显示全部通讯录信息。
6
重庆科技学院《个人通讯录管理系统》课程设计报告
第二章 系统分析及设计
2.1 软件界面设计
2.2 软件的数据(结构)统计
定义一个结构体类型,用来表示学生的各种信息,如下。
typedef struct Man{
char Name[12];
char Sex[4];
char Old[4];
char Mobil[12];
char Tel[12];
char Address[16];
char QQ[12];
char Email[16];
7
重庆科技学院《个人通讯录管理系统》课程设计报告
char Sort[12];
}man;
再建立主函数,如:
void TianJia( FILE *fp);
void XiuGai( FILE *fp);
void ShanChu( FILE *fp);
void ChaXun( FILE *fp);
void XianShi( FILE *fp);
部分主函数的实现代码:
void TianJia( FILE *fp)
{ man a1;
printf("请输入您要添加的人员信息\n"); rewind( fp);
printf("\n");
printf("姓名:");
scanf("%s",&a1.Name);
fflush(stdin);
printf("\n");
printf("性别:");
scanf("%s",&a1.Sex);
fflush(stdin);
printf("\n");
printf("年龄:");
scanf("%s",&a1.Old);
fflush(stdin);
printf("\n");
printf("移动电话:");
scanf("%s",&a1.Mobil); fflush(stdin);
printf("\n");
printf("固定电话:");
scanf("%s",&a1.Tel);
fflush(stdin);
printf("\n");
printf("住址:");
scanf("%s",&a1.Address); fflush(stdin);
printf("\n");
printf("QQ:");
8
重庆科技学院《个人通讯录管理系统》课程设计报告
scanf("%s",&a1.QQ);
fflush(stdin);
printf("\n");
printf("Email:");
scanf("%s",a1.Email);
fflush(stdin);
printf("\n");
printf("类别:");
scanf("%s",a1.Sort);
fflush(stdin);
fp = fopen("d:\\tongxunlu.txt","a+");
fwrite(&a1,sizeof( a1),1,fp);
fclose( fp);
}
void ChaXun( FILE *fp)
{ man a2;
char name1[12];
printf("请输入你要查找的人员姓名:");
scanf("%s",name1);
fflush( stdin);
rewind(fp);
while( fread( &a2, sizeof( a2), 1, fp) != NULL)
{
if( strcmp( name1, a2.Name) == 0)
{
printf("您所查询的人员信息如下:\n");
printf("姓名:%s\n\n性别:%s\n\n年龄:%s\n\n住址:%s\n\n移动电话:%s\n\n固定电话:%s\n\nQQ:%s\n\nEmail:%s\n\n类别:%s\n",
a2.Name, a2.Sex, a2.Old, a2.Address, a2.Mobil,a2.Tel, a2.QQ, a2.Email, a2.Sort);
}
else
{
printf("您要查询的人员资料不存在!\n");
}
}
9
重庆科技学院《个人通讯录管理系统》课程设计报告
2.3 软件的算法统计
2.3.1 软件的模块图
图2-3-1 模块图
10
重庆科技学院《个人通讯录管理系统》课程设计报告
2.3.2 信息输入流程图
此函数用于输入个人通讯信息。先定义一个文件指针FILE(*fp),然后用fopen()函数打开文件,从键盘输入数据,用fwrite函数将信息写入到文件中,最后用fclose()函数关闭文件。屏幕上会显示“请输入y继续其他功能”您可以根据您的需要进行选择然后进行下面的操作。
图2-3-2 信息输入流程图
2.3.3 信息查询流程图
此函数用于查找学生信息,用fopen()函数打开文本文件,用fread函数从文件中将原有信息读出,屏幕上会显示“请输入您要查找的人员姓名”,从键盘输入,屏幕上会显示您要查找的学生信息,最后用fclose()函数关闭文件。
11
重庆科技学院《个人通讯录管理系统》课程设计报告
图2-3-3 信息查询流程图
2.3.4 信息删除流程图
此函数用于删除个人通讯信息,用fopen()函数打开文本文件,读出原有信息并输出到屏幕,从屏幕上输出提示“请输入要删除的人员姓名”,输入后显示该信息即被删除。最后用fclose()函数关闭文件。
图2-3-4 信息删除流程图
2.3.5 信息修改流程图
此函数用于修改信息。用fopen()函数打开文本文件,读出原有信息并输出到屏幕,此时屏幕上会显示"请输入您要修改的人员姓名:",从键盘输入姓名,屏幕上将会显示要修改的信息 用fwrite()函数将现在的信息写入到磁盘中,最后用
12
重庆科技学院《个人通讯录管理系统》课程设计报告
fclose()函数关闭文件。
图2-3-5 信息修改流程图
2.3.6 信息显示流程图
此函数用来打印学生全部信息,用fopen( )函数打开文本文件,读出原所有信息并输出到屏幕,最后用fclose()函数关闭文件。
图2-3-5 信息显示流程图
13
重庆科技学院《个人通讯录管理系统》课程设计报告
第三章 软件的实现
3.1 文件输入
输入个人通讯信息,运行结果如下:
3.2查询结果
查询个人通讯信息,运行结果如下:
14
重庆科技学院《个人通讯录管理系统》课程设计报告
3.3 修改结果
修改个人通讯信息,运行结果如下:
15
重庆科技学院《个人通讯录管理系统》课程设计报告
3.4 删除结果
删除个人通讯信息,运行结果如下:
16
重庆科技学院《个人通讯录管理系统》课程设计报告
3.5 全部显示结果
显示个人通讯信息,运行结果如下:
17
重庆科技学院《个人通讯录管理系统》课程设计报告
第四章 软件的测试
表4-2 查询函数
表4-3 修改函数
18
重庆科技学院《个人通讯录管理系统》课程设计报告
表4-5 显示函数
19
重庆科技学院《个人通讯录管理系统》课程设计报告
第五章 软件使用说明书
进入主菜单,选择你想要的功能,如图:
选择你想要的执行操作代码后,按照提示依次输入或选择,即可实现。
20
重庆科技学院《个人通讯录管理系统》课程设计报告
致谢
我要感谢老师对我们的认真负责的教导,在我们与到问题不理解时能构给我们耐心的讲解,并且在学习该专业课是对我们的要求,迫使我们在平日里抓紧时间学习。还要感谢学校为我们提供了良好的学习环境和设备,让我们能够更好的学习计算机方面的知识。以及在平日的学习中同学们对我的帮助。
签名:刘静
日期:2011-6-24
21
重庆科技学院《个人通讯录管理系统》课程设计报告
参考文献
[1][美]帕罗塞斯.《MFC Windows程序设计》.清华大学出版社.2007
[2][美]Stanley.《C++ Primer》.人民邮电出版社.2006
22
重庆科技学院《个人通讯录管理系统》课程设计报告
附录
typedef struct Man{char Name[12]; char Sex[4];char Old[4];char Mobil[12];char Tel[12];char Address[16];har QQ[12];char Email[16];char Sort[12];}man;
void TianJia( FILE *fp);void XiuGai( FILE *fp);
void ShanChu( FILE *fp);void ChaXun( FILE *fp);
void XianShi( FILE *fp);nt jishu(char *p);
int main()
{ system("color 51");char b,c;FILE *fp;
do{
printf("\t\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("\t\t★ 通 讯 录 ☆\n");
printf("\t\t☆ 1、添加信息 2、查询信息 ★\n");
printf("\t\t★ ☆\n");
printf("\t\t☆ 3、删除信息 4、修改信息 ★\n"); printf("\t\t★ ☆\n"); printf("\t\t☆ 5、显示信息 6、退出程序 ★\n"); printf("\t\t★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
printf("请选择您想要执行操作的代码: ");
scanf("%d",&c); printf("\n");
switch ( c )
{case 1:fp = fopen("d:\\tongxunlu.txt","ab+");TianJia( fp);break; case 2:fp = fopen("d:\\tongxunlu.txt","rb");ChaXun( fp);break; case 3:fp = fopen("d:\\tongxunlu.txt","rb+");ShanChu( fp);break; case 4:fp = fopen("d:\\tongxunlu.txt","rb+");XiuGai( fp);break; case 5:fp = fopen("d:\\tongxunlu.txt","rb");XianShi( fp);break; case 6:printf("谢谢使用!\n");exit(0);default:
23
重庆科技学院《个人通讯录管理系统》课程设计报告
printf("输入有误,请重新输入!\n");break;} fflush( stdin); close(fp);
printf("请输入y继续其他功能\n");
scanf("%c",&b);if(b == 'y'){ system("cls")}}while(c != 6);return 0} void TianJia( FILE *fp)
{ man a1;printf("请输入您要添加的人员信息\n");
rewind( fp);printf("\n");printf("姓名:");scanf("%s",&a1.Name);fflush(stdin); printf("\n");printf("性别:");scanf("%s",&a1.Sex);fflush(stdin);
printf("\n");printf("年龄:");scanf("%s",&a1.Old); fflush(stdin);
printf("\n"); printf("移动电话:");scanf("%s",&a1.Mobil);fflush(stdin); printf("\n");printf("固定电话:");scanf("%s",&a1.Tel);fflush(stdin);
printf("\n");printf("址:");scanf("%s",&a1.Address);fflush(stdin);printf("\n"); printf("QQ:");scanf("%s",&a1.QQ);fflush(stdin);
printf("\n");printf("Email:");scanf("%s",a1.Email);fflush(stdin);
printf("\n");printf("类别:");scanf("%s",a1.Sort);fflush(stdin);
fp=fopen("d:\\tongxunlu.txt","a+");fwrite(&a1,sizeofa1),1,fp);fclose( fp);}
void ChaXun( FILE *fp) man a2;char name1[12];
printf("请输入你要查找的人员姓名:");scanf("%s",name1);fflush( stdin); rewind(fp);while( fread( &a2, sizeof( a2), 1, fp) != NULL)
{if( strcmp( name1, a2.Name) == 0)
{printf("您所查询的人员信息如下:\n"); printf("姓名:%s\n\n性别:%s\n\n年龄:%s\n\n住址:%s\n\n移动电话:%s\n\n
固定电话:%s\n\nQQ:%s\n\nEmail:%s\n\n类别:%s\n",a2.Name, a2.Sex, a2.Old, a2.Address, a2.Mobil,a2.Tel, a2.QQ, a2.Email, a2.Sort); }else
{printf("您要查询的人员资料不存在!\n");} } fclose( fp);return;}
void XiuGai( FILE *fp)
{man a3;man one;int count1 = 0;char name2[12];printf("请输入您要修改的人员姓名:");scanf("%s", &name2);fflush( stdin);while( !feof( fp))
fread( &a3,sizeof( a3), 1, fp);count1++;if( strcmp( name2,a3.Name) ==0){
24
重庆科技学院《个人通讯录管理系统》课程设计报告
printf("姓名:%s\n性别:%s\n年龄:%s\n住址:%s\n移动电话:%s\n固定电话:%s\nQQ:%s\nEmail:%s\n类别:%s\n",a3.Name, a3.Sex, a3.Old, a3.Address, a3.Mobil, a3.Tel, a3.QQ, a3.Email, a3.Sort);
printf("请输入您要修改的资料.\n");printf("\n");printf("姓名:");
scanf("%s",&one.Name);fflush(stdin);printf("\n");
prit性别:");scanf("%s",&one.Sex);fflush(stdin);printf("\n");printf("年龄:"); scanf("%s",&one.Old);fflush(stdin);printf("\n");printf("移动电话:");
scanf("%s",&one.Mobil);fflush(stdin);printf("\n");printf("固定电话:");
scanf("%s",&one.Tel);fflush(stdin);printf("\n");
printf("住址:");scanf("%s",&one.Address);fflush(stdin);printf("\n");printf("QQ:"); scanf("%s",&one.QQ);fflush(stdin);printf("\n");printf("Email:");scanf("%s",&one.Email);fflush(stdin);printf("\n")printf("类别:");scanf("%s",&one.Sortfflush(stdin);
fseek(fp,(count1 - 1)*sizeof( a3),SEEK_SET);fwrite(&one,sizeof( one),1,fp); printf("修改成功!\n");return;}Else{printf("您要修改的人员不存在!\n");return;}}
fclose( fp);return;} void ShanChu( FILE *fp){ man a4;man blank = {0};
char name3[12];int count = 0;rewind(fp);printf("请输入您要删除的人员姓名:"); scanf("%s",&name3);fflush( stdin);while( !feof( fp)){fread( &a4,sizeof( a4), 1, fp); count++;if( strcmp( name3,a4.Name) ==0){ printf("姓名:%s\n性别:%s\n年龄:%s\n住址:%s\n移动电话:%s\n固定电话:%s\nQQ:%s\nEmail:%s\n类别:%s\n",
a4.Name, a4.Sex, a4.Old, a4.Address, a4.Mobil, a4.Tel, a4.QQ, a4.Email, a4.Sort); fseek( fp,( count - 1) * sizeof( a4), SEEK_SET) fwrite( &blank, sizeof( blank), 1, fp);printf("删除成功!");fclose( fp) r}else{printf("您要删除的人员不存在!\n"); return;}fclose( fpreturn;}void XianShi( FILE *fp){char m = 0, n;man a5;
while( !feof( fp)){fread( &a5,sizeof( a5), 1, fp);m++;} for( n = 0; n < m -1; n++ ) {fread( &a5, sizeof( a5), 1, fp);printf("您所需要的资料如下:\n");printf("姓名:%s\n性别:%s\n年龄:%s\n住址:%s\n移动电话:%s\n固定电话:%s\nQQ:%s\nEmail:%s\n类别:%s\n",
a5.Name, a5.Sex, a5.Old, a5.Address, a5.Mobil, a5.Tel, a5.QQ, a5.Email, a5.Sort);} fclose( fp); }
25