c语言课程设计通信管理系统文档格式.docx
《c语言课程设计通信管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《c语言课程设计通信管理系统文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
第五模块:
findRec()的功能是:
查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第六模块:
alterRec()的功能是:
修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回。
第七模块:
deleteRec()的功能是:
删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
第八模块:
listRec()的功能是显示通讯录中的所有记录。
第九模块:
saveRec()的功能是保存某人的信息在某一文件夹里。
以上九大模块为此通信系统的就大基本模块,用此模块设计可以清楚表明通信管理系统程序的功能、格局,可以用以下组成框图来表示:
(1).系统结构图(功能模块图)和数据变量说明
(2)功能模块说明:
(1)、主函数输入模块
(2)quitRec函数模块(3)createRec函数模块
(4)addRec函数模块(5)findRec函数模型
(7)、deleteRec函数模型
(6)、alterRec函数模型
(8)、listRec函数模型(9)、saveRec函数模型
(3)、详细设计
模块功能说明:
第一模块:
在所有的函数中,main()函数数入口函数,用户输入数据进行整个程序的执行,整个函数的出口是qiut()函数,每一个函数执行完毕后都要退到主函数中,基本每个输入、改动或者是删除的函数都要调用保存函数,而主函数调动所有的函数。
(4)、调试与测试:
在此次的课程设计中,做困难的一部分便是调试与测试这部分了,在此次调试中最开始是符号标点的问题,有许多都没注意,最终还是慢慢的把这些错误调试出来了;
还有一种错误便是库函数的问题,在此次调试中,发现有许多别的软件里的库函数在此软件中不能用,最终还是通过再次编写被调用函数来实现了预期的功能;
此外,在函数的调试中,还发现一种问题,在所绘的表格中,无法对齐表格,经过调试,移动表格的位置来实现了表格的工整;
还有,在测试中,发现原本应该在两个页面的数据在同一个页面中显示出来了,经过分析,认为这是由于没有清屏的结果,加上清屏后,问题终于解决了。
(5)、运行结果:
1、主菜单:
2、创建新数据:
首先输入创建的序号“2”,会进入以下这个界面:
输入数据后然后会依次出现下面的条目:
,
最后返回到先前的主菜单
3、查找数据:
按了“1”以后,会出现以下菜单:
会提示你输入要查找的姓名
输入姓名后会出现以下的显示
退出到主菜单;
4、在末尾添加数据,按了“3”之后,会出现以下:
输入想要添加的数列,会出现下面输入数据的界面:
按任意键退出后,回到主菜单。
5、修改数据:
输入“4”之后,会出现以下界面
输入位置后,按以下流程输入数据
输入Y之后,再将新的数据输入就行了
6、删除数据:
按下“5”后,会出现这个显示
输入姓名后,会删除数据并保存已存的结果。
7、退出数据,按下“6”以后会退出,并提示是否保存数据
8、载入数据:
按下“7”后这个可以载入以前保存的数据,
9.保存数据:
按下“8”后,可以保存数据以备下次再用
(6)源程序
#include<
stdio.h>
#include<
malloc.h>
stdlib.h>
string.h>
conio.h>
ctype.h>
windows.h>
voidshowTable1();
voidshowTable2(int);
voidfindRec();
voidcreateRec();
voidaddRec();
voidsaveRec();
voidalterRec();
voiddeleteRec();
voidquit();
voidLoadRec();
voidlistRec();
intsearch(char*,int,int);
voidgotoxy(intx,inty)
{
CONSOLE_SCREEN_BUFFER_INFOcsbiInfo;
HANDLEhConsoleOut;
hConsoleOut=GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOut,&
csbiInfo);
csbiInfo.dwCursorPosition.X=x;
csbiInfo.dwCursorPosition.Y=y;
SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);
}
char*mulu[]={"
*************通讯管理系统**************"
"
│1.查找│"
│2.创建│"
│3.添加│"
│4.修改│"
│5.删除│"
│6.退出│"
"
│7.载入│"
│8.保存│"
└──────────────────┘"
};
typedefstructsl
charno[20];
charname[10];
charscore[10];
charstreet[10];
charcity[10];
charprovince[10];
charpostcode[10];
}TONGXUN;
intmuluxuanze();
intJILUSHU=0;
TONGXUNrecords[1000];
voidmain()
system("
cls"
);
gotoxy(2,20);
for(;
;
)
switch(muluxuanze())
{
case1:
findRec();
break;
/*查询通讯录*/
case2:
createRec();
/*创建通讯录*/
case3:
addRec();
/*添加通讯录*/
case4:
alterRec();
/*修改通讯录*/
case5:
deleteRec();
/*删除通讯录*/
case6:
quit();
/*退出通讯录*/
case7:
LoadRec();
/*载入通讯录*/
case8:
saveRec();
/*保存通讯录*/
}
intmuluxuanze()
inti;
for(i=0;
i<
10;
i++)
gotoxy(10,i+1);
cprintf("
%s"
mulu[i]);
printf("
\n"
请输入要做的选项数字(1-8):
"
scanf("
%d"
&
i);
return(i);
voidshowTable1()/*表头一*/
gotoxy(10,2);
***************************具体数据*******************************"
gotoxy(1,3);
┌────┬────┬────┬────┬─────┬─────┬─────┐\n"
gotoxy(1,4);
│数目│姓名│电话│街道│城市│省│邮编│\n"
gotoxy(1,5);
├────├────├────├────├─────├─────│─────│\n"
voidshowTable2(intn)/*表头二*/
if(n==0)n=1;
if(JILUSHU==0)n=-1;
gotoxy(1,6+n);
└─────────────────────────────────────┘\n"
voidquit()/*退出*/
charstr[5];
gotoxy(22,18);
保存记录吗?
(Y/N)"
str);
if(str[0]=='
Y'
||str[0]=='
y'
saveRec();
exit(0);
voidcreateRec()/*创建通讯录*/
inti,sum;
请输入要添加的通讯记录数目:
JILUSHU);
JILUSHU;
system("
sum=0;
gotoxy(20,5);
printf("
Pleaseinput%dnumber"
i+1);
gotoxy(20,6);
输入序号:
scanf("
%10s"
records[i].no);
gotoxy(20,7);
输入姓名:
records[i].name);
gotoxy(20,8);
输入电话:
records[i].score);
gotoxy(20,9);
输入街道:
records[i].street);
gotoxy(20,10);
输入城市:
records[i].city);
gotoxy(20,11);
输入省:
records[i].province);
gotoxy(20,12);
输入邮编:
records[i].postcode);
请按任意键返回!
getch();
voidlistRec()/*显示所有通讯录*/
inti=0;
showTable1();
输入所查数据的序号:
gotoxy(1,6+i);
printf("
%10s%10s%10s%10s%10s%10s%10s\n"
records[i].no,records[i].name,records[i].score,records[i].street,records[i].city,records[i].province,records[i].postcode);
}
showTable2(i);
voidsaveRec()/*保存通讯记录*/
FILE*fp1,*fp2;
if((fp1=fopen("
e:
\\c\\c.txt"
"
wb"
))==NULL)
printf("
不能打开这个文件"
exit
(1);
if((fp2=fopen("
\\c\\c1.txt"
\n保存文件\n"
fwrite(&
JILUSHU,sizeof(JILUSHU),1,fp1);
fwrite(records,sizeof(records),JILUSHU,fp2);
fclose(fp1);
fclose(fp2);
\n文件保存成功!
!
Sleep(1000);
\n请按任意键退出\n"
voidLoadRec()/*载入通讯记录*/
rb"
\n载入文件\n"
fread(&
fread(records,sizeof(records),JILUSHU,fp2);
\n文件载入成功!
voidfindRec()/*查询通讯记录*/
charstr[20];
inti,j;
请输入您要找的人的姓名:
scanf("
for(j=0,i=0;
j<
j++)
if(strcmp(str,records[j].name)==0)
{
showTable1();
records[i].no,records[j].name,records[j].score,records[j].street,records[j].city,records[j].province,records[j].postcode);
showTable2(i);
break;
}
elseprintf("
未找到该联系人"
Pressanykeytoreturn!
voiddeleteRec()/*删除通讯记录*/
请输入您想删除的人的姓名:
if(strcmp(str,records[i].name)==0)
for(j=i;
records[j]=records[j+1];
没有找到该联系人"
JILUSHU--;
intsearch(char*target,inttarType,intfrom)
for(i=from;
if((tarType==1&
&
strcmp(target,records[i].no)==0)||tarType==2&
strcmp(target,records[i].no)==0)
return(i);
return(-1);
voidalterRec()/*修改通讯录*/
charno[20],str[8];
请输入你想要修改的数据位置数:
no);
i=search(no,1,0);
%10s%10S%10s%10s%10s%10s%10s"
└─────────────────────────────────────┘\n"
gotoxy(10,10);
你想要修改这些数据吗(Y/N):
saveRec();
请按任意键返回!
voidaddRec()/*在通讯录的末尾加上新的信息*/
inti,sum=0;
charstr[8];
请输入您想要增加的序列:
i=search(str,1,0);
if(i==-1)break;
这个数据是错误的!
getch();
strcpy(records[JILUSHU].no,str);
JILUSHU++;
(7)、使用说明:
此程序的运行环境并无太大的要求,一般的电脑都能运行;
使用方法:
进入了主菜单后,只需按照每个功能所对应的数字按下就能操作。
(8)、设计小结:
此次的设计是我第一次独立的设计一个程序,并且完成了调试与测试,最终成功的运行了,在此次的设计中,也让我在运用C语言到实际生活方面的能力有了提升,同时亦提升了我的合作能力,与同学的合作让我在遇到难点时可以很快的解决。
然而,虽然学到了很多,我也在此次的课程设计中认识到自身的许多不足之处,比如办事效率低,在文件的保存、读取方面也不大熟练以后需要多多加强这方面的练习
总之,这次的课程设计让我认识了许多,明白了许多,学到了许多,亦是在运用编程方面提高了许多,课后还是要加强这方面的练习的。
(10)参考文献:
C语言程序设计基础实验教程---------廖雷,罗代忠
C程序设计(第三版)------------------谭浩强