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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

最新版《C语言程序设计基础》上机实验报告模版.docx

1、最新版C语言程序设计基础上机实验报告模版成都信息工程学院计算机系课程实验报告实验课程:C语言程序设计2实验项目:职工管理系统指导教师: 李莉丽学生姓名:桂柯 学生学号:班 级:计科3班实验地点: 5201实验时间:2011 年 5月 11日 点 点实验成绩:评阅老师:李莉丽(说明:实验报告必须包含下面的每项内容,根据实验情况认真填写,封面必须打印或复印(A4纸),书写上机实验报告内容的纸张也用A4纸,最后从侧面装订)一【上机实验目的】通过亲自设计程序,可以令我们熟悉c语言操作,更熟练的掌握c语句。初步体会编程的过程,为将来的程序深入学习打下基础和培养兴趣。二【实验环境】TC2.0三【上机实验内

2、容】职工信息管理系统要求:职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职工号不相等)。试设计一职工信息管理系统,使之能够提供下列功能: (1)系统以菜单方式工作 (2)职工信息录入功能(职工信息用文件保存) (3)职工信息浏览功能 (4)职工信息查询功能,查询方式: 1)按学历查询 2)按职工号查询 (5)职工信息删除,修改功能(可选项)。思路:(1)录入并向文件里保存数据的实现思路:C语言并没有提供由键盘输入数据直接录入文件的功能,只有内存变量向文件写入数据的功能,而由键盘输入数据可以到内存变量,因此实现此部分功能时,应当由键盘将数据放入变量,再由变量写入文件。这里录入要

3、求不采用书上例子,它是用结构体数组,我们要求只用一个结构体实现。先将一个人的信息放入结构体,将这个结构体数据写入文件后,再将下一个人的信息继续放在这个结构体中,再将这个结构体写入文件。这样节省内存空间。计算并修改文件里数据的实现思路:这部分的功能的实现应当先将文件的数据读到变量当中,在变量当中完成计算,再将数据写入文件。如果只是修改文件的数据,并不计算,则可以直接定位到文件中相应的位置,写入数据,则把原来的数据覆盖以完成修改。(2)向文件里追加数据的实现思路:文件本身提供了这项功能,只要以 “a”的方式打开就行。然后向文件写入的数据,直接放在文件末尾。(3)查找文件里是否有某项数据的实现思路:

4、C语言并没有提供判断文件内容的功能,必须将文件内容读到变量里再进行判断。实际的查找可能是在大量的数据里的查找,高效的查找是折半查找(下学期的数据结构专门讲这一内容),折半的前提是排序,因此需先对排序后的文件读出,以折半方式查找。(这要要求,是希望巩固折半查找与排序两个重要算法,至于它的时空效率是否高,可以学完数据结构知识后自己再判断)。(4)根据要求显示文件里的某些数据或全部数据的实现思路:C语言没有提供将文件内容显示的功能,所以需要将文件内容读到变量里,再显示变量。(5)在文件里插入或删除某项数据的实现思路:C语言同样没有直接提供该项功能,因此必须借由内存变量完成。由以前的知识知道,在大量的

5、数据里删除一个数,用数组表示不合适,因为涉及到大量的数据的移动,用链表是合适的,效率高(关于这一点,在数据结构这门课有详细的讲解)。因此完成这部分操作要求用链表实现,先将文件里的数据读出组织成链表,在链表上完成插入与删除后,再将链表中的数据写入文件。(6)按某个数据项进行排序生成排序文件的实现思路:排序是在数组里实现。因此先要将文件里的数据读到数组里,将数组排完序后,再将数据写入文件(一般写入一个新文件)。四【上机调试程序流程图】1.显示主菜单(以如下程序作为介绍)2.添加职工信息3.浏览职工信息。4.查询职工信息。4(1)根据标号查询职工信息。(2)根据姓名查询职工信息。(3)根据年龄查询职

6、工信息。5.修改职工信息。浏览修改后的职工信息。6.删除职工信息。浏览删除后的职工信息。7.用链表添加职工信息。浏览添加后的职工信息。五【上机调试中出现的错误信息、错误原因及解决办法】1.光条菜单的错误:刚开始只能用键盘上的英文字母控制光条上下移动,想用上下箭头的ASCII代码,结果错误不能上下移动解决方法:使用键盘扫描码。2、浏览函数 scan()在调试和链接的时候都没有出现错误提示,但在运行的时候出现了问题。写入指定位置的文件,打开后总会有乱码。与c语言课本上的例题对照后发现,我写的fopen(wenjian,ab)没有指定文件的存储类型。解决方法:在文件名wenjian后面加上.txt后

7、即可。3.浏览函数scan()遇到的问题虽然不大,但解决起来很麻烦。理想的运行结果是美观整齐。即下面的职工信息分别与第一个printf输出的中文项目提示对齐。解决方法:不断修改空格个数,不断运行察看效果。4.程序运行后菜单界面不消失解决方法:使用清屏函数,是每次运行后界面还原。5.功能函数运行完后会跳出界面,直接退出。解决方法:在每个功能函数的后面加如返回值。六【上机调试后的源程序及还存在的问题】源程序:#include#include#define ESC 0x1b /*键盘扫描码*/#define ENTER 0x0d#define UP 0x48#define DOWN 0x50#def

8、ine LEFT 0x4b#define RIGHT 0x4dtypedef struct /*定义存放职工信息的类型*/ int No; int age; char name20;WORKERBASIC;typedef struct worker WORKERBASIC workerinfo; struct worker *next;WORKER;void cleanscreen() /*清屏*/ int i,j; gotoxy(1,1); textbackground(RED); for(i=1;i=25;i+) for(j=1;j=80;j+) cprintf( ); clrscr();

9、void Initial() /*定义初始化程序的函数*/ int i,j; char list720=1. Add, /*菜单名*/ 2. Scan, 3. Edit, 4. Modify, 5. Delete, 6. Into, 7. Exit; cleanscreen(); textbackground(YELLOW); for(i=1;i=14;i+) /*画窗口*/ for(j=1;j=80;j+) if (i=1|i=14|j=79) cprintf( ); else if (i=3&i=5&j=76) cprintf( ); else printf( ); gotoxy(32,4

10、); textcolor(BLACK); cprintf(W E L C O M E !); gotoxy(31,14); cprintf(Worker System - BY GK); for(i=0;iname); t.No=max-No; strcpy(max-name,min-name); max-No=min-No; strcpy(min-name,t.name); min-No=t.No;int EditByNo(WORKERBASIC *F1,int n) /*按编号查找*/ int i,j,k,num,high,low,mid,flag=0; for(i=0;in-1;i+)

11、/*排序*/ k=i; for(j=i+1;jNo) (F1+j*sizeof(WORKERBASIC)-No) k=j; if (k!=i) exchange(F1+i*sizeof(WORKERBASIC),(F1+k*sizeof(WORKERBASIC); /*此显示信息只为说明职工已按编号排序,该部分可删除*/ printf(-n); printf(No.tworkeragettworkernamen); for(i=0;iNo,(F1+i*sizeof(WORKERBASIC)-age, (F1+i*sizeof(WORKERBASIC)-name); printf(-n); pr

12、intf(nPlease input a number you want to search: ); scanf(%d,&num); getchar(); low=0; /*折半法*/ high=n-1; while(low(F1+mid*sizeof(WORKERBASIC)-No) low=mid+1; else if (numNo) high=mid-1; else if (num=(F1+mid*sizeof(WORKERBASIC)-No) flag=1; if (flag=0) printf(can not find the worker!n); else printf(-n);

13、printf(No.tworkeragettworkernamen); printf(%dt%dttt%sn,(F1+mid*sizeof(WORKERBASIC)-No,(F1+mid*sizeof(WORKERBASIC)-age, (F1+mid*sizeof(WORKERBASIC)-name); printf(-n); PrintPause(); return 0;int EditByName(WORKERBASIC *F1,int n) /*按姓名查找*/ char str20; int i,j,k,flag=0,low,high,mid; for(i=0;in-1;i+) /*排

14、序*/ k=i; for(j=i+1;jname, (F1+j*sizeof(WORKERBASIC)-name )0) k=j; if (k!=i) exchange(F1+i*sizeof(WORKERBASIC),(F1+k*sizeof(WORKERBASIC); /*此显示信息只为说明职工已按名字排序,该部分可删除*/ printf(-n); printf(No.tworkeragettworkernamen); for(i=0;iNo,(F1+i*sizeof(WORKERBASIC)-age, (F1+i*sizeof(WORKERBASIC)-name); printf(-n)

15、; printf(nPlease input a worker you want to exactly search: ); scanf(%s,str); getchar(); low=0; /*折半法*/ high=n-1; while(lowname )0) low=mid+1; else if (strcmp( str, (F1+mid*sizeof(WORKERBASIC)-name )name )=0) flag=1; if (flag=0) printf(can not find the worker!n); else printf(-n); printf(No.tworkerag

16、ettworkernamen); printf(%dt%dttt%sn,(F1+mid*sizeof(WORKERBASIC)-No, (F1+mid*sizeof(WORKERBASIC)-age,(F1+mid*sizeof(WORKERBASIC)-name); printf(-n); PrintPause(); return 0;int EditByage(WORKERBASIC *F1,int n) /*按年龄查找*/ int a,flag=0,i; printf(-n); printf(No.tworkeragettworkernamen); for(i=0;iNo,(F1+i*s

17、izeof(WORKERBASIC)-age, (F1+i*sizeof(WORKERBASIC)-name); printf(-n); printf(nPlease input workerage: ); scanf(%d,&a); getchar(); for(i=0;iage) if(flag=0) printf(-n); printf(No.tworkeragettworkernamen); flag=1; printf(%dt%dttt%sn,(F1+i*sizeof(WORKERBASIC)-No, (F1+i*sizeof(WORKERBASIC)-age, (F1+i*size

18、of(WORKERBASIC)-name); if (flag=0) printf(can not find the worker!n); else printf(-n); PrintPause(); return 0;int Edit() /*查找*/ WORKERBASIC load,*F1; int n=0,key=0,i; FILE *fp=NULL; cleanscreen(); if (fp=fopen(wenjian.txt,rb)=NULL) printf(can not find wenjian!n); PrintPause(); return 0; while(!feof(

19、fp) /*统计职工的数量*/ if (fread(&load,sizeof(WORKERBASIC),1,fp)=1) n+; fclose(fp); if (n=0) printf(No information of worker!n); PrintPause(); return 0; F1=(WORKERBASIC *)malloc(n*sizeof(WORKERBASIC); /*按职工的人数申请内存空间*/ fp=fopen(wenjian.txt,rb); for(i=0;in;i+) if (fread(F1+i*sizeof(WORKERBASIC),sizeof(WORKER

20、BASIC),1,fp)!=1) printf(read failed!n); PrintPause(); return 0; fclose(fp); while(key!=ESC) clrscr(); printf(Please select search method:n); printf(n); printf(1t=By No.n); printf(2t=By Name.n); printf(3t=By age.n); printf(Esct=Exitn); printf(n); printf(Press 1 2 3 or Esc?n); key=getch(); switch(key) case 1: key=EditByNo(F1,n); break; case 2: key=EditByName(F1,n); break; case 3: key=EditByage(F1,n); break; free(F1); retu

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

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