通讯录信息管理系统.docx
《通讯录信息管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录信息管理系统.docx(24页珍藏版)》请在冰点文库上搜索。
通讯录信息管理系统
实训报告
题目:
通讯录信息管理系统
院系:
信息科技学院
专业:
测控技术及仪器
姓名:
toy
学号:
************
指导教师:
******
日期:
2012年6月27日
桂林电子科技大学信息科技学院
第一章程序设计的目的和要求
1.1、课程设计的目的
通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好地巩固《高级语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论和实践相结合的难关,更加了解c语言的好处和其可用性。
通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力,为后续各门计算机课程的学习和毕业设计打下坚实的基础。
1.2、课程设计的实验环境
该课程设计在设计与实验过程中需要在windowsXP系统/windowsVista系统中进行,程序设计要求在visualC++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。
1.3、课程设计的预备知识
在知识方面此课程设计需要掌握C语言的基本知识,熟练指针、链表等应用,掌握数据库等知识。
在操作方面此课程设计需要清楚windowsXP系统/windowsVista系统的操作,熟悉visualC++6.0编码平台。
以此可以顺利完成课程设计的编写、编译、调试、测试等工作。
1.3、课程设计的要求
C语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法。
所谓结构化程序就是用高级语言表示的结构化算法,结构化程序设计强调程序。
设计风格和程序结构的规范化提倡清晰的结构。
这就要求学生把一个复杂问题的求解过程分阶段进行,每一个阶段处理的问题都控制在人们容易理解和处理的范围内。
可以采用自顶向下、逐步细化、模块化设计、结构化编码的方法。
同时为了更好地完成本次程序设计,还要求学生仔细分析自己的选题,深刻了解课题的设计背景,做好课题的需求分析,将项目要完成的功能分析清楚,划分好功能模块,逐个实现。
在实际编码过程中,要做到思维严谨,化繁为简,代码简练。
最终学生要按照课程设计的题目要求,分析、设计、编写、调试和测试C语言程序及编写设计报告。
第二章需求分析
2.1系统概述
通讯录信息管理系统作为学校管理的一个重要方面,其可变因素多,管理方面繁琐复杂,时间跨度大,再加上其固有的基数大,因而形成了巨大的数据量。
以前的人工管理方式处理这样大的数据,不可避免地增加了管理的工作量及复杂程度,使老师、学生和有关管理人员工作繁重、负担重、压力大。
并且人为方式固有的不严密性常常带来各种工作中的疏漏,使得复杂度更甚,常常让工作人员感到头痛。
这种人工系统在管理工作中存在很大的弊病。
其一:
信息量大,管理人员工作量大,负担重,压力大;且工作繁复,复杂程度高,使管理人员颇感头疼;
其二:
人工处理方式由于其固有的不严密性,造成数据处理中的错、漏现象不可避免,数据缺乏正确性,而且增大了工作难度;
其三:
由于信息处理量大,信息流动不畅通,反馈时间延长,缺乏实效性;
其四:
数据备份、传输、报表、统计等相关工作量大,费时,繁琐,容易出错;
根据现实情况,为了改变原来的信息管理中的不利局面,以适应现代化管理发展,最佳的改进途径就是建立一个通讯录信息管理系统,用计算机实现对信息的搜集、加工、存储等精确处理,从而提高工作效率。
2.2、系统功能需求分析
通讯录信息管理系统,为了替代人工管理而开发的一个软件系统,它代替人工完成对信息数据的搜集、处理、加工、存储等工作,具有严密性、安全性,大大增大了过往人工管理的准确性,提高了工作效率,减小了工作人员的工作量
通讯录信息管理系统要完成对信息数据的处理,其中包括基本信息的录入、存储。
这些基本信息数据构成一个简单的数据库,这是该系统进一步对数据处理的基础。
2.3、系统性能需求分析
通讯录信息管理系统要完成对信息数据的精确处理,因此要具备以下几项功能:
数据录入:
数据包括ID、电子邮件、姓名、电话号码等。
大量的数据信息将构成一个基本信息数据库,为进一步对其进行处理做好准备;
数据查询:
通讯录信息管理系统在既有信息数据的基础上,要完成对信息的查询。
第三章系统总体设计
3.1应用程序名称:
通讯录信息管理系统
3.2应用程序简介:
包括应用程序的基本结构、基本内容、运行环境等;
基本结构:
1)密码功能:
一开始进入系统,要求用户输入用户名和密码,方能进入主界面;密码用*的形式显示在屏幕上。
2)系统以菜单方式工作具有主控界面,用户按照主控界面提示选择相应的功能;
3)系统查看功能选择此功能时,列出下列三类选择:
1. 办公类
2. 个人类
3. 商务类
4.全部显示当选中某个选项时,则显示出此类所有数据中的姓名、电话号码和电子邮件;
4)系统添加功能
用户可以录入一条新记录信息后记录信息(一条记录包括:
姓名、电话号码、分类、电子邮件)当录入了重复的姓名或电话号码时,则提示数据录入重复并取消录入;录入的新数据能按递增的顺序自动进行条目编号;
5)系统修改功能
根据用户输入需要修改的姓名,查找到该姓名号对应的记录,若找到该记录,则修改相应字段的值,若未找到该记录,提示用户。
6)系统删除功能
根据用户输入需要删除的人的ID,查找该条记录,可对此人的相应数据进行删除,并自动调整后续条目的编号。
7)系统拔号功能
在屏幕显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上显示出此人的姓名及电话号码。
8)文件导入功能
从C盘下TX1.TXT文件中录入一个通讯录文件。
运行环境:
VC++6.0
3.3应用程序的总体设计结构图,主要运行界面的介绍(附主要代码);
1)密码功能界面
2)主界面
3)通讯录查看界面
4)通讯录添加功能
5)通讯录修改功能;
6)系统拨号功能;
7)个人信息简介;
第四章源程序代码
主要代码:
#include
#include
#include
#include
intcntAddr,i,j;
charin[20];
constchar*strFmt="\n%d\t%s\t%s\t%s\t%s\n";
/*输入记录*/
typedefstructADDRESSD{
intID;
charname[20];
charphone[20];
charclassify[20];
charmail[20];
}ADDRESS;
ADDRESSaddrTmp[100],adTmp;
/*导入文件功能*/
intload(ADDRESSadr[])
{
FILE*fp;
if((fp=fopen("txl.txt","r"))!
=NULL)
{
cntAddr=0;
while(fscanf(fp,"%d%s%s%s%s",&(adr[cntAddr].ID),adr[cntAddr].name,adr[cntAddr].phone,adr[cntAddr].classify,adr[cntAddr].mail)!
=EOF)
++cntAddr;
}
fclose(fp);
returncntAddr;
}
voidquan(ADDRESSaddr[],intlength){
for(i=0;i}
voidbangong(ADDRESSaddr[],intlength){
char*str1="办公类";for(i=0;i}
voidgeren(ADDRESSaddr[],intlength){
char*str1="个人类";for(i=0;i}
voidbusiness(ADDRESSaddr[],intlength){
char*str1="商务类";for(i=0;i}
voidsave(ADDRESSadr[],intlength){
FILE*fp;
fp=fopen("c:
\\txl.txt","w");
for(i=0;ifclose(fp);
};
intdelet(ADDRESSadr[],intlength){
printf("要修改第几条记录:
\n");
scanf("%d",&j);
for(i=j;ireturn--length;
};
voidrewrite(ADDRESSadr[],intlength){
printf("要修改第几条记录:
\n");
scanf("%d",&j);
printf("请输入ID:
\n");
scanf("%d",&i);
adr[j].ID=i;
printf("请输入姓名:
\n");
scanf("%s",in);
strcpy(adr[j].name,in);
printf("请输入电话号码:
\n");
scanf("%s",in);
strcpy(adr[j].phone,in);
printf("请输入分类:
\n");
scanf("%s",in);
strcpy(adr[j].classify,in);
printf("请输入电子邮件:
\n");
scanf("%s",in);
strcpy(adr[j].mail,in);
};
intadd(ADDRESSadr[],intlength){
printf("请输入ID:
\n");
scanf("%d",&i);
adr[length].ID=i;
printf("请输入姓名:
\n");
scanf("%s",in);
strcpy(adr[length].name,in);
printf("请输入电话:
\n");
scanf("%s",in);
strcpy(adr[length].phone,in);
printf("请输入分类:
\n");
scanf("%s",in);
strcpy(adr[length].classify,in);
printf("请输入电子邮件:
\n");
scanf("%s",in);
strcpy(adr[length].mail,in);
return++cntAddr;
};
/*查看记录功能*/
voidchakan(ADDRESSadr[],intlength)
{
intchoice;
menu1:
system("cls");
printf("\n\n\n\n*************************通讯录信息管理系统(信息查看)*******************\n\n");
printf("1.办公类\n\n");
printf("2.个人类\n\n");
printf("3.商务类\n\n");
printf("4.全部显示通讯录信息\n\n");
printf("0.返回上一级菜单\n\n");
printf("********************************************************************\n");
printf("请选择(0~4)\n");
scanf("%d",&choice);
switch(choice)
{
case1:
bangong(adr,length);
printf("请按任意键返回...\n");
system("pause");
break;
case2:
geren(adr,length);
printf("请按任意键返回...\n");
system("pause");
break;
case3:
business(adr,length);
printf("请按任意键返回...\n");
system("pause");
break;
case4:
quan(adr,length);
printf("请按任意键返回...\n");
system("pause");
break;/*显示全部记录*/
case0:
return;
printf("请按任意键返回...\n");
system("pause");
}
gotomenu1;
}
intenter(ADDRESSadr[]){
cntAddr=0;
printf("请按次序输入数据,结束按CTRL+z:
\n");
while
(1){
printf("请输入ID:
\n");
if(scanf("%d",&i)==EOF)break;
adr[cntAddr].ID=i;
printf("请输入姓名:
\n");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].name,in);
printf("请输入电话:
\n");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].phone,in);
printf("请输入分类:
\n");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].classify,in);
printf("请输入电子邮件:
\n");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].mail,in);
++cntAddr;
}
returncntAddr;
};
/*通讯录信息修改功能*/
voidxiugai(ADDRESSadr[],intlength)
{
intchoice;
menu2:
system("cls");
printf("\n\n\n\n*************************通讯录信息管理系统(信息修改)*******************\n\n");
printf("1.删除记录\n\n");
printf("2.修改记录\n\n");
printf("3.添加记录\n\n");
printf("0.返回上一级菜单\n\n");
printf("********************************************************************\n");
printf("请选择(0~3)\n");
scanf("%d",&choice);
switch(choice)
{
case1:
length=delet(adr,length);
save(adr,length);
printf("请按任意键返回...\n");
getchar();
break;/*删除记录*/
case2:
rewrite(adr,length);
save(adr,length);
printf("请按任意键返回...\n");
getchar();
break;/*修改记录*/
case3:
length=add(adr,length);
save(adr,length);
printf("请按任意键返回...\n");
getchar();
break;/*插入记录*/
case0:
return;
}
gotomenu2;
}
/*拨号功能*/
voidbohao(ADDRESSaddr[],intlength){
printf("请输入姓名:
\n");
scanf("%s",&in);
for(i=0;i};
/*关于*/
voidabout()
{
system("color87");
system("cls");
printf("\n\n\n\n《通讯录信息管理系统》\n\n\n");
printf("*****************************************\n\n\n");
printf("作者个人信息\n\n\n");
printf("*****************************************\n\n\n");
printf("请按任意键返回主菜单...");
system("pause");
}
voidmima()
{
inti,k=0;
charusername[15],pwd[6];
system("color87");
for(i=0;i<3;i++)
{
system("cls");
printf("\n\n\n\n\n★欢迎使用通讯录信息管理系统★\n\n\n\n\n");
printf("学号:
1053300104\n\n");
printf("2012.06.27\n\n\n\n\n\n");
printf("\n请输入用户名:
");
gets(username);
printf("\n请输入6位密码:
");
gets(pwd);
if((strcmp(username,"1053300104")==0)&&(strcmp(pwd,"123456")==0))
{
printf("\n您已经成功登录\n");
k=1;
for(i=0;i<20;i++)
{
printf(".");
Sleep(100);
}
system("cls");
break;
}
else
printf("\n用户名或密码无效请重新输入:
\n");
continue;
}
if(k==0)
{printf("\n连续输入错误3次将退出程序\n");
Sleep(200);
exit(0);
}
Sleep(200);
}
/******主函数*******/
voidmain()
{
intchoice;
intlength;/*保存记录长度*/
ADDRESSadr[100];/*定义结构体数组*/
mima();
menu:
system("color87");
system("cls");
printf("\n\n\n\n*************************通讯录信息管理系统(系统菜单)*******************\n\n");
printf("请选择以下通讯录管理功能:
\n\n");
printf("1.通讯录信息查看\n\n");
printf("2.通讯录信息添加\n\n");
printf("3.通讯录信息修改\n\n");
printf("4.系统拔号功能\n\n");
printf("5.通讯录文件导入\n\n");
printf("6.作者简介\n\n");
printf("0.退出通讯录管理系统\n\n");
printf("********************************************************************\n");
printf("请选择(0~6)\n");
scanf("%d",&choice);
switch(choice)
{
case1:
chakan(adr,length);break;/*查看记录*/
case2:
length=enter(adr);
save(adr,length);
printf("\n请按任意键返回...\n");
system("pause");break;/*输入记录*/
case3:
xiugai(adr,length);break;/*通讯录信息修改功能*/
case4:
bohao(adr,length);
printf("请按任意键返回...\n");
system("pause");
break;/*拨号功能*/
case5:
length=load(adr);
printf("您已经成功的导入文件到通讯录!
\n");
printf("请按任意键返回...\n");
system("pause");break;/*导入文件功能*/
case6:
about();break;/*关于*/
case0:
return;/*如返回值为则程序结束*/
}
gotomenu;
}
第五章实训心得体会
5.1得意之处:
重点介绍整个应用程序中自已认为最满意、最得意的地方
系统查看功能当选中某个选项时,则显示出此类所有数据中的姓名、电话号码和电子邮件。
在添加自己设计的界面时候,显示个人信息,实在是让人身心愉悦,更加加强了自