c语言课程设计实习报告

C语言课程设计实

习报告

题目二:

1.题目描述:学生信息管理系统设计,

一,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使

之能提供以下功能:

二,系统以文本菜单方式工作,

三,学生信息录入功能(学生信息最好用文件保存)---输入

四,学生信息浏览功能---输出

五,查询、排序功能---算法

六,按学号查询

七,按姓名查询

2.设计思路:

一,首先定义几个结构体,可以包含所需当个学生的信息;二,利用scanf与printf这两种输入输出的方式,把我们所需信息输入输出;三,定义一个指向接文件的指针,将我们所需的信息输入到一个txt格式的文本保存起来;四,利用switch….case….的方式实现选择查询的功能;五,利用冒泡法,实现对我们选择的查询方式进行排序。流程图如下:

3.执行效果截图:

4.源程序:

#include

#include

struct student

{

int snum;

char name[20];

int age;

char sex[5];

int birthday;

char addr[20];

int num;

int mail;

};

main()

{

int i,m,j,k,c,d,f;

printf("首先选择你之后所须查询方式:用学号查询请输入1,用姓名查询请输入2\n");

printf("您选择的数字是:");

scanf("%d",&c);

FILE *fp;

struct student s[12];struct student temp;struct student a[1];

printf("请输12名学生信息:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail:\n");

for(i=0;i<12;i++)

scanf("%d%s%d%s%d%s%d%d",&s[i].snum,s[i].name,&s[i].age,s[i] .sex,&s[i].birthday,s[i].addr,&s[i].num,&s[i].mail);

fp=fopen("名单.txt","w");

for(i=0;i<12;i++)

fprintf(fp,"%d %s %d %s %d %s %d %d\n",s[i].snum,s[i].name,s[i].a ge,s[i].sex,s[i].birthday,s[i].addr,s[i].num,s[i].mail);

fclose(fp);

printf("学生信息浏览:\n");

for(i=0;i<12;i++)

{

printf("%d %s %d %s %d %s %d %d\n",s[i].snum,s[i].name,s[i].age,s [i].sex,s[i].birthday,s[i].addr,s[i].num,s[i].mail);

}

printf("按学号大到小排序:\n");

for(m=0;m<11;m++)

{

k=m;

for(j=m+1;j<12;j++)

if(s[j].snum>s[k].snum)

{

temp=s[k];s[k]=s[j];s[j]=temp;}

}

for(i=0;i<12;i++)

{

printf("%d %s %d %s %d %s %d %d\n",s[i].snum,s[i].name,s[i].age,s [i].sex,s[i].birthday,s[i].addr,s[i].num,s[i].mail);

}

switch(c)

{

case 1: d=1;break;

case 2: d=2;break;

default: printf("您的输入错误\n");

}

if(d==1)

{

printf("请输入您的学号:\n");

scanf("%d",&f);

for(i=1;i<12;i++)

{

if(f==s[i].snum)

printf("%d %s %d %s %d %s %d %d\n",s[i].snum,s[i].name,s[i].age,s [i].sex,s[i].birthday,s[i].addr,s[i].num,s[i].mail);

}

}

else

if(d==2)

{ printf("请输入您的姓名:");

scanf("%s",a[0].name);

for(i=1;i<12;i++)

{

if(strcmp(a[0].name,s[i].name)==0)

printf("%d %s %d %s %d %s %d %d\n",s[i].snum,s[i].name,s[i].age,s [i].sex,s[i].birthday,s[i].addr,s[i].num,s[i].mail);

}}

return 0;

}

题目三、

1.题目描述:

职工信息管理系统设计

职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:

系统以菜单方式工作

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

职工信息浏览功能--输出

查询和排序功能:(至少一种查询方式) --算法

按工资查询

按学历查询等

2.设计思路:

一,首先定义一个结构体,该结构体包含了单个职工所有的信息;三,利用scanf与printf,分别输入输出12名职工具体信息,具体内

容就如题;三,定义一个指向文件的指针,以及一个txt格式文件,让后利用“写入”的方式读文件,将我们输入的员工信息存储到文件夹里;四,利用冒泡法,我们对十二个人的信息按照学号进行从小到大的方法排序,实现排序功能;五,利用switch…case…..的结构,实现我们按学号与姓名查询的方法;

三、执行效果截图

四、源程序

#include #include struct worker

{

int wnum;

char name[20];

char sex[5];

int age;

char xue[10];

int pay;

char addr[20];

int tele;

};

main()

{

int i,m,j,k,c,d,f;

printf("首先选择你之后所须查询方式:用职工号查询请输入1,用姓名查询请输入2\n");

printf("您选择的查询方式是:");

scanf("%d",&c);

FILE *fp;

struct worker s[12];struct worker temp;struct worker a[1];

printf("请输12名职工信息:职工号,姓名,性别,年龄,学历,工资,地址,电话:\n");

for(i=0;i<12;i++)

scanf("%d%s%s%d%s%d%s%d",&s[i].wnum,s[i].name,s[i].sex ,&s[i].age,s[i].xue,&s[i].pay,s[i].addr,&s[i].tele);

fp=fopen("职工信息.txt","w");

for(i=0;i<12;i++)

fprintf(fp,"%d %s %s %d %s %d %s %d\n",s[i].wnum,s[i].nam e,s[i].sex,s[i].age,s[i].xue,s[i].pay,s[i].addr,s[i].tele);

fclose(fp);

printf("职工信息浏览:\n");

for(i=0;i<12;i++)

{

printf("%d %s %s %d %s %d %s %d\n",s[i].wnum,s[i].name,s[ i].sex,s[i].age,s[i].xue,s[i].pay,s[i].addr,s[i].tele);

}

printf("按工号大到小排序:\n");

for(m=0;m<11;m++)

k=m;

for(j=m+1;j<12;j++)

if(s[j].wnum>s[k].wnum)

{

temp=s[k];s[k]=s[j];s[j]=temp;}

}

for(i=0;i<12;i++)

{

printf("%d %s %s %d %s %d %s %d\n",s[i].wnum,s[i].name,s[ i].sex,s[i].age,s[i].xue,s[i].pay,s[i].addr,s[i].tele);

}

switch(c)

{

case 1: d=1;break;

case 2: d=2;break;

default: printf("您的输入的选择方式错误\n");

}

if(d==1)

printf("请输入您要查询的工号:\n");

scanf("%d",&f);

for(i=1;i<12;i++)

{

if(f==s[i].wnum)

printf("%d %s %s %d %s %d %s %d\n",s[i].wnum,s[i].name,s[ i].sex,s[i].age,s[i].xue,s[i].pay,s[i].addr,s[i].tele);

}

}

else

if(d==2)

{ printf("请输入您要查询人方法的姓名:");

scanf("%s",a[0].name);

for(i=1;i<12;i++)

{

if(strcmp(a[0].name,s[i].name)==0)

printf("%d %s %s %d %s %d %s %d\n",s[i].wnum,s[i].name,s[ i].sex,s[i].age,s[i].xue,s[i].pay,s[i].addr,s[i].tele);

}}

return 0;

}

题目四、

一、题目描述:编写程序,用二分法求方程

2x3-4x2+3x-6=0在(-10,10)之间的根。

四、提示:

五、 1.用do-while语句实现。

六、 2.二分法的计算步骤:

七、 1.准备计算f(x)在有根区间[a,b]端点处的值f(a),f(b)

八、 2.二分计算f(x)在区间中点(a+b)/2处的值f[(a+b)/2]

九、 3.判断若f[(a+b)/2]=0,则即是根,计算过程结束。

十、否则,检测:

十一、 a.若f[(a+b)/2]与f(a)异号,则根位于区间[a,(a+b)/2]内,这时以(a+b)/2代替b;

十二、 b.若f[(a+b)/2]与f(a)同号,则根位于区间[(a+b)/2,b]内,这时以(a+b)/2代替a;

十三、反复执行步骤2和3,直到区间[a,b]长度缩小到允许的误差范围之内,此时中点(a+b)/2即为所求的根。

二、设计思路:一、首先定义几个float型变量,让后相应赋值;

二、首先根据二分法确定a,b中值是否为所求是就输出结果;

三、利用二分法,讨论,例如,如果根在中值c与a之间,那么就吧c的值赋给b,c的值重新确定,如此循环,即利用do……while……循环结构,在一定范围内不停循环,直到要超过这个范围是确定最终c的值,即所求根。

三,运行效果截图:

四、附源程序如下:

#include

main ()

{

float a=-10,b=10,c,c1,c2,c3;

c=(a+b)/2;

c1=2*a*a*a-4*a*a+3*a-6;

c2=2*b*b*b-4*b*b+3*b-6;

c3=2*c*c*c-4*c*c+3*c-6;

if(c3==0)

printf("结果X=%f\n",c);

else

{

do{

if(c1*c3<0)

{b=c;c=(a+b)/2;c2=2*b*b*b-4*b*b+3*b-6;c3=2*c*c*c-4*c*c+3*c-6 ;}

else if(c2*c3<0)

相关文档
最新文档