C语言程序设计基础》上机实验报告 模版

发布 2019-05-26 07:55:15 阅读 8738

成都信息工程学院计算机系。课。程。

实。验。报。告。

通过亲自设计程序,可以令我们熟悉c语言操作,更熟练的掌握c语句。初步体会编程的过程,为将来的程序深入学习打下基础和培养兴趣。

tc2.0职工信息管理系统。

要求:职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,**等(职工号不相等)。试设计一职工信息管理系统,使之能够提供下列功能:

1)系统以菜单方式工作

2)职工信息录入功能(职工信息用文件保存)

3)职工信息浏览功能

4)职工信息查询功能,查询方式:

1)按学历查询

2)按职工号查询

5)职工信息删除,修改功能(可选项)。

思路:1)录入并向文件里保存数据的实现思路:c语言并没有提供由键盘输入数据直接录入文件的功能,只有内存变量向文件写入数据的功能,而由键盘输入数据可以到内存变量,因此实现此部分功能时,应当由键盘将数据放入变量,再由变量写入文件。

这里录入要求不采用书上例子,它是用结构体数组,我们要求只用一个结构体实现。先将一个人的信息放入结构体,将这个结构体数据写入文件后,再将下一个人的信息继续放在这个结构体中,再将这个结构体写入文件。这样节省内存空间。

计算并修改文件里数据的实现思路:这部分的功能的实现应当先将文件的数据读到变量当中,在变量当中完成计算,再将数据写入文件。如果只是修改文件的数据,并不计算,则可以直接定位到文件中相应的位置,写入数据,则把原来的数据覆盖以完成修改。

2)向文件里追加数据的实现思路:文件本身提供了这项功能,只要以 “a”的方式打开就行。然后向文件写入的数据,直接放在文件末尾。

3)查找文件里是否有某项数据的实现思路:c语言并没有提供判断文件内容的功能,必须将文件内容读到变量里再进行判断。实际的查找可能是在大量的数据里的查找,高效的查找是折半查找(下学期的数据结构专门讲这一内容),折半的前提是排序,因此需先对排序后的文件读出,以折半方式查找。

(这要要求,是希望巩固折半查找与排序两个重要算法,至于它的时空效率是否高,可以学完《数据结构》知识后自己再判断)。

4)根据要求显示文件里的某些数据或全部数据的实现思路:c语言没有提供将文件内容显示的功能,所以需要将文件内容读到变量里,再显示变量。

5)在文件里插入或删除某项数据的实现思路:c语言同样没有直接提供该项功能,因此必须借由内存变量完成。由以前的知识知道,在大量的数据里删除一个数,用数组表示不合适,因为涉及到大量的数据的移动,用链表是合适的,效率高(关于这一点,在《数据结构》这门课有详细的讲解)。

因此完成这部分操作要求用链表实现,先将文件里的数据读出组织成链表,在链表上完成插入与删除后,再将链表中的数据写入文件。

6)按某个数据项进行排序生成排序文件的实现思路:排序是在数组里实现。因此先要将文件里的数据读到数组里,将数组排完序后,再将数据写入文件(一般写入一个新文件)。

1.显示主菜单(以如下程序作为介绍)

2.添加职工信息。

3.浏览职工信息。

4.查询职工信息。

4(1)根据标号查询职工信息。

2)根据姓名查询职工信息。

3)根据年龄查询职工信息。

5.修改职工信息。

浏览修改后的职工信息。

6.删除职工信息。

浏览删除后的职工信息。

7.用链表添加职工信息。

浏览添加后的职工信息。

1.光条菜单的错误:刚开始只能用键盘上的英文字母控制光条上下移动,想用上下箭头的ascii**,结果错误不能上下移动。

解决方法:使用键盘扫描码。

2、浏览函数 scan()在调试和链接的时候都没有出现错误提示,但在运行的时候出现了问题。写入指定位置的文件,打开后总会有乱码。与c语言课本上的例题对照后发现,我写的fopen("wenjian","ab")没有指定文件的存储类型。

解决方法:在文件名wenjian后面加上。txt后即可。

3.浏览函数scan()遇到的问题虽然不大,但解决起来很麻烦。理想的运行结果是美观整齐。即下面的职工信息分别与第一个printf输出的中文项目提示对齐。

解决方法:不断修改空格个数,不断运行察看效果。

4.程序运行后菜单界面不消失。

解决方法:使用清屏函数,是每次运行后界面还原。

5.功能函数运行完后会跳出界面,直接退出。

解决方法:在每个功能函数的后面加如返回值。

源程序:#include<>

#include<>

#define esc 0x1b键盘扫描码*/

#define enter 0x0d

#define up 0x48

#define down 0x50

#define left 0x4b

#define right 0x4d

typedef struct定义存放职工信息的类型*/

int no;

int age;

char name[20];

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();

void initial定义初始化程序的函数*/

int i,j;

char list[7][20]=;

cleanscreen();

textbackground(yellow);

for(i=1;i<=14;i画窗口*/

gotoxy(32,4);

textcolor(black);

cprintf("w e l c o m e !"

gotoxy(31,14);

cprintf("worker system --by gk");

for(i=0;i<7;i显示菜单*/

void printpause暂停*/

printf("press any key to go on .

getch();

void guangtiao(int flag定义画光条的函数*/

char list[7][20]=;

gotoxy(34,flag+5);

textcolor(white);

textbackground(black);

cprintf("%s",list[flag-1]);

textcolor(lightgray);

int add添加信息*/

workerbasic new;

file *fp=null;

char ch='y';

while(ch=='y')

if(fwrite(&new,sizeof(workerbasic),1,fp)!=1)

fclose(fp);

printf("whether go on(y or n):"

scanf("%c",&ch);

return 0;

int scan查看信息*/

workerbasic load;

file *fp=null;

int n=0;

cleanscreen();

if((fp=fopen(""rb"))null)

printfn");

printf("no.\tworker'sage\tworker'name");

while(!feof(fp))

C程序设计上机实验报告

input n 4 input array a 2 1 5 如果a 2 1 的输入改为9,则程序就应该输出 no 四 程序清单。第一题。include int main int n,i,index,max,min int a 10 printf input n scanf d n printf in...