c语言课程设计.docx

上传人:b****1 文档编号:23273522 上传时间:2023-05-15 格式:DOCX 页数:23 大小:66.90KB
下载 相关 举报
c语言课程设计.docx_第1页
第1页 / 共23页
c语言课程设计.docx_第2页
第2页 / 共23页
c语言课程设计.docx_第3页
第3页 / 共23页
c语言课程设计.docx_第4页
第4页 / 共23页
c语言课程设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

c语言课程设计.docx

《c语言课程设计.docx》由会员分享,可在线阅读,更多相关《c语言课程设计.docx(23页珍藏版)》请在冰豆网上搜索。

c语言课程设计.docx

c语言课程设计

c语言课程设计

1、目的:

1〕对C各部分知识的综合应用能力

2〕提高程序设计的能力

3〕提升关于较大程序的抽象分析设计能力

4〕学习调试和测试的技巧

2、所做题目的意义:

通讯录治理系统在当今那个信息发达的社会是必不可少的,那个通讯录治理系统能够方便的为我们添加、治理联系人,不必一定要记住这些庞大的信息,能够专门方便的调用出自己所需要的信息,随时的修改这些信息,这些在那个时代是专门的必要的。

3、本人所作的工作:

〔1〕、写出了预习报告。

从图书馆搜集了些这方面的资料

〔2〕、想好思路,写出了程序代码

〔3〕、调试程序,找出其中的错误,最终成功的运行出程序

〔4〕、写出课程设计报告

4、系统的要紧功能:

该系统的是一个小型的通讯系统,它具有一样的通讯系统都具有的功能该程序具有查找、添加、修改、删除功能,其中通讯录包括:

姓名,,街道,都市,省,。

5.、系统的总体设计:

系统的差不多要求和内容:

该系统要求具有查找,添加,修改,删除功能,其中通讯录包括:

姓名、,街道,都市,省,。

但在实际设计中增加了一项,那确实是末尾添加,能够在已有的记录末尾再次添加,不必每次都重新添加,方便用户

描画及绘制出系统的功能结构框图、程序设计组成框图,流程图等:

此系统共分为九大模块,分别为以下的模块:

第一模块:

主函数main()的功能是:

依照选单的选项调用各函数,并完成相应的功能。

第二模块:

quitRec()的功能是:

退出选单。

第三模块:

createRec()的功能是:

创建新的通讯录。

第四模块:

addRec()的功能是:

在通讯录的末尾写入新的信息,并返回选单。

第五模块:

findRec()的功能是:

查询某人的信息,假如找到了,那么显示该人的信息,假如未找到,那么提示通讯录中没有此人的信息,并返回选单。

第六模块:

alterRec()的功能是:

修改某人的信息,假如未找到要修改的人,那么提示通讯录中没有此人的信息,并返回。

第七模块:

deleteRec()的功能是:

删除某人的信息,假如未找到要删除的人,那么提示通讯录中没有此人的信息,并返回选单。

第八模块:

listRec()的功能是显示通讯录中的所有记录。

第九模块:

saveRec()的功能是储存某人的信息在某一文件夹里。

以上九大模块为此通信系统的就大差不多模块,用此模块设计能够清晰说明通信治理系统程序的功能、格局,能够用以下组成框图来表示:

〔1〕.系统结构图〔功能模块图〕和数据变量说明

主菜单

主函数输入

创建信息

末尾写入

查询信息

修改信息

删除信息

显示记录

储存信息

退出系统

〔2〕功能模块说明:

〔1〕、主函数输入模块

开始

输入i

i=1

i=2

i=3

查询通讯录

创建通讯录

添加通讯录

i=4

i=5

I=6

输入错误

删除通讯录

退出通讯录

修改通讯录

〔2〕quitRec函数模块〔3〕createRec函数模块

开始

储存记录吗

储存

返回主函数

返回主函数

清屏

输入

返回主程序

开始

〔4〕addRec函数模块〔5〕findRec函数模型

开始

输入想在哪个数列后面加

i=-1

返回主函数

输入新数据

储存

返回主函数

开始

输入姓名

Str=records[j].name

未找到该联系人

显示数据

返回主函数

〔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〞以后,会显现以下菜单:

会提示你输入要查找的姓名

输入姓名后会显现以下的显示

退出到主菜单;

4、在末尾添加数据,按了〝3〞之后,会显现以下:

输入想要添加的数列,会显现下面输入数据的界面:

按任意键退出后,回到主菜单。

5、修改数据:

输入〝4〞之后,会显现以下界面

输入位置后,按以下流程输入数据

输入Y之后,再将新的数据输入就行了

6、删除数据:

按下〝5”后,会显现那个显示

输入姓名后,会删除数据并储存已存的结果。

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("│数目│姓名││街道│都市│省││\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("输入姓名:

");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("请输入您要找的人的姓名:

");

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("请输入您想删除的人的姓名:

");

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("输入姓名:

");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("输入姓名:

");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〕、设计小结:

此次的设计是我第一次独立的设计一个程序,同时

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1