c语言课程设计通信管理系统.docx
- 文档编号:10845883
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:25
- 大小:150.76KB
c语言课程设计通信管理系统.docx
《c语言课程设计通信管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计通信管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
c语言课程设计通信管理系统
课程设计报告正文
1、目的:
1)对C各部分知识的综合应用能力
2)提高程序设计的能力
3)提升对于较大程序的抽象分析设计能力
4)学习调试和测试的技巧
2、所做题目的意义:
通讯录管理系统在当今这个信息发达的社会是必不可少的,这个通讯录管理系统可以方便的为我们添加、管理联系人,不必一定要记住这些庞大的信息,可以很方便的调用出自己所需要的信息,随时的修改这些信息,这些在这个时代是非常的必要的。
3、本人所作的工作:
(1)、写出了预习报告。
从图书馆搜集了些这方面的资料
(2)、想好思路,写出了程序代码
(3)、调试程序,找出其中的错误,最终成功的运行出程序
(4)、写出课程设计报告
4、系统的主要功能:
该系统的是一个小型的通讯系统,它具有一般的通讯系统都具有的功能该程序具有查找、添加、修改、删除功能,其中通讯录包括:
XX,,街道,城市,省,邮编。
5.、系统的总体设计:
系统的基本要求和内容:
该系统要求具有查找,添加,修改,删除功能,其中通讯录包括:
XX、,街道,城市,省,邮编。
但在实际设计中增加了一项,那就是末尾添加,可以在已有的记录末尾再次添加,不必每次都重新添加,方便用户
描绘及绘制出系统的功能结构框图、程序设计组成框图,流程图等:
此系统共分为九大模块,分别为以下的模块:
第一模块:
主函数main()的功能是:
根据选单的选项调用各函数,并完成相应的功能。
第二模块:
quitRec()的功能是:
退出选单。
第三模块:
createRec()的功能是:
创建新的通讯录。
第四模块:
addRec()的功能是:
在通讯录的末尾写入新的信息,并返回选单。
第五模块:
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()的功能是:
根据选单的选项调用各函数,并完成相应的功能。
第二模块:
quitRec()的功能是:
退出选单。
第三模块:
createRec()的功能是:
创建新的通讯录。
第四模块:
addRec()的功能是:
在通讯录的末尾写入新的信息,并返回选单。
第五模块:
findRec()的功能是:
查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第六模块:
alterRec()的功能是:
修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回。
第七模块:
deleteRec()的功能是:
删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
第八模块:
listRec()的功能是显示通讯录中的所有记录。
第九模块:
saveRec()的功能是保存某人的信息在某一文件夹里。
在所有的函数中,main()函数数入口函数,用户输入数据进行整个程序的执行,整个函数的出口是qiut()函数,每一个函数执行完毕后都要退到主函数中,基本每个输入、改动或者是删除的函数都要调用保存函数,而主函数调动所有的函数。
(4)、调试与测试:
在此次的课程设计中,做困难的一部分便是调试与测试这部分了,在此次调试中最开始是符号标点的问题,有许多都没注意,最终还是慢慢的把这些错误调试出来了;
还有一种错误便是库函数的问题,在此次调试中,发现有许多别的软件里的库函数在此软件中不能用,最终还是通过再次编写被调用函数来实现了预期的功能;
此外,在函数的调试中,还发现一种问题,在所绘的表格中,无法对齐表格,经过调试,移动表格的位置来实现了表格的工整;
还有,在测试中,发现原本应该在两个页面的数据在同一个页面中显示出来了,经过分析,认为这是由于没有清屏的结果,加上清屏后,问题终于解决了。
(5)、运行结果:
1、主菜单:
2、创建新数据:
首先输入创建的序号“2”,会进入以下这个界面:
输入数据后然后会依次出现下面的条目:
,
最后返回到先前的主菜单
3、查找数据:
按了“1”以后,会出现以下菜单:
会提示你输入要查找的XX
输入XX后会出现以下的显示
退出到主菜单;
4、在末尾添加数据,按了“3”之后,会出现以下:
输入想要添加的数列,会出现下面输入数据的界面:
按任意键退出后,回到主菜单。
5、修改数据:
输入“4”之后,会出现以下界面
输入位置后,按以下流程输入数据
输入Y之后,再将新的数据输入就行了
6、删除数据:
按下“5”后,会出现这个显示
输入XX后,会删除数据并保存已存的结果。
7、退出数据,按下“6”以后会退出,并提示是否保存数据
8、载入数据:
按下“7”后这个可以载入以前保存的数据,
9.保存数据:
按下“8”后,可以保存数据以备下次再用
(6)源程序
#include
#include
#include
#include
#include
#include
#include
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();break;/*创建通讯录*/
case3:
addRec();break;/*添加通讯录*/
case4:
alterRec();break;/*修改通讯录*/
case5:
deleteRec();break;/*删除通讯录*/
case6:
quit();/*退出通讯录*/
case7:
LoadRec();break;/*载入通讯录*/
case8:
saveRec();break;/*保存通讯录*/
}
}
intmuluxuanze()
{
inti;
for(i=0;i<10;i++)
{
gotoxy(10,i+1);
cprintf("%s",mulu[i]);
}
printf("\n");
printf("请输入要做的选项数字(1-8):
");
scanf("%d",&i);
return(i);
}
voidshowTable1()/*表头一*/
{
system("cls");
gotoxy(10,2);
printf("***************************具体数据*******************************");
gotoxy(1,3);
printf("┌────┬────┬────┬────┬─────┬─────┬─────┐\n");
gotoxy(1,4);
printf("│数目│XX││街道│城市│省│邮编│\n");
gotoxy(1,5);
printf("├────├────├────├────├─────├─────│─────│\n");
}
voidshowTable2(intn)/*表头二*/
{
if(n==0)n=1;
if(JILUSHU==0)n=-1;
gotoxy(1,6+n);
printf("└─────────────────────────────────────┘\n");
}
voidquit()/*退出*/
{
charstr[5];
gotoxy(22,18);
printf("保存记录吗?
(Y/N)");
scanf("%s",str);
if(str[0]=='Y'||str[0]=='y')
saveRec();
exit(0);
}
voidcreateRec()/*创建通讯录*/
{
inti,sum;
system("cls");
printf("请输入要添加的通讯记录数目:
");
scanf("%d",&JILUSHU);
for(i=0;i { system("cls"); sum=0; gotoxy(20,5);printf("Pleaseinput%dnumber",i+1); gotoxy(20,6);printf("输入序号: ");scanf("%10s",records[i].no); gotoxy(20,7);printf("输入XX: ");scanf("%10s",records[i].name); gotoxy(20,8);printf("输入: ");scanf("%10s",records[i].score); gotoxy(20,9);printf("输入街道: ");scanf("%10s",records[i].street); gotoxy(20,10);printf("输入城市: ");scanf("%10s",records[i].city); gotoxy(20,11);printf("输入省: ");scanf("%10s",records[i].province); gotoxy(20,12);printf("输入邮编: ");scanf("%10s",records[i].postcode); } printf("请按任意键返回! "); getch(); system("cls"); } voidlistRec()/*显示所有通讯录*/ { inti=0; showTable1(); printf("输入所查数据的序号: "); scanf("%d",&JILUSHU); for(i=0;i { 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); printf("请按任意键返回! "); getch(); } voidsaveRec()/*保存通讯记录*/ { FILE*fp1,*fp2; if((fp1=fopen("e: \\c\\c.txt","wb"))==NULL) { printf("不能打开这个文件"); exit (1); } if((fp2=fopen("e: \\c\\c1.txt","wb"))==NULL) { printf("不能打开这个文件"); exit (1); } printf("\n保存文件\n"); fwrite(&JILUSHU,sizeof(JILUSHU),1,fp1); fwrite(records,sizeof(records),JILUSHU,fp2); fclose(fp1);fclose(fp2); printf("\n文件保存成功! ! \n");Sleep(1000); printf("\n请按任意键退出\n"); getch(); system("cls"); } voidLoadRec()/*载入通讯记录*/ { FILE*fp1,*fp2; if((fp1=fopen("e: \\c\\c.txt","rb"))==NULL) { printf("不能打开这个文件"); exit (1); } if((fp2=fopen("e: \\c\\c1.txt","rb"))==NULL) { printf("不能打开这个文件"); exit (1); } printf("\n载入文件\n"); fread(&JILUSHU,sizeof(JILUSHU),1,fp1); fread(records,sizeof(records),JILUSHU,fp2); fclose(fp1);fclose(fp2); printf("\n文件载入成功! ! \n");Sleep(1000); printf("\n请按任意键退出\n"); getch(); system("cls"); } voidfindRec()/*查询通讯记录*/ { charstr[20]; inti,j; system("cls"); printf("请输入您要找的人的XX: "); scanf("%s",str); for(j=0,i=0;j { if(strcmp(str,records[j].name)==0) { showTable1(); printf("%10s%10s%10s%10s%10s%10s%10s\n",records[i].no,records[j].name,records[j].score,records[j].street,records[j].city,records[j].province,records[j].postcode); printf("\n"); showTable2(i); break; } elseprintf("未找到该联系人"); } printf("Pressanykeytoreturn! "); getch(); system("cls"); } voiddeleteRec()/*删除通讯记录*/ { inti,j; charstr[20]; system("cls"); printf("请输入您想删除的人的XX: "); scanf("%s",str); for(i=0;i { if(strcmp(str,records[i].name)==0) { for(j=i;j records[j]=records[j+1]; } elseprintf("没有找到该联系人"); JILUSHU--; saveRec(); } system("cls"); } intsearch(char*target,inttarType,intfrom) { inti; for(i=from;i { if((tarType==1&&strcmp(target,records[i].no)==0)||tarType==2&&strcmp(target,records[i].no)==0) return(i); } return(-1); } voidalterRec()/*修改通讯录*/ { inti,j; charno[20],str[8]; system("cls"); printf("请输入你想要修改的数据位置数: "); scanf("%d",no); i=search(no,1,0); showTable1(); printf("\n"); printf("%10s%10S%10s%10s%10s%10s%10s",records[i].no,records[i].name,records[i].score,records[i].street,records[i].city,records[i].province,records[i].postcode); printf("└─────────────────────────────────────┘\n"); gotoxy(10,10); printf("你想要修改这些数据吗(Y/N): "); scanf("%s",str); if(str[0]=='y'||str[0]=='Y') { system("cls"); printf("输入序号: ");scanf("%10s",records[i].no); printf("输入XX: ");scanf("%10s",records[i].name); printf("输入: ");scanf("%10s",records[i].score); printf("输入街道: ");scanf("%10s",records[i].street); printf("输入城市: ");scanf("%10s",records[i].city); printf("输入省: ");scanf("%10s",records[i].province); printf("输入邮编: ");scanf("%10s",records[i].postcode); } saveRec(); printf("请按任意键返回! "); getch(); system("cls"); } voidaddRec()/*在通讯录的末尾加上新的信息*/ { inti,sum=0; charstr[8]; for(;;) { system("cls"); printf("请输入您想要增加的序列: "); scanf("%s",str); i=search(str,1,0); if(i==-1)break; elseprintf("这个数据是错误的! "); getch(); } strcpy(records[JILUSHU].no,str); printf("输入序号: ");scanf("%10s",records[i].no); printf("输入XX: ");scanf("%10s",records[i].name); printf("输入: ");scanf("%10s",records[i].score); printf("输入街道: ");scanf("%10s",records[i].street); printf("输入城市: ");scanf("%10s",records[i].city); printf("输入省: ");scanf("%10s",records[i].province); printf("输入邮编: ");scanf("%10s",records[i].postcode); JILUSHU++; saveRec(); } (7)、使用说明: 此程序的运行环境并无太大的要求,一般的电脑都能运行; 使用方法: 进入了主菜单后,只需按照每个功能所对应的数字按下就能操作。 (8)、设计小结: 此次的设计是我第一次独立的设计一个程序,并且完成了调试与测试,最终成功的运行了,在此次的设计中,也让我在运用C语言到实际生活方面的能力有了提升,同时亦提升了我的合作能力,与同学的合作让我在遇到难点时可以很快的解决。 然而,虽然学到了很多,我也在此次的课程设计中认识到自身的许多不足之处,比如办事效率低,在文件的保存、读取方面也不大熟练以后需要多多加强这方面的练习 总之,这次的课程设计让我认识了许多,明白了许多,学到了许多,亦是在运用编程方面提高了许多,课后还是要加强这方面的练习的。 (10)参考文献: C语言程序设计基础实验教程---------廖雷,罗代忠 C程序设计(第三版)------------------谭浩强
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 通信 管理 系统