计算机技术基础(C语言)_第1页
计算机技术基础(C语言)_第2页
计算机技术基础(C语言)_第3页
计算机技术基础(C语言)_第4页
计算机技术基础(C语言)_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机技术基础(C语言)

课程设计指导书

目录

前言2

设计一3

设计二12

设计三19

设计四20

设计五21

设计六22

设计七23

设计八24

设计九25

设计十26

设计十一27

设计十二28

报告样文29

C语言图形函数38

-1-

刖s

课程设计是课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,是

教学计划中综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养

学生的实践和实际动手能力、提高学生全面素质具有很重要。

本实验指导书的主旨是:辅助非计算机专业的学生进行计算机技术基础课程设计。本课

程的课程设计实际是非计算机应用专业学生学习完《计算机技术基础》课程后,进行的一次

全面的综合训练,其目的在于加深对计算机程序设计思路和基本知识的理解,掌握运用软件

开发的基本方法。

按课程设计指导书提供的课题,学生可以根据自己的情况和实验的基本需求独立完成设

计,标有“可选”的部分可根据设计时间的安排及工作量的大小适当选择。也可选用其他课

题或组成设计小组,分模块进行,共同协作完成一个课题的设计任务。要求书写详细的设计

说明书,对复杂的代码段和程序段,应画出程序流程图。

设计完成后,必须提交设计报告,软件数据盘。由指导教师按优秀、良好、中等、及格

和不及格五级分制评定成绩。成绩不及格者不能获得学分,其余可获得1.5学分。严禁相互

抄袭。

-2-

设计一电子通讯录

一、【实验目的】

培养学生综合利用C语言进行程序设计的能力,主要是培养学生利用系统提供的标准

函数进行创新设计。

二、【实验条件】

在安装Windows2000>DOS和TC环境的微机机房进行。

三、【实验内容】

1.add添加好友信息

2.revice修改好友信息

3.delete删除一个好友信息

4.name按名字查找一个好友信息

5.birthday按生日查找一个好友信息电子通讯录功能如下:

Functionchoose

1.Read

2.Append

3.Delete

4.Search

5.Saveandexit

6.Quit

说明:上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个朋友的电话号

码,通讯地址和出生日期,而且它还提供了检索和删除功能。在后面还将提供按生

日先后排序的功能,这些都有助于该通讯录的管理.

四、【实验准备】指导教师由任课教师或本专业教师和工程技术人员担任。指导教师在

课程设计开始前一个月下发课程设计指导书,学生根据个人情况选定自己的课题。选定题目

后查找资料、准备设计材料。

五、【设计思想:】

1.用顺序表设计电子通讯录的结构

为了表示较为复杂的数据内容,一般用结构这种数据类型,第•步就是在结构中定

义所需要的各项信息。一般的通讯录都包括姓名,性别,出生年月,通讯地址和联系电

话这几项,而在这几项中,出生年月又包括年份,月份和日期三项,通讯地址包括邮编

和家庭地址二项,我们把这些联系较为紧密的内容又用单独的结构表示,这样就产生了

电子通讯录的基本结构:

structaddr/*通讯地址结构定义*/

{charpost_num[10];/*邮编*/

charaddr[40];/*家庭地址*/

);

structbirth/*出生年月结构定义*/

{intyear;/*年份*/

intmonth;/*月份*/

intday;/*日期*/

);

structfriend/*电子通讯录结构定义*/

-3-

{intnumber;/*序号*/

charname[20]/*姓名*/

charsex;/*性别*/

structbirthbirth;/*出生年月*/

structaddraddr;/*通信地址*/

chartelephone(13];/*联系电话*/

);

定义的主结构friend包含了前述的五项内容name,sex,和telephone分别代表

了姓名,性别和联系电话。为了让结构中的各项组分更加清晰,定义了二个

小结构birth和addr分别代表出生年月和通讯地址,因此实际上friend包含了

8项内容。

有了结构定义后,我们可以很轻松地构造出电子通讯录的主体:

stryctfriendfriends[50];

采用一维数组friends[50],正是用到了顺序表这种最简单的数据结构来表示

问题。

2.增添电子通讯录中的内容

对于电子通讯录这样一张顺序表来说,内容的录入是必不可少的操作。由

于采用的是顺序存储结构。这项工作很简单,只需要在把输入的信息按顺序放

在空的friends数组元素中即可。函数Data_Input完成了信息的录入工作:

voidData_input(intj)

(

friends[j].number=j;

printf(〃\n\n\n\tNo%drecord”,j);

printf("\n\n\tName:");/*读入姓名*/

scanf,friends[j].name);

printf("\n\tSex(m/f):z,);/*读入姓别*/

scanf(〃%c〃,fefriends[j].sex);

printf("\n\tbirthday:");/*读入出生年月*/

printf(z,\n\t\tyear:,z);

scanf(〃%d〃,&friends[j].birth,year);

printf(,z\n\t\tmonth,z);

scanf&friends[j].birth,month);

printf(,z\n\t\tday,z);

scanf(〃%d〃,&friends[j].birth,day);

printf(z'\n\tPostnumber:z,);/*读入邮编*/

scanffriends[j].addr.post_num);

printf(/z\n\tAddress:,z);/*读入家庭地址*/

scanf(〃%s〃,friends[j].addr.addr);

printf(,z\n\ttelephone:z,);/*读入联系电话*/

scanf(,z%s,z,friends[j].telephone);

}

-4-

录入完毕后典型的一份信息如下所示:

NO:1

Name:张三

Sex:m

Birthday(y/m/d):1980512

Postnum:100034

Address:BeijingUniversity

Tele:(010)62005200

3.电子通讯录记录的维护(插入与删除)

在实际使用中,数据资料输入后,还需要不断的更新和维护操作,最常见的是数

据的插入与删除。作为顺序表来说,如何在插入与删除数据资料后仍然能保持

原有数据之间的关系,是需要考虑的关键问题。

电子通讯录的插入算法如下:

printf(,z\n\tlnsertNo:〃);/*录入插入位置*/

scanf&k);

for(j=i+l;j>k;j-)/*插入位置后的元素顺序后移*/

{strcpy(friends[j].name,friends[jT].name);/*交换元素内容*/

friends[j].sex二friends[j+1].sex;

friends[j].birth.year=friends[j-1].birth,year;

friends[j].birth.month=friends[j-1].birth,month;

friends[j].birth,day=friends[j-11・birth,day;

strcpy(friends[j].addr.post_num,friends[j-l].addr.post_num);

strcpy(friends[j].addr.addr,friends[j-1].addr.addr);

strcpy(friends[j].telephone,friends[j-l].telephone);

}

Data_Input(k);/*插入位置上填入待插入元素*/

i++;/*总元素个数增1*/

删除算法如下:

printfCWDeleteNo:〃);/*读入删除位置*/

scanf("%d",&k);

for(j=k;j<i;j++)/*删除位置前的元素顺序前移*/

(

strcpy(frinds[j].name,frinds[j+l].name);

friends[j].sex=frinds[j+l].sex;

friends[j].birth.year=friends[j+1].birth,year;

friends[j].birth,month二friends[j+1]・birth,month;

frinds[j].birth,day二friends[j+1].birth,day;

strcpy(friends[j].addr.post_num,friends[j+1].addr.post_num);

strcpy(friends[j].addr.addr,friends[j+1].addr.addr);

strcpy(friendstj].telephone,friends[j+1].telephone);

)

i-;/*元素总数减1*/

-5-

函数search的代码如下:

search()

{

printf(/z\n\tPleaseinputname:");/*提示输入要查询的姓名*/

gets(search_name);

for(j=l;j<=i;j++)

{if(strcmp(search_name,friends[j].name)==0)/*比较二个串*/

{Data_Show(j);/*查询成功,打印记录,结束循环*/

break;

)

)

if(j>D/*查询失败,给出提示信息*/

printfCz\n\tNosuchrecords'");

)

文件存盘代码如下

FILE*fp;

voidData_Save()

(

intj;

fp=fopen(,zfriend.txt,〃w〃);/*c以可写方式打开或创建文件friend,txt*/

for(j=l;j<=i;j++)

fwrite(&friends[j],sizeof(structfriend),1,fp);

fclose(fp);

)

处理有关的文件操作,最容易忽视的就是关闭文件的操作..如果不及时关闭,容易造成

文件内容的丢失,或者占用大量的内存,导至程序的执行速度下降。

从文件friend,txt读取记录的代码如下:

voidData_Load()

(

intj;

longk;

fp二fopen("friend,txt","r+t);/*打开文件friend,txt*/

if(fp!=NULL)

{for(i=l;i<50;i++)

{if(j=fgetc(fp)=二EOF)/*判断是否到了文件尾*/

return;

k=i-l;

fseek(fp,k*sizeof(structfriend),SEEK_SET);

fread(&friends[i],sizeof(structfriend),1,fp);/*从文件中读一条记

录*/

)

)

else/*如果文件不存在*/

-6-

{fp=fopen(friend,txt","w");

i=l;

)

}

六、【总体设计】

在前面五个步聚的基础上开始进行程序主函数的设计•主函数首先调用初始化函数

DataLoad从己有文件friend,txt读取记录,如果是第一次使用,那么该文件不存在就创

一个新文件,接下来程序进入一个无限循环,首先用一系列printf语句打印出各功能的选

菜单,并提示按下数字键调用相应的功能。这里使用了switch分支结构来处理按键消息,

是一种典型的用法,当选择了‘quit''''菜单后,程序给出是否存盘的提示。

/*.全部源代码如下*/

#include<stdlib.h>

#include<string.h>

#include<conio.h>

#include<stdio.h>

#include<dos.h>

structaddr/*通讯地址结构定义*/

{charpost_num[10];/*邮编*/

charaddr[40];/*家庭地址*/

);

structbirth/*出生年月结构定义*/

{intyear;/*年份*/

intmonth;/*月份*/

intday;/*日期*/

);

structfriendl/*电子通讯录结构定义*/

{intnumber;/*序号*/

charname[20];/*姓名*/

charsex;/*性别*/

structbirthbirth;/*出生年月*/

structaddraddr;/*通信地址*/

chartelephone[13];/*联系电话*/

}friends[50];

FILE*fp;

inti;

voidData_Load()

intj;

longk;

-7-

fp=fopen(z,friend.txt〃,〃r+t〃);/*打开文件friend,txt*/

if(fp!=NULL)

{for(i=l;i<50;i++)

{j=fgetc(fp);

if(j==EOF)/*判断是否到了文件尾*/

return;

k=i-l;

fseek(fp,k*sizeof(structfriendl),SEEK_SET);

fread(&friends[i],sizeof(structfriendl),1,fp);/*从文件中读取一条记录*/

)

)

else

{fp=fopen("friend,txt”,〃w〃);

i=l;

}

)

voidData_Show(intj)/*打印记录的详细资料*/

{

printf(,,\n\n\tNo:%3d\n,\friends[j].number);

printf(^XnXtBirthday(y/m/d):%4d%2d%2d,\friends[j].birth,year,friends[j].bir

th.month,friends[j].birth,day);

printf(〃\n\tPostnum:%-10s〃,friends[j].addr.post_num);

printf(zz\n\taddress:%-40szz,friends[j].addr.addr);

printf(,/\n\tTele%-13s/,,friends[j].telephone);

)

voidData_Input(intj)/*记录插入函数*/

(

fflush(stdin);

friends[j].number=j;

printf(,z\n\n\n\tNo%drecord”,j);

printfC\n\n\tName:,z);/*读入姓名*/

scanf("%s〃,friends[j].name);

fflush(stdin);

printf(z,\n\tSex(m/f):,z);/*读入性别*/

scanf(〃枇〃,&friends[j].sex);

printf(z,\n\tbirthday");/*读入出生年月*/

printf(〃\n\tyear:〃);

scanf("%d〃,&friends[j].birth,year);

printf(〃\n\t\tmonth:〃);

scanf("%d〃,&friends[j].birth,month);

printf(〃\n\t\tday:〃);

scanf(〃%d〃,ftfriends[j].birth,day);

printf(,,\n\tPost_number:/,);/*读入邮编*/

-8-

scanf(〃/s〃,friends[j].addr.post_num);

printf(z'\n\tAddress:〃);/*读入家庭地址*/

scanf(〃%s〃,friends[j].addr.addr);

printf(//\n\ttelephone:/,);/*读入联系电话*/

scanfC/%sz,,friends[j].telephone);

)

voidData_Save()

(

intj;

fp二fopen("friend.txt〃,〃w〃);

for(j=l;j<=i;j++)

{fwrite(&friends[j],sizeof(structfriendl),1,fp);

)

)

voidmainO

(

intj,k;

charch;

char"searchname;

clrscr0;

Data_Load();

i—;

do

{printf(z,\n\n\n\tFunctionchoose:");

printf(,z\n\tl.Read");

printf(〃\n\t2.Append");

printf(,z\n\t3.Delete");

printf(z,\n\t4.Search");

printf(z,\n\t5.Insert");

printf(z,\n\t6.SaveandExit");

printf(/z\n\t7.Quit");

printf(〃\n\n〃);

printf(〃\tChoice:〃);

ch=getcheO;

switch(ch)

{case5T:j=l;/*显示通讯录中的所有记录*/

while(getch()!=Oxlb&&j<=i)Data_Show(j++);

if(j>i)printf(z,\n\tEndofe_note\nzz);

break;

case'2,:/*增加通讯录中的记录*/

while(getch()!=0xlb&,&i<50)

{i++;

Data_Input(i);

-9-

if(i==50)printf(z,\n\te_noteisfilled\nz,);

break;

case'3':/*删除通讯录中的记录*/

if(i<l)

{printf(〃\n\tNorecords\n,/);

break;

)

printfC\n\tDeleteNo:〃);/*读入删除位置*/

scanf&k);

for(j=k;j<i;j++)/*删除位置前的元素顺序前移*/

{strcpy(friends[j].name,friends[j+l].name);

friends[j].sex=friends[j=l].sex;

friends[j],birth.year=friends[j+1].birth,year;

friends[j]・birth.month=friends[j+1].birth,month;

friends[j].birth.day=friends[j+l].birth,day;

strcpy(friends[j].addr,post_num,friends[j+1].addr.post_num);

strcpy(friends[j].addr.addr,friends[j+l].addr.addr);

strcpy(friends[j].telephone,friends[j+1].telephone);

)

i-;/*元素总数减1*/

break;

case'4':/*通讯录查询功能*/

printf(〃\n\tPleaseinputname:");

gets(search_name);

for(j=l;j<=i;j++)

(

if(strcmp(search_name,friends[j].name)==0)/*比较字符串*/

{Data_Show(j);/*查询成功,打印记录结束循环*/

break;

)

)

if(j>l)/*查询失败*/

printf(,z\n\tNosuchrecords'");

break;

case'5':

printf(z,\n\tlnsertNo:〃);/*录入插入位置*/

scanf&k);

for(j=i+l;j<k;j++)/*插入位置后的元素顺序后移*/

{strcpy(friends[j].name,friends[j-l].name);/*交换元素内容*/

friends[j].sex=friends[j-1].sex;

friends[j].birth,year二friends[j-l].birth,year;

friends[j].birth,month=friends[jT].birth,month;

-10-

friends[j].birth.day=friends[j-l].birth,day;

strcpy(friends[j].addr.post_num,friends[j-1].addr.post_num);

strcpy(friends[j].addr.addr,friendsaddr.addr);

strcpy(friends[j].telephone,friends[j-l].telephone);

)

Data_Input(k);

i++;

break;

case'6':Data_Save();

exit(0);break;

case'7':printf(,z\n\tDoyouwanttosavee_note:(y/n)〃);

ch=getch();

if(ch二二'y')Data_Save();

fclose(fp);

exit(0);

default:printf("Pleasechoosenuml-4\n,z);

}

}while(l);

)

七、【报告要求】要求学生独立完成课程设计任务,并按课程设计要求写出课程

设计说明书。

(1)设计题目;

(2)选题背景

(3)设计思路;

(4)流程图;

(5)程序清单

(6)总结、设计结果说明

-11-

设计二电子留言簿程序

一、【实验目的】

通过本实验,学生应能正确利用所学过的知识,完成实验中所提出的任务,达到综合运

用、掌握网络信息制作与发布的基本技术的目的。

二、【实验条件】

在安装Windows2000、DOS和TC环境的微机机房进行。

三、【实验内容】

4.查看留言信息

5.加入留言信息

6.删除留言信息

四、【实验准备】指导教师由任课教师或本专业教师和工程技术人员担任。指导教师在课程

设计开始前一个月下发课程设计指导书,学生根据个人情况选定自己的课题。选定题目后查

找资料、准备设计材料。

五、【设计思想:】

1、构造留言簿的结构

一个留言必不可少的是内容、其次是留言的日期和时间。和们就按这两点定义留言记录

的结构。

structrecord

structdatet_date;/*留言日期刃

structtimet_time;/*留言时间*/

charevent[100J;/*留言内容*/

structrecord*next;/*指向下一个节点的指针*/

);

在上结构的定义中,用字符串even"100]存放留言内容,结构成员t_date存放留言的日期,

t」ime存放留言的时间。结构data和time的定义是TurboC提供的。它们的定义分别如下

所示:

structdate

intda_year;

charda_day;

charda_mon;

);

structtime

unsignedcharti_min;

unsignedcharti_hour;

unsignedcharti_hund;

unsignedcharti_sec;

);

2、入队操作

入队操作比较简单,只要能找到队列的最后一个节点(即尾节点)修改尾节点的指针域,让

其指针指向新增加的节点即可。于是问题的关键就在于如何找到尾节点,或是找到尾节点的

-12-

指针域。

这里采用设置头节点和尾指针的方法来完成入队操作。

队列在还没有任何一条记录时称为队空。此时我们在队列中设置一个不存放任何记录的

节点,称为“头节点”(采用头节点的好处在以后会体现出来),由于并无记录,我们设置的指

向队尾的尾指针也指向这个头节点。

•旦需要添加记录,就让尾指针指向新节点(称为节点1),而后把节点1的指针域赋给尾

指针。由于尾指针为头节点的指针域,这样含头节点就链接了节点1,即头节点的指针指向

节点L形成了链的初始模型。当增加第二个节点(称为节点2)时,仍然修改尾指针,让其

指向节点2,而后把节点2的指针域赋给尾指针。由于原来尾指针为节点1的指针域,因此

节点1和节点2又链接在一起。现在的队列由头节点、节点1和节点2相互链接而成。依此

类推,链队就通过修改尾指针的值形成了。

入队操作的基本算法如卜所示:

voidqueue_add(structelement*rear,structelement*p)

(

p->next=NULL;

rear->next=p;

rear=p;

)

其中rear即为尾指针,而指针p指向新增的节点。算法的流程和上述完全一样。

录入留言记录的函数代码如卜.所示:

voidData_Input(structrecord*p)

(

structdata*d;

structtime*t;

front++;

getdate(t);/*取系统时间*/

p->t_time.ti_hour=ti_hour;

p->t_time.ti_min=ti_min;

p->time.ti_sec=ti_sec;

printf(n\n\n\nDate:%4d%2d%2d",p->t_date.da_yeanp->t_date.da_mon,p->t_date.da_day);

printf(*'\nTime:%2d:%2d:%2dH,p->t_time.ti_hour,p->t_time.ti_min,p->t_time.ti_sec);

printfV'XnXnXtPleaseinputrecord:");

gets(p->event);/*输入留言内容*/

p->next=NULL;

)

上述函数中,采用了getdate()和gettime。两个函数用来获取系统的日期和时间。这两个函

数只返回指向当前H期和时间的两个指针,还需要将值立即赋给留言记录中的结构成员。

3、出队操作一留言记录的删除

和入队操作相反的是出队操作,即在队头将记录删除,这也是符合“先进先出”的原则的。

由于设置了头节点,因此出队操作显得非常简单。只需要修改头节点的指针域,让其指

向第二个节点即可。而第一个节点则将其释放掉。其余节点,包括尾指针都不必做任何修改

操作。

例如一个队列原本由头节点、节点1和节点2相链而成,执行出队操作时,相当于将头

节点和节点1、节点1和节点2之间的两条链断开,而用断链将头节点和节点2链上,多出

-13-

来的节点1将其释放掉。

典型的出队操作算法如F:

voidqueue_delete(structelementhead)

(

structelement*temp;

temp=head,next->next;

head.next=temp;

)

在执行出队操作时,一定要记住需要将出队的节点释放。由于采用链式存储,事先无法

估计需要多大的存销售市场空间,也不必去估计。每次新增一个节点时,都是调用内存分配

函数为新节点申请一块内存,如下所示:

p=malloc(sizeof(structrecord)

函数malloc开辟了一块大小为record结构元素的内存区域,把搔向该区域的指针赋给指

针P,这块内存单元的所有权就从系统转移到了指针p。当p指向的数据元素被删除(出队)

时.,•定要用如下方式将内存单所有权还给系统:

free(p);

函数free。的作用和malloc。刚好相反,它将指定的内存单元还给了系统。因为系统的内

存单元是有限的,如果不及时释放占用的内存,会造成内存资源耗尽或由于内存的减少导致

程序执行速度下降。

4、记录的存取的读取

voidData_Save(structrecord*p)/*记录文件的存取*/

(

intj;

fp=fopen(tele_rec.txt","w");/*以可写方式打开记录文件*/

while(p!=NULL)/*若未到队尾,徨将记录存储到文件中*/

(

fwrite(p.sizeof(structrecord),l.fp);

p=p->next;

)

fclose(fp);/*关闭指定的文件*/

)

structevent*Data_Load()/*从记录文件中读取记录*/

(

longk;

structrecord*p,*q;

p=event_head.next;

fp=fopen("tele_rec.txt","r+t");/*以读方式打开记录文件*/

if(fp!=NULL)

{

while(!feof(fp))/*依次读取记录并执行入队操作*/

(

fread(q,sizeof(structrecord),1,fp);

p->next=q;/*这里p为尾指针,q为指向新节点的指针*/

p=q;

-14-

p->next=NULL;

event_end=p;

)

else

(

fp=fopen(ntele_rec.txt,,,',wn);/*若文件不存在,创建指定文件名的新文件*/

event_head.next=NULL;

event_end=event_head.next;}

)

六、【总体设计】

在前面五个步聚的基础上开始进行程序主函数的设计。主函数首先调用初始化函数

/*留言簿代码如下*/

#include<stdio.h>

#include<conio.h>

#include<dos.h>

structrecord

(

structdatet_date;/*定义留言日期*/

structtimet_time;/*定义留言时间*/

charevent[100J;/*定义电话内容*/

structrecord*next;/*指向下一个节点的指针*/

}event_head;

structrecord*event_end;

intfront;

FILE*fp;

voidData_Save(structrecord*p)/*记录文件的存储*/

{

intj;

fp=fopen(Htele_rec.txt","w");/*以可写方式打开记录文件*/

while(p!=NULL)/*若未到队尾,循环将记录存储到文件中*/

(

fwrite(p,sizeof(structrecord),l,fp);

p=p->next;

}

fclose(fp);/*关闭指定的记录文件*/

}

structevent*Data_Load()/*从记录文件中读取记录*/

(

longk;

structrecord*p,*q;

p=event_head.next;

fp=fopen(,'tele_rec.txt',,nr+t,');/*以读方式打开文件*/

if(fp!=NULL)

(

while(!feof(fp))/*依次读入记录并执行入队操作*/

(

fread(q,sizeof(structrecord),l,fp);

p->next=q;/*这里p为尾轴针,q为指向新节点的指针*/

-15-

p=q;

p->next=NULL;

event_end=p;

)

else

(

fp=fopen("tele_rec.txt","w");/*若该文件不存在,创建指定文件名

的新文件*/

event_head.next=NULL;

event_end=event_head.next;

)

}

voidData_Input(structrecord*p)

(

structdata*d;

structtime*t;

front++;

getdate(d);/*取系统日期*/

p->t_date.da_year=d->da_year;

p->t_date.da_mon=d->da_mon;

p->t_date.da_day=d->da_day;

gettime(t);/*取系统时间*/

p->t_time.ti_hour=t->ti_hour;

p->t_time.ti_min=t->ti_min;

p->time.ti_sec=t->ti_sec;

printf(n\n\n\nDate:%4d%2d

%2dn,p->t_date.da_year,p->t_date.da_mon,p->t_date.da_day);

printf(n\nTime:%2d:%2d:

%2d",p->t_time.ti_hour,p->t_time.ti_min,p->t_time.ti_sec);

printf(H\n\n\tPleaseinputrecord:");

gets(p->event);/*输入留言内容*/

p->next=NULL;

)

voidmain()

(

intj,k;

charch;

char*search_name;

structrecord*p,*q;

clrscr();

Date_Load();

do{

printf("\n\n\n\tFunctionchoose:'1);

printf(n\n\tl.Readu);

printf(n\n\t2.Append");

printf(''\n\t3.Deleteu);

printf(''\n\t4.Quitn);

printf(,'\n\nH);

printf("\tChoice:");

ch=getche();

switch(ch)

{

caseT:/*阅读留言内容*/

if(front==rear)

(

printf(M\n\tNorecords.");

-16-

break;;

)

p=event_front->next;

while(getch()!=Ox1b&&p!=NULL)

(

Data_Show(p);

p=p->next;

)

break;

case2:/*添加留言记录*/

p=malloc(sizeof(structrecord));

Data_Input(p);

event_end->next=p;

event_end=p;

while(getch()!=0x1b&&(front+l)!=rear)

(-

p=malloc(sizeof(structrecord));

Data_Input(p);

event_end->next=p;

event_end=p;

)

break;

case3:

p=event_head.next;/*删除留言记录*/

event_head.next=p->next;

free(p);

exit(O);

break;

case'4':

printf(M\n\tDoyouwanttosavee_note:(y/n)");

ch=getch();}

char*search_name;

structrecord*p,*q;

clrscr();

Date_Load();

do{

printf("\n\n\n\tFunctionchoose:n);

printf("\n\tl.ReadH);

printf("\n\t2.Append");

printf(n\n\t3.Delete");

printf("\n\t4.Quitn);

printf(n\n\nn);

printf(,'\tChoice:H);

ch=getche();

switch(ch)

(

case'l':/*阅读留言内容*/

if(front==rear)

(

printf("\n\tNorecords.");

break;;

)

p=event_front->next;

while(getch()!=Ox1b&&p!=NULL)

(

Data_Show(p);

-17-

p=p->next;

)

break;

case'2':/*添加留言记录*/

p=malloc(sizeof(structrecord));

Data_Input(p);

event_end->next=p;

event_end=p;

while(getch()!=0x1b&&(front+1)!=rear)

(

p=malloc(sizeof(structrecord));

Data_Input(p);

event_end->next=p;

event_end=p;

)

break;

case3:

p=event_head.next;/*删除留言记录*/

event_head.next=p->next;

free(p);

exit(O);

break;

case4:

printf(n\n\tDoyouwanttosavee_note:(y/n)n);

ch=getch();

if(ch=='y')

Data_Save(event_head.next);

fclose(fp);

exit(O);

default:

printf(nPleasechoosenum1—4\nn);

)

)

while(l);

)

七、【报告要求】要求学生独立完成课程设计任务,并按课程设计要求写出课程设计说明书。

(1)设计题目;

(2)选题背景

(3)设计思路;

(4)流程图;

(5)程序清单

(6)总结、设计结果说明

-18-

设计三图书管理系统

一、【实验目的】

通过本实验,学生应能正确利用所学过的知识,完成实验中所提出的任务,达到综合运

用、掌握网络信息制作与发布的基本技术的目的。

二、【实验条件】

在安装Windows2000、DOS和TC环境的微机机房进行。

三、【实验内容】

1.新书入库:图书信息包括书名,书号,库存量,现存量共4项.首先输入3

本书的信息,并将其存入文件”book.dat”中.当有新书入库时,先判断文

件中是否有此书(即比较书名),若有则修改库存量,现存量的信息;若无此

书,则将该书的信息添加到文件中.

2.图书查询:输入一个书号,在文件中查找此书,若找到则输出此书的全部信

息;若找不到则输出查找失败的信息.

3.借阅管理

(1)每个读者的信息包括姓名,编号,1张借书卡(限借一本书),输入3个读

者的信息存入文件“reader.dat”中.

(2)借书登记:输入读者的姓名,所借图书的书号,先判断姓名是否在文

件"reader.dat”中,若有则将书号存入一张借书卡上(注:初始时借

书卡的信息都为零,借书后借书卡的信息改为所借书的书号),并修改文

件"reader.dat”的相应内容,同时修改文件”book,dat”中此书的现存

量.若"reader.dat”无此姓名,则应提示错误

(3)还书管理:输入读者的姓名,所还图书的书号,将借书卡的信息置为零,

并修改文件"reader.datM的相应内容,同时修改文件”book,dat”中此

书的现存量.

4.输出全部图书信息和全部读者信息

5.退出系统.

四、【实验准备】指导教师由任课教师或本专、业教师和工程技术人员担任。指导教师在课程

设计开始前一个月下发课程设计指导书,学生根据个人情况选定自己的课题。选定题目后查

找资料、准备设计材料。

五、【设计方法】

六、【总体设计】

七、【报告要求】要求学生独立完成课程设计任务,并按课程设计要求写出课程设计说明书。

(1)设计题目;

(2)选题背景

(3)设计思路;

(4)流程图;

(5)程序清单

(6)总结、设计结果说明

-19-

设计四小型会议设计一个参会人员管理程序

一、【实验目的】

通过本实验,学生应能正确利用所学过的知识,完成实验中所提出的任务,达到综合运

用、掌握网络信息制作与发布的基本技术的目的。

二、【实验条件】

在安装Windows2000,DOS和TC环境的微机机房进行。

三、【实验内容】

(1)登录参会人员的下列信息:

,姓名(name);

“性别(sex);

,年龄(age);

•单位(department)

•房间号(room-num)(设每个房间只住一人,房间号为101#—120#,…,501#—520

(2)主菜单应至少包括以下几个菜单项:

人员登录、显示报到人员信息、查询、统计、修改、删除

(3)程序应分别用几个个函数实现以上功能:

•随时对报到人员进行登录(login),来客登记的房间是根据客人要的;如果客人申请的房

间已有人登记了,可以让客人重新申请;如果所有的房间都己经住满,则拒绝再进行人员登

录;

•随时按所住房间号(由小到大)输出(print)已报到人员信息;

•能够根据姓名实现对人员信息的查询;

•能够根据单位对与会人员进行分类统计,并输出统计结果;

•能够修改与会人员的信息;

•能够删除某个参会人员,并清空其所住房间;

(4)程序中的变量要使用题中给定的英文名词。

四、【实验准备】指导教师由任课教师或本专业教师和工程技术人员担任。指导教师在课程

设计开始前一个月下发课程设计指导书,学生根据个人情况选定自己的课题。选定题目后查

找资料、准备设计材料

五、【设计方法】

六、【总体设计】

七、【报告要求】要求学生独立完成课程设计任务,并按课程设计要求写出课程设计说明书。

(1)设计题目;

(2)选题背景

(3)设计思路;

(4)流程图;

(5)程序清单

(6)总结、设计结果说明

-20-

设计五学生成绩管理系统

一、【实验目的】

通过本实验,学生应能正确利用所学过的知识,完成实验中所提出的任务,达到综合运

用、掌握网络信息制作与发布的基本技术的目的。

二、【实验条件】

在安装Windows2000和TC环境的微机机房进行。

三、【实验内容】

(1)由键盘输入10个学生的数据(包括学号。姓名。性别。3门课成绩并将这10

个学生的数据存入磁盘文件中。

(2)将平均分高于10个学生总平均分的学生的名单输出,并按总成绩由高到低的顺

序输出,打印出名次,若总分相同,则输出并列名次。

(3)将排好名次的名单存于磁盘文件中。要求输入一组学生数据(学号、姓名、性

别及三科成绩),并对此数据进行处理,存盘、排序并打印出名次、列表。

四、【实验准备】指导教师由任课教师或本专'业教师和工程技术人员担任。指导教师在

课程设计开始前一个月下发课程设计指导书,学生根据个人情况选定自己的课题。选定题目

后查找资料、准备设计材料。

五、【设计方法】

六、【总体设计】

七、【报告要求】要求学生独立完成课程设计任务,并按课程设计要求写出课程设计说明书。

(1)设计题目;

(2)选题背景

(3)设计思路;

(4)流程图;

(5)程序清单

(6)总结、设计结果说明

-21-

设计六销售管理系统

一、【实验目的】

通过本实验,学生应能正确利用所学过的知识,完成实验中所提出的任务,达到综合运

用、掌握网络信息制作与发布的基本技术的目的。

二、【实验条件】

在安装Windows2000和TC环境的微机机房进行。

三、【实验内容】

1.销售员信息:每个销售员包括姓名,编号,产品1销售额,产品2销售额,

总销售额共5项信息.首先输入3个销售员的信息存入文件"sailer,dat"中.

2.排序:按产品1的销售额进行排序,将排序后的信息存入文

件"sailerl.dat"中,按产品2的销售额进行排序,将排序后的信息存入文

件"sailer2.dat”中,按总销售额进行排序,将排序后的信息存入文

件“sailer3.dat”中

3.统计:分别统计产品1的总销售额和产品2的总销售额并进行输出

4.销售员的增加:增加一个销售员的信息,先将其添加到文件”sailer.dat”

中,然后按其总销售额进行插入排序,排序后的信息仍存入文

件"sailer3.dat”中.

5.销售员的减少:输入一个销售员的姓名,从文件”sailer.dat”中将其删

除.

6.输出全部销售员的信息

7.退出系统

四、【实验准备】

指导教师由任课教师或本专业教师和工程技术人员担任。指导教师在课程设计开始前一

个月下发课程设计指导书,学生根据个人情况选定自己的课题。选定题目后查找资料、

准备设计材料。

五、【设计方法】

六、【总体设计】

七、【报告要求]要求学生独立完成课程设计任务,并按课程设计要求写出课程设计说明书。

(1)设计题目;

(2)选题背景

(3)设计思路;

(4)流程图;

(5)程序清单

(6)总结、设计结果说明

-22-

设计七设计一个实现任意长的整数进行加法

运算的演示程序。

一、【实验目的】

通过本实验,学生应能正确利用所学过的知识,完成实验中所提出的任务,达到综合运

用、掌握网络信息制作与发布的基本技术的目的。

二、【实验条件】

在安装Windows2000>DOS和TC环境的微机机房进行。

三、【实验内容】

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论