还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
引言通过大一下学期对C语言的学习,了解到了很多C语言的相关知识学习的过程有很多困惑但是当自己能够__的看懂,能够__的完成一个简单的程序时,心中就会收获无限的喜悦和成就感我可以看懂一些简单的程序,编写一些简单的程序,更多的是学会了一种思想——编程,它让我去思考很多日常生活中的事物是怎样通过一个个小小的函数实现其功能的,激发我探究的兴趣,更让我认真学习C语言的程序设计C语言是在国内外广泛使用的一种计算机语言C语言简洁紧凑、使用灵活方便、运算符丰富、适用范围大、可移植性好它既具有高级语言的特点,又具有汇编语言的特点它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序在这次的课程设计中我将通过亲自设计程序,让自己熟悉C语言操作,更熟练的掌握C语句初步体会编程的过程,在不断的调试中获得最为完整的程序,为将来的程序深入学习打下基础和培养兴趣1功能简介和设计要求1.1 程序功能简介可以向文件中录入、删除、添加、查询职工信息,也可以从文件中导出来浏览1.2 程序设计要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、__等(职工号不重复)试设计职工信息管理系统,使之能提供以下功能系统以菜单方式工作职工信息录入功能职工信息用文件保存--输入职工信息浏览功能 --输出查询信息功能至少一种查询方式 --算法 按职工号查询 按学历查询按__查询职工信息删除、添加功能2程序总体设计框图:用键盘输入职工信息:将信息写入指定文本文件:将信息导出放在结构数组em中:将所有信息显示在屏幕上:输入职工号显示信息:输入名字显示信息:输入学历显示信息:删除原有的职工信息:添加新的职工信息3主要函数介绍 主函数__in 显示系统工作菜单,罗列该系统所有功能先声明所有将会调用到的函数名再运用选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序亮点定义一个全局变量*p和全局变量a其中a表示当前系统中职工人数,p指向a的地址,追踪人数变化,这样在添加或者删除导致人数变化后,浏览函数display能够正确显示出当前人数的职工信息宏定义define N指定首次输入的职工人数,可根据不同需要随时更改 n=1n=2n=3n=4n=5default输入函数voidinput()定义一个结构structemployee和数组em【N】用来储存N个职工的所有信息(职工号em【i】number、姓名em【i】name、性别em【i】___、年龄em【i】age、学历em【i】___li、工资em【i】wage、住址em【i】address、__em【i】telephone)通过for循环输入所有职工信息用printf语句提示需要输入的内容,接着用scanf语句输入相应内容输入完毕后套用保存函数s__e(N)将所输入的信息写入指定文件 =0!=0 保存函数void s__e(int m)定义文件指针fp,用fopen只写打开指定在D盘的“”文本文件首先用if语句判断文件是否打开成功,若fopen返回值不为0,则可继续下面操作用for循环通过fprintf语句将结构数组em中的内容写入保存在D盘的文本文件里面形参m指需要写入文件的职工人数最后关闭文件=0 !=0=0!=0 导出函数void loadint b 首先判断fopen只读打开“”是否成功,若其返回值不为零,继续下面操作用for循环通过fscanf语句将文件中的职工信息取出放到em结构数组里面形参b指需要导出的职工人数最后关闭文件 图同上 4功能模块函数设计和调试
4.1功能模块函数设计在整个程序的编译过程中,在调试的时候出现了好多的错误和警告,经过认真的分析和修改都可以解决,但是其中遇到最大的问题是所有程序代码编完放在一起后,虽然能够成功运行,但是还是出现了一些小问题,就是在调用随机分配函数时职工的工号不随机分配,每次到了自动分配工号的时候都会跳过那一步就直接进行下一环节输入了这使我百思不得其解,后来我在网上查询了好多资料后终于明白了,原来在使用随机分配函数时首先要调用随机分配函数所在的函数库,这样才能够正常使用使用时如果职工人数发生变化,会导致文件后部出现乱码的现象若要使每次运行都正常,必须在人数改变后退出程序,修改宏定义N的值这样很不方便,不能够连续运行为解决这一大问题,最后我想到了定义一个全局变量,用来追踪链接最新的人数特别是删除和添加这两个会导致人数变化的函数中,全局变量p起了很大作用经过一边修改一边调试,最终可以成功的用p串联整个函数,在连续运行时,总能根据最新的人数调用各个函数另外在串联所有函数时,调试提示出错有以下几个函数“search;srand;display;basic;types”解决在函数名前加void指明类型整个程序代码是分块书写的,每个函数都可以__运行只有输入函数查询菜单函数写得很顺利,一次性就能够成功运行,其他函数在调试过程中或多或少都出现了问题保存函数s__e在调试和链接的时候都没有出现错误提示,但在运行的时候出现了问题写入指定位置的文件,打开后总会有乱码与c语言课本上的例题对照后发现,在存储文件时一定要指定文件的存储类型这样才能够正确的进行存储,不会出现乱码的现象导出函数load遇到两个问题1是为方便直接将保存函数__过来进行修改时,忘了修改文件的打开方式,不能运行经过多次检查后终于发现了,解决将只写改为只读就ok了2是用fscanf语句时,漏写地址符调试和链接都没问题,但__运行后,总出现一个提示出错的蓝色小窗口经过老师的提示发现了错误的所在解决方法在em[i].name等之前加上取地址符就可以解决在进行职工信息录入的时候一定要注意中文和英文之间的切换,不然的话会出现无__确的输入和跳转现象
4.2程序调试{intnum;charname
[10];char___;intage;char___li
[30];intwage;charaddr
[30];longinttel;}em
[100];/*定义一个结构体*/voidmenu;voidinput;voids__eint;voiddisplay;voiddel;voidadd;voidsearch;voidsearch_num;voidsearch____li;voidsearch_tel;voidmodify;/*定义各函数*/voidmenu/*菜单函数*/{printf☆☆☆C语言程序设计☆☆☆\n;printf\n;printf∮机设1401班张凯凯∮\n;printf\n;printf**********职工信息管理**********\n;printf
1.录入职工信息;printf
2.浏览职工信息\n;printf
3.查询职工信息;printf
4.删除职工信息\n;printf
5.添加职工信息;printf
6.修改职工信息\n;printf
7.退出\n;printf**********谢谢使用**********\n;printf\n;printf\n;}void__in{menu;/*调用菜单函数*/intnflag;chara;do{printf请选择你需要操作的步骤1--7:\n;scanf%dn;ifn=1n=7{flag=1;break;}else{flag=0;printf您输入有误,请重新选择!;}}whileflag==0;whileflag==1{switchn{case1:printf◆◆◆输入职工信息◆◆◆\n;printf\n;input;break;case2:printf◆◆◆浏览职工信息◆◆◆\n;printf\n;display;break;case3:printf◆◆◆按职工号查询职工信息◆◆◆\n;printf\n;search;break;case4:printf◆◆◆删除职工信息◆◆◆\n;printf\n;del;break;case5:printf◆◆◆添加职工信息◆◆◆\n;printf\n;add;break;case6:printf◆◆◆修改职工信息◆◆◆\n;printf\n;modify;break;case7:exit0;break;default:break;}getchar;printf\n;printf是否继续进行yorn:\n;scanf%ca;ifa==y{flag=1;systemcls;/*清屏*/menu;/*调用菜单函数*/printf请再次选择你需要操作的步骤1--6:\n;scanf%dn;printf\n;}elseexit0;}}voidinput/*录入函数*/{intim;printf请输入需要创建信息的职工人数1--100:\n;scanf%dm;fori=0;im;i++{printf职工号;srandinttime0;em[i].num=rand%_____+20140000;ifem[i].num!=em[i-1].numprintf%8dem[i].num;printf\n;printf请输入姓名:;scanf%sem[i].name;getchar;printf请输入性别f--女m--男:;scanf%cem[i].___;printf请输入年龄:;scanf%dem[i].age;printf请输入学历:;scanf%sem[i].___li;printf请输入工资:;scanf%dem[i].wage;printf请输入住址:;scanf%sem[i].addr;printf请输入__:;scanf%ldem[i].tel;printf\n;}printf\n创建完毕!\n;s__em;}voids__eintm/*保存文件函数*/{inti;FILE*fp;iffp=fopenemployee_listwb==NULL/*创建文件并判断是否能打开*/{printfcannotopenfile\n;exit0;}fori=0;im;i++/*将内存中职工的信息输出到磁盘文件中去*/iffwriteem[i]sizeofstructemployee1fp!=1printffilewriteerror\n;fclosefp;}intload/*导入函数*/{FILE*fp;inti=0;iffp=fopenemployee_listrb==NULL{printfcannotopenfile\n;exit0;}else{do{freadem[i]sizeofstructemployee1fp;i++;}whilefeoffp==0;}fclosefp;returni-1;}5设计心得与总结 经过一学期的C语言学习,我们掌握了C语言的基础知识,能够读懂别人用c语言设计编译的程序平时的程序设计大多是在书上看到的都是以书面的形式出现,虽然有所接触,但都不完全而这周的课程设计,却让我们完完全全用自己所学到的知识编写了一个完整的系统程序这是一个新的挑战,也是一种新的学习 我们组选择的题目是——职工信息管理系统这需要我们自己设计一个系统,可以输入信息,保存到文件里,再从文件里调出来,使之显示在屏幕上,进行删除、添加、查询等对信息的修改初看到这个题目觉得很简单,但当我做到电脑前准备开始编写代码的时候才发现无从下手通过去图书馆查找程序设计相关的书籍,和上网参考前人编写的类似程序,我脑中才有了一个大概的方向 慢慢开始着手写下了第一段输入函数的代码,因为这是我们平时课堂上用的最多最熟的printf语句,写了很长一大段,调式运行竟然成功了,顿时信心倍增于是我开始迫不及待的开始写第二段保存函数我记得第一天下来,我只写好了这两个函数,但还是很开心,因为这是我编的第一个小系统的成功的开始! 接下来的几天都在宿舍整个下午的对着电脑不断的编译、调试、修改,每次编好一个能够成功运行的程序,都会感到很欣慰,并增加继续下去的信心当然其中也有遇到困难的时候好几次遇到编好的程序调试没有错误,却偏偏不能运行这种情况,自己编的程序自己很难发现当中的错误,而电脑又没有提示,这时候就很受打击,也会着急反复检查都找不出毛病来的时候就会有想要放弃的念头有时候就直接关机去做别的事情,等再开始做程序的时候,才发现先前的错误所在这时候会有一种“柳暗花明又一村”的欣慰感觉总之,遇到困难,可以先放一放,让脑子休息一下,忘掉错误的记忆或许等过段时间再回过头来,就会很容易的发现之前的错误了随着编好的程序越多,累积的经验也越多,查找错误就越快了还有会发现很多程序有很多相似之处,可以通过__修改的发式来编写虽然题目要求只需要两种查询方式,但当我编出规律之后自然就想多写一个,写完就会有很大的成就感了 当所有功能函数都编好后,我用主函数将他们串起来,这是遇到最大的问题就是经过删除、添加后职工人数会发生变化想了很久,又翻以前的课堂笔记,最后想到了使用全局变量来解决这个问题这个问题的成功解决预示着我们的职工信息管理系统大功告成! 总之,经过这一次的课程设计,我们体会到了痛苦与快乐同存的感觉当最后一次成功串联运行所有函数时,真的很开心通过这次实践,我们能够更熟练掌握C语言,特别是循环和文件,当时在课堂上没有学太清楚的,这个程序设计之后都很明白了同时增加了我们对程序设计的兴趣,暑假回家我还会尝试着做一些其他的小系统 6____
[1]谭浩强C程序设计(第二版)北京清华大学出版社,2009
[2]谭浩强C程序设计题解与上机指导(第二版)北京清华大学出版社,2009
[3]百度文库输入函数写入函数导出函数浏览函数按职工号查询显示主菜单查询函数按__查询按学历查询删除函数添加函数显示菜单开始输入功能代码switchn退出Exit0调用添加函数Add调用查询函数Search调用删除函数Del调用浏览函数Display调用输入函数Input结束开始i=1Printf(“创建完毕”)结束i++Printf(“提示需要输入的内容”)Scanf(“输入信息”)in开始fopen(“d\\bbb.___”“w”)exitPrintf写入文件imi=0结束fclose(fp)i++。