C语言实训报告.doc

上传人:飞****2 文档编号:53060387 上传时间:2022-10-24 格式:DOC 页数:16 大小:77.50KB
返回 下载 相关 举报
C语言实训报告.doc_第1页
第1页 / 共16页
C语言实训报告.doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《C语言实训报告.doc》由会员分享,可在线阅读,更多相关《C语言实训报告.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C语言程序设计实训报告实训名称: 通讯录管理系统 专 业: 铁道通信信号 班 级: 铁道信号11A1 学 号: 姓 名: 杨希智 指导教师: 李咚 2012年3月10日实训成绩考核、评价项目考核内容得分实训评价实训表现与态度(20分)对实训期间的出勤情况、实训态度、安全意识、职业道德素质评定成绩职业素质、实训态度、效率观念、协作精神实训操作过程(40分)根据学生实训操作的过程进行考核,评定成绩根据学生在实训操作过程中的知识掌握情况、程序设计方法和技巧、基本操作技能、知识应用能力、分析问题和解决问题的能力,以及创新能力进行考核。实训考核(30分)根据学生实训,程序设计的结果进行考核,评定成绩根据

2、实训项目任务要求,对程序设计的结果,分模块进行测试考核实训文档(10分)实训日记、实训报告等评定成绩表达能力、文档写作能力、文档的规范性总分注:1. 成绩的评定标准(要和实训大纲、计划、实训指导书中评分标准一致),上表供参考。2.“各个实训模块考核”要详细(考什么内容、怎么考),根据实训大纲的成绩评定,具体项目进行细分,可以通过理论考核、口述、实做等多种形式。一、实训目的1掌握程序设计的基本结构和基本设计方法。2能综合运用控制语句、数组、函数、结构体、文件等知识实现学生通讯录信息的输入和文件保存、学生通讯录的显示、排序、修改、定位查找等小型程序的设计。3通过实训,使学生掌握一般C程序设计的框架

3、设计,掌握程序调试的方法和思路。二、课程设计报告内容2.1实训内容:通讯录信息管理系统采用C语言程序设计,采用VC 6.0作为开发工具,建立一个50人的通讯录管理系统。创建结构体存储每个通讯记录,利用使用结构体数组来存储全体记录的信息。完成以下模块的设计和实现。1程序框架、系统菜单设计的设计与实现。2登录框架和密码的设计与实现。3输入通讯信息模块的设计与实现。4浏览通讯信息模块的设计与实现。5修改通讯信息模块的设计与实现。6删除通讯信息模块的设计与实现。7通讯信息排序模块的设计与实现。根据实训项目各个模块任务要求,进行程序设计和调试。实现信息的输入、浏览、修改、删除、排序功能,并进行系统总体整

4、合和调试。2.2 使用设备或软、硬件硬件:奔腾586及以上PC机软件:DOS或WINDOWS操作系统,C集成环境(能够保存学生程序),VC6.0开发工具 2.3功能设计及思想(1)功能描述该程序设计一个通讯录管理系统,改程序要求能实现对通讯录中的记录信息进行添加、浏览、查询、排序、修改、删除等功能。具体分为:1:增加通讯记录是用户根据提示输入一个学生的信息后,系统会询问是否继续,输入Y后继续,否则返回主菜单。2:浏览通讯记录是按学号升序、按姓名升序进行浏览。3:查询通讯记录是按学号查询、按姓名查询进行查询。4:排序通讯记录是按学号排序、按姓名排序进行排序。5:修改通讯记录是用户可以选择按学号号

5、姓名修改。6:删除通讯记录是用户可以选择按学号或姓名删除。(2)基本要求本程序要求实现对通讯录中学生信息的添加,修改,删除,浏览,查询和排序6个功能,每个功能模块均能实现随时从模块中推出,而且可以选择不同的方式实现所需功能,从而完成一个通讯录管理系统的功能 。(2)学生信息包括学好,姓名,性别,电话,家庭住址等信息,定义结构体存储每个学生的基本信息,并使用结构体数组来储存所有学生信息。(3)使用二进制文件完成学生信息的储存与读取,要求每次运行某个操作时可以将文件数据读入结构体中,并给用户提供保存选项,可以将结构体中的数据保存在二进制文件中。(4)进入系统需要密码验证,系统以菜单方式工作。2.4

6、算法分析在通讯录管理系统中,以一个班级的学生人数为参考,预设记录数为50.通讯录除了能够添加,修改,删除记录信息外,更多的情况是查询,且能够实现快速查询,所以选用全局数组保存数据,实现多种查询方式。1数据结构设计一个存储一条学生信息的结构体,可参考使用下述的结构体数据类型定义:struct student char num10; Char name10;char sex;char tel215;char af2算法定义及说明程序由一个头文件和两个源文件组成。2.5 实现过程(1)通讯录中每个学生的基本信息至少应有学号、姓名电话和家庭住址,所以定义一个结构体来保存学生信息。(2)函数save(S

7、TUDENT stu,int count ,int flag)中flag为存入方式。当设置为0时表示覆盖方式,为1表示追加方式。以此为关键点展开数据存入文件的操作。(3)在程序中调用password()函数验证进入通讯录管理系统的密码;调用menu()函数显示程序的主菜单。该界面的功能实现是一个多分支选择结构,通过用户的选择,让程序执行相应的功能,因此,采用swithcase结构最为合适。由于程序具有重复显示主菜单的功能,因此还要使用循环功能。(4)主要函数的算法。1)验证密码password()。运行程序时要求用户输入密码,如果密码不正确,则允许重新输入,但只允许输入3次。若3次输入的密码均

8、错误,就立即结束程序,如果密码正确,则进入系统。2)用户选择功能的实现。在main()函数中通过menu()函数在屏幕上显示主菜单界面,根据用户的选择,在main()函数中调用相应的函数,实现用户所需功能。3)增加通讯记录。调用myadd()函数实现增加新记录。首先判断输入的学号是否重复,如不重复,再将输入的学生信息添加到数组中。 4)浏览通讯记录。调用mybrowes()实现浏览通讯记录,可以分别按学号和姓名进行浏览。按学号来浏览通过browes_num()函数实现,按姓名浏览通过函数browes_name()实现。浏览前先调用load()函数将数据文件中的记录读取到结构体数组stu()中,

9、然后通过循环将数组中的记录信息一一输到屏幕上,可以根据实际记录数确定循环次数。5)查询通讯记录可以分别按学号和姓名进行查询。6)排序通讯记录可以分别按学号和姓名排序,通过mysort()函数实现7)删除通讯记录通过mydelete()函数实现,可以分别按学号姓名进行删除。8)修改通讯记录通过mymodify()函数实现,在本函数中首先输入需修改的的记录的学号,通过循环查询找到该记录后,在输入新数据替代原来的数据。三、结论四、结束语 通过本次C语言程序设计实训,我发现我学到了很多,无论是在学习方面还是在以后的做人做事方面,都使我受益匪浅。就拿刚开始的输入程序来说吧,刚看到那麽多的程序语言时,便有

10、了一种恐惧的感觉,这麽多。但是有耐心的人会完成的,这就在一定程度上磨练里人们的意志。 在编写程序的过程中,真的是细节决定成败,因为不管程序语言是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需的结果,这就意味着这个程序是失败的。所以在输入程序的过程中不能贪图快,而忘记了准确性。仅这一点就足以让人们学到很多东西。花了很长时间,编写完了程序。然后学习调试程序,完成程序的编写,并不意味着万事大吉。你认为万无一失的程序,实际上运行时可能会不断的出现麻烦,如输入时的错误,还有程序本身的错误,对于我们来说,尽快掌握调试方法是很重要的。我们需要学习的还有很多。随着第一个程序的结束,老师有布置里第

11、二个程序,因为有了第一个程序的经验,第二个程序的输入对我来说不那麽费劲了,输程序,调试程序让我在实训期间有了充实感。两个程序的结束,预示着两周的实训即将告一段落。回忆起我们上一学期学习C语言的点点滴滴,什么指针,结构体这些太抽象的东西,让我似懂非懂,可是在眼下的实训过程中像这麽重要的C语言知识一定要达到熟练的程度。在实训过程中我们大家在巩固基础知识的同时,共同研究实训课题,克服了困难,自信心得到了提高。两周的C语言实训即将结束,虽然时间略显仓促,但让我学到了很多的实际技能,学会了调试程序的简单的方法,还有感谢老师的帮助,这样才会成功;在期间还有同学的相互研讨,才能进步,感受这一段时间的美好与充

12、实,看道我们的胜利与丰富的劳动成果,同学们都非常高兴的。通过这次的实训,自己是收获颇丰啊!认识到了C语言编程的重要性,更重要的是让我感受到了我们这个集体的团结和统一。这也让我们理解了许多,对我们将来在社会工作有着莫大的帮助,同时也让我知道,只要你努力,任何东西都不会太难。学习C语言不能停滞在学习它的语法规则,而是利用学到的知识编写C语言程序,解决实际问题,即把C语言作为工具,描述解决实际问题的步骤,由计算机帮我们解决,只有通过上机才能检验自己是否掌握C语言。在这次实训中,也让我发现了我的许多不足之处,认识到自己还有很多知识没有学好,基础知识也没有理清。遇到问题不能自己解决。以后要克服,尽量自己

13、多尝试,学好这门课在以后的学习中,我会发扬不怕苦的精神,做任何事情都要有耐心,这样才会把事情做好,得到自己想要的结果。 程序#ifndef TONGXUNLU_H #define TONGXUNLU_H #include #include #include /#include #include #define MAXNUM 50 struct student char num10; char name10; char sex; char tel215; char addr40; typedef struct student STUDENT; /struct student stuMAXNUM;

14、/int stu_number; void password(); void menu();void myadd(STUDENT stu,int *stu_number);void mybrowse(STUDENT stu,int *stu_number); void browseMenu();void browse_num(STUDENT stu,int *stu_number);void browse_name(STUDENT stu,int *stu_number);void mysearch(STUDENT stu,int *stu_number); void searchMenu()

15、;void search_num(STUDENT stu,int *stu_number);void search_name(STUDENT stu,int *stu_number);void mysort(STUDENT stu,int *stu_number); void sortMenu();void sort_num(STUDENT stu,int *stu_number);void sort_name(STUDENT stu,int *stu_number);void mydelete(STUDENT stu,int *stu_number);void del_num(STUDENT

16、 stu,int *stu_number);void del_name(STUDENT stu,int *stu_number);void mymodify(STUDENT stu,int *stu_number);void save(STUDENT stu,int count,int flag);void load(STUDENT stu,int *stu_number); #endif#include tongxunlu.h void main()int choose,flag=1; STUDENT stuMAXNUM; int stu_number=0; /password();whil

17、e(flag) system(cls); menu(); printf(tt 请选择主菜单序号(0-6):); scanf(%d,&choose); switch(choose) case 1:myadd(stu,&stu_number);break; case 2:mybrowse(stu,&stu_number);break; case 3:mysearch(stu,&stu_number); break; case 4:mysort(stu,&stu_number); break; case 5:mydelete(stu,&stu_number); break; case 6: mymo

18、dify(stu,&stu_number);break; case 0: flag=0;printf(ntt谢谢您的使用!退出系统!nn);break; default: printf(ntt请输入0-6之间的整数!按任意键继续!nn); getch(); return; void password()char pwd21=, mm121=1; char c; int i,j; system(cls); printf(nnnn); printf(tt*n); printf(tt* *n); printf(tt* 欢迎使用通讯录管理系统 *n); printf(tt* *n); printf(t

19、t*n); for(i=3;i=1;i-) printf(ntt 请输入密码(您还有%d次机会):,i);j=0;while(j0) -j;putchar(b); putchar( ); putchar(b); pwdj=0; if(strcmp(pwd,mm1)=0) system(cls);break; else if(i1) printf(ntt 密码错误!请重新输入!n); if(i=0) printf(nntt对不起!您无权使用通讯录管理系统!nn);exit(0); return; void menu() printf(nn); printf( |*|n); printf( | 通

20、讯录管理系统 |n); printf( |*|n); printf( | 1-增加通讯记录 |n); printf( | 2-浏览通讯记录 |n); printf( | 3-查询通讯记录 |n); printf( | 4-排序通讯记录 |n); printf( | 5-删除通讯记录 |n); printf( | 6-修改通讯记录 |n); printf( | 0-退出系统 |n); printf( |*|n); #include tongxunlu.hvoid myadd(STUDENT stu,int *stu_number) char ch=y; int count=0; int j;lo

21、ad(stu,stu_number); count=*stu_number; while(ch=y)|(ch=Y) system(cls); printf(ntt* 增加通讯记录 *n); printf(nntt 请输入通讯记录信息n); printf(ntt 学号:); scanf(%s,&stucount.num); if(count0) while(1) for(j=0;jcount;j+) if (strcmp(stucount.num,stuj.num)=0) printf(ntt 学号重复,请重新输入!); printf(ntt 学号:); scanf(%s,&stucount.n

22、um); break; if (j=count) break; printf(ntt 姓名:); scanf(%s,stucount.name); printf(ntt 性别:); scanf(n%c,&stucount.sex); printf(ntt 电话1:); scanf(%s,stucount.tel0); printf(ntt 电话2:); scanf(%s,stucount.tel1); printf(ntt 家庭住址:); scanf(%s,stucount.addr); printf(nntt 是否输入下一个学生信息?(y/n); scanf(n%c,&ch); count+

23、; save(stu,count,0); return; void save(STUDENT stu,int count,int flag) FILE *fp; int i;if(fp=flag?fopen(list.dat,ab):fopen(list.dat,wb)=NULL) printf(不能打开文件n);return; for(i=0;icount;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(文件写错误n); fclose(fp); return; void load(STUDENT stu,int *stu_

24、number) FILE *fp; int i; if(fp=fopen(list.dat,rb)=NULL) printf(不能打开文件n);return; i=0; while(fread(&stui,sizeof(struct student),1,fp)=1 & iMAXNUM) i+; *stu_number=i; if (feof(fp) fclose(fp); else printf(文件读错误); fclose(fp); return; void mybrowse(STUDENT stu,int *stu_number) int choose,flag=1; load(stu,

25、stu_number); while (flag) system(cls); browseMenu(); printf(t 请选择浏览类型:); scanf(%d,&choose); switch(choose) case 1: browse_num(stu,stu_number); break;case 2: browse_name(stu,stu_number); break; case 0: flag=0; break; default: printf(ntt请输入0-2之间的整数!按任意键继续!nn); getch(); return; void browseMenu() printf

26、(n); printf(t |*|n); printf(t | 浏览通讯录子菜单 |n); printf(t |*|n);printf(t | 1-按学号升序浏览 |n); printf(t | 2-按姓名升序浏览 |n); printf(t | 0-返回主菜单 |n); printf(t |*|n);void browse_num(STUDENT stu,int *stu_number) int i,j; STUDENT temp_stuMAXNUM,st; for(i=0;i*stu_number;i+) temp_stui=stui; for(i=1;i*stu_number;i+) f

27、or(j=1;j0) st=temp_stuj-1; temp_stuj-1=temp_stuj; temp_stuj=st; printf(nt 按学号升序浏览如下:); printf(nt 学号t 姓名t 性别t电话1tt电话2tt家庭住址n); for(i=0;i*stu_number;i+) printf(t%-10s%-10s%-3c%-15st%-15st%sn,temp_stui.num,temp_stui.name,temp_stui.sex, temp_stui.tel0,temp_stui.tel1,temp_stui.addr); printf(ntt 浏览完毕,按任意键

28、返回子菜单!); getch(); void browse_name(STUDENT stu,int *stu_number) int i,j; STUDENT temp_stuMAXNUM,st; for(i=0;i*stu_number;i+)temp_stui=stui; for(i=1;i*stu_number;i+) for(j=1;j0) st=temp_stuj-1; temp_stuj-1=temp_stuj; temp_stuj=st; printf(nt 按姓名升序浏览如下:); printf(nt 姓名t 学号t 性别t电话1tt电话2tt家庭住址n); for(i=0;

29、i*stu_number;i+) printf(t%-10s%-10s%-3c%-15st%-15st%sn,temp_stui.name,temp_stui.num,temp_stui.sex, temp_stui.tel0,temp_stui.tel1,temp_stui.addr); printf(ntt 浏览完毕,按任意键返回子菜单!); getch(); void mysearch(STUDENT stu,int *stu_number) int choose; load(stu,stu_number); while (1) system(cls); searchMenu(); pr

30、intf(t 请选择查询类型:); scanf(%d,&choose); if(choose=1) search_num(stu,stu_number); else if(choose=2) search_name(stu,stu_number); else if(choose=0) break ; else printf(ntt请输入0-2之间的整数!按任意键继续!nn); getch(); return; void searchMenu() printf(n); printf(t |*|n); printf(t | 查询通讯录子菜单 |n); printf(t |*|n);printf(t

31、 | 1-按学号查询 |n); printf(t | 2-按姓名查询 |n);printf(t | 0-返回主菜单 |n); printf(t |*|n);void search_num(STUDENT stu,int *stu_number) char xh10; int i; printf(nt 请输入要查询学生的学号:); scanf(%s,xh); for(i=0;i*stu_number;i+) if(strcmp(stui.num,xh)=0) printf(nt 要查询的学号为%s的通讯记录如下:n,stui.num); printf(nt 学号t 姓名t 性别t电话1tt电话2

32、tt家庭住址n); printf(t%-10s%-10s%-3c%-15st%-15st%sn,stui.num,stui.name,stui.sex, stui.tel0,stui.tel1,stui.addr); printf(nt 显示完毕,按任意键返回子菜单!n); getch(); break; if(i=*stu_number) printf(nt 要查询的通讯记录不存在!按任意键返回子菜单!); getch(); return; void search_name(STUDENT stu,int *stu_number) char xm10; int i; int find=0;

33、int num=0; printf(nt 请输入要查询学生的姓名:); scanf(%s,xm); for(i=0;i*stu_number;i+) if(strcmp(stui.name,xm)=0) find=1; num+; if(num=1) printf(nt 要查询的姓名为%s的通讯记录如下:n,stui.name);printf(nt 姓名t 学号t 性别t电话1tt电话2tt家庭住址n); printf(t%-10s%-10s%-3c%-15st%-15st%sn,stui.name,stui.num,stui.sex, stui.tel0,stui.tel1,stui.add

34、r); if(find) printf(nt 显示完毕,按任意键返回子菜单!); getch(); else printf(nt 要查询的学生不存在!按任意键返回子菜单!); getch(); return; void mysort(STUDENT stu,int *stu_number) int choose; load(stu,stu_number); while (1) system(cls); sortMenu(); printf(t 请选择排序类型:); scanf(%d,&choose); if(choose=1) sort_num(stu,stu_number);else if(

35、choose=2) sort_name(stu,stu_number); else if(choose=0) break ; else printf(ntt请输入0-2之间的整数!按任意键继续!nn); getch(); save(stu,*stu_number,0); return; void sortMenu() printf(n); printf(t |*|n); printf(t | 排序通讯记录子菜单 |n); printf(t |*|n);printf(t | 1-按学号排序 |n); printf(t | 2-按姓名排序 |n); printf(t | 0-返回主菜单 |n); printf(t |*|n);void sort_num(STUDENT stu,int *stu_number) int i,j; char ch; STUDENT st; printf(nt 按学号升序(s),还是降序(j)?); ch=getche(); if(ch=s|ch=S) for(i=1;i*stu_number;i+) for(j=1;j0) st=stuj-1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁