C语言程序设计课程.docx

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

C语言程序设计课程.docx

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

C语言程序设计课程.docx

C语言程序设计课程

 

重庆科技学院

 

《C语言程序设计》

课程设计报告

学院:

_电气与信息工程学院_专业班级:

自动化2013级3班

学生姓名:

田瑜学号:

2013441202

设计地点(单位)________计算机基础自主学习中心__________

设计题目:

《通讯录管理系统》的设计与实现______________________

完成日期:

2014年9月22日

指导教师评语:

_______________________________________

____________________________________________________________________________________________________________________________________________________________________

成绩(五级记分制):

__________

指导教师(签字):

_____________

课程设计任务书

设计题目:

《通讯录管理系统》的设计与实现

学生姓名

课程名称

C语言课程设计

专业班级

自动化2013

地点

计算机基础自主学习中心

起止时间

2014.9.9-2014.9.26

设计内容及要求

内容

强化C语言中有关结构体数组及外部文件的内容,独立设计通讯录管理系统,并编

程实现以下功能:

1、整个系统均用C语言实现;

2、利用结构体数组来实现通讯录的数据结构设计;

3、系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;

4、系统的各个功能模块都用函数的形式来实现;

5、要求能将学生信息保存在文件中。

6、要求能从文件中读取学生信息并进行相关处理。

设计

参数

1、每一条记录应包括一个人的学号、姓名、电话、班级、通讯地址等信息。

2、输入功能:

进入后可以进行多条记录的输入并保存。

3、显示功能:

完成全部学生或满足指定条件记录的显示。

4、查找功能:

完成按学号或姓名查找学生记录,并显示。

5、插入功能:

按学号顺序插入一条学生记录。

6、保存功能:

将学生记录保存在自定义名称的文件中。

7、读取功能:

将保存在文件中的学生记录读取出来。

8、排序功能:

按学号进行排序。

9、有一个文本菜单来调用各个功能。

进度

要求

1.布置设计题目,讲解要求和说明2014.9.9

2.确定设计任务,确定具体的功能,熟悉相关知识2014.9.9

3.按功能需求确定程序的主要模块2014.9.10

4.编程实现程序的功能2014.9.11–2014.9.15

5.调试并完善程序2014.9.16–2014.9.22

6.撰写课程设计报告2014.9.23-2014.9.24

7.提交课程设计报告并答辩2014.9.25

参考数据

1.谭浩强,《C程序设计(第3版)》,清华大学出版社,2005.2

2.谭明金,俞海英,《C语言程序设计实例精粹》,电子工业出版社,2007.1

其它

说明

1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份

由负责教师留用。

2.若填写内容较多可另纸附后。

3.一题多名学生共享的,在设计内容、参数、要求等方面应有所区别。

教研室主任:

王双明指导教师:

陈刘奎、熊茜、许莎、裴仰军

2014年9月2日

摘要

本次课程设计的题目是通讯录管理系统,次编程系统主要完成学生信息入库,按姓名,电话等方式进行查询输入,主要包括学生信息的输入输出。

每一个学生的信息分别为:

姓名,电话、地址、班级、学号等。

并且要有数据的删除,排序,插入等功能以方便管理查询。

而且本程序主要采取图形友好界面,对用户进行温馨提示。

C语言课程设计实践教学占有重要的位置,不仅体现了理论和实践紧密结合,而且可以提高我们的综合素质,培养我们的创新精神与实践能力的作用,增强我们的创新能力、认知能力、实践能力以及把教材知识与实际运用程序相结合。

这个程序主要考察了学生对结构体,指针,文件的操作,以及C基本用法的掌握,所以完成此题目要求的设计能力,尤其是一种大局意识,如何调试程序也非常重要,通过这个程序可以学到以前调试短程序的经验。

关键字:

通讯录管理系统学生信息入库查询删除排序

目录

1软件需求分析说明…………………………………………………………………1

2主函数模块化设计…………………………………………………………………2

3各功能模块的具体设计………………………………………………………….....3

3.1学生信息的输入……………………………………………………………3

3.2输出显示学生信息…………………………………………………………5

3.3查找学生信息………………………………………………………………6

3.4插入记录……………………………………………………………………7

3.5学生信息的排序……………………………………………………………8

3.6删除学生信息………………………………………………………………9

4程序流程图…………………………………………………………………………10

4.1学生信息输入流程…………………………………………………………10

4.2学生信息显示流程…………………………………………………………10

4.3学生信息查找流程…………………………………………………………11

4.4学生信息插入流程…………………………………………………………11

4.5学生信息排序流程…………………………………………………………12

4.6学生信息删除流程………………………………………………………13

5软件测试……………………………………………………………………………14

5.1学生信息输入………………………………………………………………14

5.2学生信息显示………………………………………………………………15

5.3学生信息查找………………………………………………………………16

5.3.1学生姓名查找………………………………………………………16

5.3.2学生电话查找………………………………………………………16

5.4学生信息插入………………………………………………………………16

5.5学生信息排序………………………………………………………………17

5.6学生信息删除……………………………………………………………18

6总结………………………………………………………………………………19

参考文献……………………………………………………………………………20

致谢…………………………………………………………………………………21

 

1软件需求分析说明

学生通讯录管理系统包括数据录入、信息显示、按姓名查找、按电话查找、插入记录,信息排序、删除数据等功能。

编译程序时采取模块化思想,先完成控制台程序,在按模块化添加。

通过函数的调用来达成整个程序协调工作。

1经过分析,整个程序大致分为七个子函数,分别对应各个功能,实现模块化编程,由于程序中有各种重复的步骤,应此要有循环体的出现,以及函数的调用等。

来达到各个功能正常使用。

2为了让系统用户界面友好,软件功能明确,,操作方便,应采取直接用printf函数的方式在界面上输出可供用户选择的菜单。

据此应该能够很好的完成要求。

3本程序结构清晰,能够很方便的添加功能,以至于将来能很方便的实现程序的修改,从而更好的实现程序的功能。

3本程序采用了人文主义的原则,使用了大量温馨的提示语句,能够给使用者提供一个温馨的使用环境,能到使用者感到人性化的关怀。

2主函数模块化设计

主要的程序模块设计图

主函数控制台程序主要通过模块化的方式进行整体设计,随后在逐步按每个模块添加子程序,从而完成整个函数的编译,具体函数框架图如图2.1所描绘。

主菜单

 

 

输入记录

按姓名排序

按电话查找

按姓名查找

显示记录

 

 

2.1

 

3各功能模块的具体设计

3.1学生信息的输入:

通过对函数的调用实现学生信息的输入,输入信息分别为,姓名、电话、号码、地址、班级、学号等,并且通过函数的调用实现输入的循环,并且使用了温馨的提示语句,让界面更加简约,清晰。

(附带子程序)。

adduser()//调用函数

{

printf("\n\t\t————————————请输入学生信息————————\n");

printf("\n\t\t输入姓名:

");

scanf("%s",&student[num].name);

printf("\n\t\t输入电话号码:

");

scanf("%s",&student[num].phone);

printf("\n\t\t输入地址:

");

scanf("%s",&student[num].adress);

printf("\n\t\t输入班级:

");

scanf("%s",&student[num].clas);

printf("\n\t\t输入学号:

");

scanf("%s",&student[num].id);

num++;

printf("\n\t\t是否继续添加?

(Y/N):

");

if(getch()=='y')

adduser();//通过函数的调用达到循环效果

return(0);

}

3.2输出显示学生信息:

当用户进入1后,系统会一步一步的显示全部学生信息,

通过对list()函数的调用,以及for(i=0;i

list()

{

inti;

system("cls");

if(num!

=0)

{

printf("\n\t\t——————————以下为通讯录所有信息——————————");

for(i=0;i

{

printf("\n\t\t姓名:

%s",student[i].name);

printf("\n\t\t电话:

%s",student[i].phone);

printf("\n\t\t地址:

%s",student[i].adress);

printf("\n\t\t班级:

%s",student[i].clas);

printf("\n\t\t学号:

%s",student[i].id);

printf("\t\t");

if(i+1

{printf("\n\t\t__________________________");

system("pause");}

}printf("\n\t\t——————————————————————");

}else

printf("\n\t\t通讯录中无任何纪录");

printf("\n\t\t按任意键返回主菜单:

");

getch();

return(0);

}

 

3.3查找学生信息记录:

查找学生信息分为两种查找方式,按2为按姓名查找,按3为按电话号码进行查找。

用户可根据自己的需要选择查找方式,若无该学生的信息,则系统会给出提示“没有相同用姓名的用户”等。

通过strcmp函数对姓名进行比较,如果重合则输出该用户信息,附带原代码(if(strcmp(student[i].name,name)==0));

search()

{intmark=0;

inti;

inta=0;

printf("\n\t\t—————按姓名查找———");

charname[20];

printf("\n\t\t请输入姓名:

");

scanf("%s",name);

for(i=a;i

{if(strcmp(student[i].name,name)==0)

{printf("\n\t\t以下是您查找的用户信");

printf("\n\t\t姓名:

%s",student[i].name);

printf("\n\t\t电话:

%s",student[i].phone);

printf("\n\t\t地址:

%s",student[i].adress);

printf("\n\t\t学号:

%s",student[i].id);

printf("\n\t\t——————————");

mark++;

if((i+1)

{

printf("\n\t\t是否继续查找相同名字的用户信息:

(y/n)");

if(getch()=='y')

{a=i;

continue;

}else

return(0);

}else

{printf("\n\t\t按任意键返回主菜单");

getch();

return(0);

}

}

}

if(mark!

=0)

{

printf("\n\t\t没有相同姓名的用户纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return(0);

}

3.4插入记录:

在主菜单直接输入4则进入插入功能,通过插入功能用户可以随意插入自己想要添加的信息,通过该函数(if(fwrite(&student[i],sizeof(structrecord),1,fp)!

=1))进行将添加的用户信息插入进保存的文件夹中。

add()

{inti;

if((fp=fopen("student.bin","wb"))==NULL)

{printf("\n\t\t文件打开失败");

}for(i=0;i

{if(fwrite(&student[i],sizeof(structrecord),1,fp)!

=1)

{printf("\n\t\t写入文件错误!

\n");

}printf("\n\t\t————————请输入用学生信息n");

printf("\n\t\t输入姓名:

");

scanf("%s",&student[num].name);

printf("\n\t\t输入电话号码:

");

scanf("%s",&student[num].phone);

printf("\n\t\t输入地址:

");

scanf("%s",&student[num].adress);

printf("\n\t\t输入班级:

");

scanf("%s",&student[num].clas);

printf("\n\t\t输入学号:

");

scanf("%s",&student[num].id);

num++;

printf("\n\t\t是否继续添加?

(Y/N):

");

if(getch()=='y')

adduser();

return(0);

}

fclose(fp);

printf("\n\t\t通讯录文件已保存");

printf("\n\t\t按任意键退出程序\n\t\t");

exit(0);

return(0);

}

3.5学生信息的排序:

在主菜单中点击5则进入排序功能,此排序功能是一姓名中姓的首个字母按英语字母表进行排序,当排序成功后系统会自动弹出是否显示已排序后的学生信息,如果选者是则显示排序后的学生信息。

同时该功能也是通过对函数的调用,以及使用strcmp函数进行对姓名的比较来实现排序功能。

listbyname()

{

inti,j;

structrecordtmp;

for(i=1;i

{

if(strcmp(student[i].name,student[i-1].name)<0)

{

tmp=student[i];

j=i-1;

do

{

student[j+1]=student[j];

j--;

}while((strcmp(tmp.name,student[j].name)<0&&j>=0));

student[j+1]=tmp;

}

}

printf("\n\t\t排序成功,是否显示?

(y/n)");

if(getch()=='y')

list();

return(0);

}

3.6删除学生信息:

如果用户需要对以及录入的学生信息进行删除修改,在重新录入,则可以回到主菜单点击6,则会进入删除功能子界面。

删除功能通过选择语句将删除功能具体为按姓名删除和按电话号码删除,

switch(choic)

{

case'1':

deletebyphone();break;

case'2':

deletebyname();break;

}

4程序流程图

4.1学生信息输入流程图

在进入主界面后,学生按以下方式进入输入系统

4.1

4.2学生信息显示流程图

4.2

 

4.3学生查找流程图

4.3

4.4学生信息插入流程图

4.4

4.5学生信息排序流程图

4.5

4.6学生删除流程图

 

 

信息

 

 

 

图4.6

 

5.软件测试

5.1学生信息的输入:

开始运行程序,进入主界面。

则可以看到清晰明朗的提示语句,让人赏心悦目,

5.1.1

选择0,进入学生信息输入系统,根据系统提示,他会逐步提示你输入姓名,电话号码,地址,学号,当你输入完毕时,系统会自动提醒你是否继续输入,如果继续输入,则系统会重复提醒你输入信息,如果不继续输入,系统则直接返回主菜单,准备进行下一项功能。

5.1.2

录入完毕后选择是否继续,如选择Y

5.1.3

5.2学生信息的显示:

在主界面选择1进入显示系统,显示系统是按人员,通过按键逐条显示,是学生信息更简约,使人赏心悦目,

5.2

5.3学生查找信息的测试

5.3.1在主界面按2则进入按姓名查找系统,进入系统后,系统会提示你请输入查找姓名,然后点击回车键,则显示出你需要查找的信息,系统下方会出现是否查找相同姓名的人,如果选择是,则系统再次搜索查找相关信息,如果选择否则直接返回主菜单。

5.3.1

5.3.2按电话查找:

在主界面按3则进入按电话查找系统:

5.3.2

5.4学生信息的插入

在主界面按4则进入插入系统

5.4

5.5学生信息排序

在主界面按五进入排序系统,进入,排序后,系统会提示使用者,排序成功,是否显示,如果显示,系统就会用姓名首字母按26个字母进行排序显示。

5.5.1

排序成功选择是否显示,如选择y

5.5.2

5.6删除系统

在主界面选额6进入删除系统,进入删除系统后,系统会提示你选择删除方式。

5.6.1

请用户选择方式,如选择1

5.6.2

请选择是否继续删除,如选则y

5.6.3

6总结

在将近一周的课程设计中,我学到很多东西。

利用设计这次学生通讯录管理系统的机会,复习了自己以前的知识。

此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。

而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。

这些问题,并不是我们平时只靠课本,就可以轻易解决的。

所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。

在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤,比如需求分析、总体设能需求、程序代码设计与分析、运行结果、系统使用说明等。

总之,通过这次课程设计,我收获很大,相信会为自己以后的学习和工作带来很大的好处。

此次任务的完成,也体现出同学之间的团结精神。

所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。

当然,老师的悉心指导和同学的帮助也是不可忽视的,在此感谢本次课程设计中辅导我们老师对我的关心和帮助,诚心诚意感谢他们对我的鼓励与教导,是他们在我迷茫的时候给了我些许提示,激发了我编程的灵感;还有,我在此也十分感谢本次课程设计中同学们对我的帮助,尽管本次不是团队合作,但是他们也给了我不少的提示和帮助,是他们让我有信心坚持做下来,谢谢老师同学们!

 

参考文献

[1]谭浩强.《C程序设计(第3版)》.清华大学出版社2005.2

[2]谭明金.俞海英.《C语言程序设计实例精粹》.电子工业出版社2007.1

 

致谢

首先,我要感谢我的老师,感谢他们每天辛勤的教导,不仅教我们知识,还鼓励我们不放弃,遇到困难勇于去克服,敢于去挑战;正因为有老师的谆谆教诲,才让我们能够较好的完成这次实验,老师总是不厌其烦地给同学们讲解。

同时,我还要感谢学校为我们提供了优良的设备还有舒适干净的学习环境。

最后,我要感谢和我共同奋斗的同学们,在遇到困难时给予了我帮助和鼓励,是他们教会我他们让我懂得鼓励的力量的强大。

我们互相关心、互相帮助,让我们的学习生活不单调,有战胜更多困难的决心。

相信以后的日子里我们都会继续互助互爱,共同努力,共同进步,一起见证美好的明天。

 

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

当前位置:首页 > 表格模板 > 合同协议

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

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