ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:260.28KB ,
资源ID:7065997      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7065997.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言实训报告有源程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言实训报告有源程序.docx

1、C语言实训报告有源程序C语言程序设计与数据结构实训报告课题名称: 专 业: 班 级: 学 号: 姓 名: 指导教师: 2008 年 12 月 25 日1 课程设计目的 12 课程设计题目 13 课程设计报告内容 14 结论 105 结束语 116 参考书目 117 附录:(源程序清单) 12考核、评价项目考核内容得分实训评价实训的平时考核 (30分)出勤情况、实训态度、效率、协作精神。知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统整体功能设计(10分)对通讯信录管理系统的功能设计完整、全面文件的设计 (5分)文件设计合理,有可扩展性。登陆模块的设计 (5分)能够实现用户登陆,并作出

2、合理的安全设计,无登陆漏洞。添加记录模块设计(5分)能够正确添加记录并保存到文件中删除记录模块设计(5分)能够正确删除记录并修改文件中的数据修改记录模块设计(5分)能够正确地完成记录修改并保存数据查找记录模块设计(5分)能够按照要求查找到满足条件的记录显示记录模块设计(5分)能够正确的将数据全部显示系统功能全部实现(5分)系统整体效果、包括的模块的数量及每个模块具体的实现功能。是否完成前面设计的全部功能实训文档 (20分)表达能力、文档写作能力、文档的规范性合计教师评语: 成绩:教师: 年 月 日一、课程设计题目商场销售管理管理系统二、实训目的(1)掌握结构化程序设计的基本方法,基本掌握面向对

3、象程序设计的基本思路和方法。(2)掌握C+的基本概念和基础知识。(3)通过训练能够读懂较为复杂的C+语言源程序并具备基本C+语言程序设计的能力。(4)熟练掌握各种常用类的定义,继承,文件的应用,为更好的理解面向对象打下更好的基础。(5)通过实训,培养自己编写、调试、分析大型应用程序的能力。(6)掌握面向对象的基本原理,提高学生综合程序设计的能力。(7)培养自己独立解决问题,查找资料的能力。同学之间相互帮助,相互交流,相互合作的团队精神。(8) 培养自己良好的学习兴趣,独立的编程风格。(9) 通过实训检查自己学习上的不足,达到熟练掌握C+语言的基本知识和技能。 三、课程设计报告内容3.1功能要求

4、该系统运行在DOS环境下,人机界面为命令行文本界面。完成的任务是对若干人的通信录信息进行管理,且数据保存到文件中。实现的主要功能是: 登陆: 判断用户输入的密码正确性,并限制用户只能有三次机会输入,若超过则关闭计算机。 添加:增加一个或几个人的通信录信息。 删除:删除已输入的通信录信息。 查询:根据输入的姓名查找通信录信息。 修改:根据输入的姓名修改通信录信息。 显示:输出所有通信录信息。3.2 设计环境所使用的语言采用标准C,开发工具可选用在DOS环境下的Turbo C或Win-TC,也可在Windows环境下的C+Builder。3.3 数据结构本系统是对通信录的信息进行管理,通信录记录的

5、信息采用C的结构体数据类型描述,定义如下: struct ren /*定义个人资料结构体类型*/ int num; /*编号*/ char name10; /*姓名*/ char tel12; /*电话号码*/ char email20; /*email地址*/ char qq12; /*QQ*/ char address50; /*住址*/;3.4实现方法及主要算法分析(1)口令设计模块:调用strcmp函数判断输入是否与密码正确。getch()读入一个字符不回显在屏幕上,不用回车结束。getchar()将字符输入到缓冲区直到输入回车才返回给系统。调用system(shutdown -s )

6、关闭计算机。(2)主界面的设计:主界面采用文本菜单的形式,各功能调用通过菜单进行选择。采用循环处理,以便执行完某项处理后,仍可选择其他项处理。在循环内先显示提示信息,然后读取用户输入,使用switch语句对用户的输入进行判断,分别调用相应的模块,当某模块结束后再次回到文本菜单,直到用户选择结束程序菜单,才退出循环,从而退出系统。(3) 外部文件的类型:文件采用的二进制的文件,对文件的读写采用顺序文件的方式,并使用fread和fwrite等函数对文件进行操作。(4)清屏函数:一般由上一级菜单屏幕进入下一级菜单屏幕或由下一级菜单屏幕返回上一级菜单屏幕都需要清除屏幕原来显示的内容。同时在调用程序的过

7、程中,记录需要清屏的位置,然后修改代码,加入clrscr()函数清屏。(5)提示信息:一般的输入与输出需有相应的提示信息,以增加用户的交互性,增加输出的可读性,以帮助用户使用程序。(6)设置颜色:textbackground()、textcolor()函数设置背景和前景颜色(7)光标定位:gotoxy(列,行); 光标定位3.5模块设计根据功能要求,本系统为五大主要模块,具体模块如表所示。 表 通讯录管理管理系统的模块main()主控函数add()增加个人资料del()删除个人资料edit()修改个人资料search()查找个人资料主函数display()浏览所有信息login()限制登陆口令

8、pause()等待Y、y、n、Y键输入pause2()等待任意键输入load_rec()统计记录数search_name()按姓名查找个人资料search_qq()按QQ查找个人资料search_email()按EMAIL查找个人资料3.6处理流程(1)口令设计模块(2)通讯录主界面模块(3)增加记录模块 (4)显示记录模块(5)删除记录(6)修改记录四、结论通信录管理系统的编写,看似杂乱无头绪,实际上却并不如此。它的每一个功能都能分成模块,有句话说的好,大事化小,小事化了。C语言编程也正式如此,把一个大的程序分为若干相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,这样不仅降低了难度

9、还使得思路清晰,很容易编写出要做的程序,从而为设计一些较大的软件打下了良好的基础。分析问题:通讯录管理的整体功能都包括登陆限制、增加成员、删除成员、查看成员、修改成员、登陆口令五大板块,而查看有包括姓名查看,电话查看,QQ查看,E-mail查看四个模块。(1) 设计的数据对象包括整形:编号。字符型:姓名、电话、E-mail、QQ、地址。(2) 数据结构线性数据结构,定义人数上限为100.算法的设计:(1) 自顶向下 现有全局,在进行整体设计,然后再进行下层的设计,逐步实现精细化。采用这种方法能够做到胸有全局,能全盘考虑,不至于顾此失彼,头重脚轻。(2) 逐步细化 一步步地将上层的任务分解成较小

10、的、易于实现的任务,知道可以很简单实现为止。编写源程序:(1) 不求速度,但求质量!一步一个脚印,编写程序时候宁可速度慢些也要尽量保证质量,做到尽量不出错。(2) 精力集中,全神贯注!写程序时候最忌讳三心二意,这样才能思路清晰保证质量。(3) 保持一个良好的编程心态,不要被长长的代码吓到,更不要厌烦,既然同样都是写,为什么不仲满激情的去写那? 程序的编译与运行:(1) 查找错误是一件让人闹心的事,但是要注重技巧,注意平时经验的积累。才能在最快的时间找出错误(2) 用心去查找,也许你会发现错误并不是很难找(3) 程序编译成功不要满足现状,要积极测试程序的可用性,对功能不理想,存在缺点的地方,积极

11、的改进,完善。 五、结束语在实训过程中,使我良好的锻炼了自己,首先是兴趣方面,通过编写通讯录管理系统使我更加喜欢编程,使我从以前的迷茫状态中解脱出来,使我了解了编程的真正意义。我想这对我以后的人生有着很大的帮助。其次通过编写通讯录管理系统使我对写程序有了一定的思路,不像以前无从下手,使我理解了算法的意义,使我懂得了模块化思想的好处。通过一个星期的编写代码,使我对书本上的知识有了更深的理解,甚至有很多不懂的问题在这过程中自然而然的理解了。对期末考试更有了信心。在黄爽老师的悉心指导下,我对C语言有了更深刻的理解,对程序的算法,数据的定义,程序的改错等方面的能力有了很大提高,自身的注意力,耐心,和对

12、编程的兴趣有了很大增长,使我获益匪浅。六、参考书目:1 周成义,汤德俊,钟菊,C语言程序设计与数据结构,中国铁道出版社,北京,2007年8月2(美)克尼汉,(美)里奇 著,徐宝文,李志 译, C程序设计语言,机械工业出版社2004年01月3 七、附录:(源程序清单)/*通讯录程序*/#include stdio.h#define size 100#define len sizeof(struct ren) struct ren int num; char name10; char tel12; char email20; char qq12; char address50; rensize;

13、FILE *fp; void index(); void add(); void del(); void edit(); void search(); void display(); void login(); char pause(); void pause2(); int load_rec(); char search_name(); char search_qq(); char search_email(); main() login();getch(); void login() int i=0,count=0; char ch,in_psw20,psw20=123;textbackg

14、round(6); textcolor(3); clrscr(); while(1) gotoxy(25,12); printf(请输入密码:); while (ch=getch()!=13) in_pswi+=ch; printf(*) ; if(i=20) break; in_pswi=0; if(strcmp(in_psw,psw)=0) gotoxy(25,13); printf(密码正确!); getch(); index(); break; else count+; gotoxy(25,13); printf(密码错误重新输入!); getch(); if(count=3) got

15、oxy(25,14); printf(密码错误次数过多); gotoxy(25,15); printf(所以你必须关机!); getch(); system(shutdown -s ); break; clrscr(); void index()/*主界面模块*/ char select; /*实现菜单*/ while(1) clrscr(); printf(nt 通讯录); printf(nt=); printf(nt 1 增加记录); printf(nt 2 删除记录); printf(nt 3 修改记录); printf(nt 4 显示所有记录); printf(nt 5 查找记录);

16、printf(nt 6 退出); printf(nt=); printf(nt 请选择:(1-6); select=getch(); switch(select) case1:add(); break; case2:del(); break; case3:edit(); break; case4:display(); break; case5:search(); break; case6:exit(0); default:printf(nt请选择正确的数字范围); getch(); char pause() char c; while(1) c=getch(); if(c=Y|c=y|c=N|

17、c=n) break; return(c); void pause2() printf(n按任意键继续.); getch(); int load_rec() int num=0; /*文件的记录数*/ fp=fopen(txl.dat,rb); while(!feof(fp) fseek(fp,num*len,0); fread(&rennum,len,1,fp); num=num+1; fclose(fp); return(num-1); void add() int n; char c=y; if(fp=fopen(txl.dat,rb)=NULL) n=load_rec(); while

18、(c=Y|c=y) else clrscr();/*清屏*/ printf(n输入数据); printf(n=); printf(n请输入姓名:); scanf(%s,renn.name); printf(n请输入电话:); scanf(%s,renn.tel); printf(n请输入E_MAIL:); scanf(%s,renn.email); printf(n请输入QQ号码:); scanf(%s,renn.qq); printf(n请输入地址:); scanf(%s,renn.address); printf(nt=); renn.num=n+1; printf(nt编号t姓名t电话t

19、emailtQQt地址); printf(nt%dt%st%st%st%st%sn, renn.num,renn.name,renn.tel,renn.email, renn.qq,renn.address); printf(n输入是否正确(Y/N):); c=pause(); /*等待Y,y,N,n键处理函数*/ if(c=n|c=N) printf(n重新输入数据); pause2();/*等待任意键处理函数*/ c=y; continue; fp=fopen(txl.dat,ab+); fseek(fp,len,2); fwrite(&renn,len,1,fp);/*fwrite(bu

20、ffer,size,count,fp) fclose(fp);/*文件关闭*/ n=n+1; /*数组下标不断加1*/ printf(n是否继续输入(Y/N):); c=pause();/*等待Y,y,N,n键处理函数*/ void del() int n,i,j,m,count=0,count1=0; char del_name10,c; clrscr(); if(fp=fopen(txl.dat,ab)=NULL) printf(文件找不到.); pause2(); n=load_rec(); gotoxy(25,12); printf(请输入要删除的姓名:); scanf(%s,del_

21、name); clrscr(); for(i=0;in;i+) clrscr(); if(strcmp(reni.name,del_name)=0) count+; printf(找到第%d个记录,count); printf(nt编号t姓名t电话temailtQQt地址); printf(nt=); printf(nt%dt%st%st%st%st%sn, reni.num,reni.name,reni.tel,reni.email, reni.qq,reni.address); printf(真的删除吗?(Y/N):); c=pause(); /*等待Y,y,N,n键处理函数*/ if(c

22、=y|c=Y) count1+; for(j=i;jn;j+) renj.num=renj+1.num-1; strcpy(renj.name,renj+1.name); strcpy(renj.tel,renj+1.tel); strcpy(renj.email,renj+1.email); strcpy(renj.qq,renj+1.qq); strcpy(renj.address,renj+1.address); i-; printf(n记录已删除!); getch(); fp=fopen(txl.dat,wb+); rewind(fp); for(m=0;m=n) printf(n记录

23、没有找到!); pause2(); void edit() int n,i,j,m,count=0; char edit_name10,c; clrscr(); if(fp=fopen(txl.dat,ab)=NULL) printf(文件找不到.); pause2(); n=load_rec(); gotoxy(25,12); printf(请输入要修改的姓名:); scanf(%s,edit_name); clrscr(); for(i=0;in;i+) clrscr(); if(strcmp(reni.name,edit_name)=0) count+; printf(找到第%d个记录,

24、count); printf(nt编号t姓名t电话temailtQQt地址); printf(nt=); printf(nt%dt%st%st%st%st%sn, reni.num,reni.name,reni.tel,reni.email, reni.qq,reni.address); printf(n是否修改记录?(Y/N):); c=pause(); loop: if(c=y|c=Y) printf(nt请输入修改后的数据:); printf(nt=); printf(n请输入姓名:); scanf(%s,reni.name); printf(n请输入电话:); scanf(%s,ren

25、i.tel); printf(n请输如的E-MAIL:); scanf(%s,reni.email); printf(n请输入QQ号码:); scanf(%s,reni.qq); printf(n请输入的地址:); scanf(%s,reni.address); printf(nt=); printf(nt编号t姓名t电话temailtQQt地址); printf(nt%dt%st%st%st%st%sn, reni.num,reni.name,reni.tel,reni.email, reni.qq,reni.address); printf(n输入是否正确(Y/N):); c=pause(); if(c=n|c=N) printf(n重新输入数据); pause2(); c=y; goto loop; fp=fopen(txl.dat,wb+); rewind(fp); for(m=0;mn;m+) fseek(fp,m*len,0); fwrite(&renm,len,1,fp); fclose(fp); if(count=0) printf(没有您要查找的记录!); pause2(); else printf(文件尾部 ); void display() /*浏览所有记录*/ int n,i; clrscr(); if(fp=fope

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

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