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
{
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)