C语言的实训项目发几个,谢谢

小弟最近自学C语言,二级过了,想深入学习,但苦于无老师指点迷津。此前在网上一番苦找,也才找到了几个学生成绩管理系统的实训,做完了。所以各位大哥大姐,有什么实训发什么实训,谢谢啦~~
看我这么诚恳,多发几个吧!!
我要的是像下面这样子的

目的

Objective
1. 掌握文件指针的概念和运用
2. 掌握文件的相关操作:打开、读、写、关闭
3. 掌握文件的定位操作

内容(方法、步骤、要求或考核标准及所需工具、材料、设备等)
一实训设备与工具
个人计算机(奔腾486档以上),DOS操作系统,Turbo C 2.0或 TC++1.0编译开发环境
二实训内容、步骤、方法与要求
1. 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩
2. 从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件
3. 打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件。
4. 打开文件stud.dat文件,读出数据,将10个学生按照平均分数从高到低进行排序,
分别将结果输出到屏幕上和另一文件studsort.dat中。
5. 从studsort.dat 文件中读取第2,4,6,8,10个学生的数据。
6. 在项目报告中画出程序流程图,说明程序设计的算法,附主要程序段。
7. 在项目报告中说明知识点。
8. 在项目报告中说明程序设计过程中的难点、解决办法及编程小结或体会。

三评分方法
按照以上1、2、3、4、5步的实现,分别给分10、20、20、25、25分

案例一 贪吃蛇游戏
案例二 计算器
案例三 黑白棋游戏
案例四 迷宫问题
案例五 扫地雷游戏
案例六 速算24
案例七 数据结构CAI系统
案例八 进程调度
案例九 存储管理分区分配算法
案例十 通讯录
案例十一 学生成绩管理
案例十二 工资管理
案例十三 图书借阅管理
案例十四 教师工作量计算
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-08
这个是没有代码的,只有文件,要你去真代码,不过电路图及。hex文件都有,你可以直接运行看结果,但自已要试程序的话,必须自已打上去!~
建议买一本吧!学pic单片机,这本书不错。也就七十来块,如果这点钱都舍不得,还是别要了!知识是无价的,只你你学到了东西,这本书就值了,
第2个回答  2009-03-28
//求回文数的
#include<iostream.h>
#include<math.h>
#include<iomanip.h>

int mshow(int m,int i,int base)
{
bool flags=true;
int d[9],j=i,k,mm=m;
while(i>=0&&base>=1)
{
d[i-1]=int(m/base);
m=m%base;
base=base/10;
i--;
}
for(k=0;j+1,k<j;j--,k++)
{
if(d[j-1]!=d[k])flags=false;
}
return flags==true?mm:0;
}

int nshow(int m)
{
int i=8;
while((i+1)&&!int(m/(pow(10,i)))){i--;}
return i+1;
}

void main()
{
int n,x,y,z;
for(n=1;n<1000;n++)
{
x=nshow(n);
y=nshow(n*n);
z=nshow(n*n*n);
if(mshow(n,x,int(pow(10,x-1)))&&mshow(n*n,y,int(pow(10,y-1)))&&mshow(n*n*n,z,int(pow(10,z-1))))
cout<<n<<endl;
}
}
//工资管理系统

#include<iostream>
#include<string>
using namespace std;

class Employee
{//定义Employee类
protected:
string name,number;
public:
Employee(){};//构造函数
virtual void show()//显示姓名与编号的虚函数
{
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<number<<endl;
}
~Employee(){}//析构函数
};

class Manager:public Employee
{//定义Manager类,公有继承Employee类
private:
double salary;
public:
static int m;
Manager(){};//构造函数
void show()//显示经理详细情况函数
{
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<number<<endl;
cout<<"月工资:"<<salary<<endl;
}
Manager &operator=(const Manager &);//声明重载赋值函数
void put(string na,string nu,double sa)//给成员赋值函数
{
name=na;
number=nu;
salary=sa;
}
};
Manager &Manager::operator=(const Manager &p)//定义重载赋值函数
{
name=p.name;
number=p.number;
salary=p.salary;
return *this;
}

class HourlyWorker:public Employee
{//定义HourlyWorker类,公有继承Employee类
private:
double hour,wage;
public:
static int n;
HourlyWorker(){};//构造函数
void show()//显示钟点工详细情况函数
{
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<number<<endl;
cout<<"小时工资:"<<wage<<endl;
cout<<"月工作小时:"<<hour<<endl;
}
HourlyWorker &operator=(const HourlyWorker &);//声明重载赋值函数
void put(string na,string nu,double ho,double wa)//给成员赋值函数
{
name=na;
number=nu;
hour=ho;
wage=wa;
}
};
HourlyWorker &HourlyWorker::operator=(const HourlyWorker &p)//定义重载赋值函数
{
name=p.name;
number=p.number;
hour=p.hour;
wage=p.wage;
return *this;
}

int HourlyWorker::n=0;
int Manager::m=0;

void main()
{
Manager x[5];//建立5个Manager类
HourlyWorker y[5];//建立5个HourlyWorker类
int i;
string name,number,sort;
double wage,hour,salary;
bool flags=true;
while(flags)
{
cout<<"[1]增加一个职工"<<endl;
cout<<"[2]显示数组中所有的职工以及他们的工资"<<endl;
cout<<"[3]显示数组中所有的经理以及他们的工资"<<endl;
cout<<"[4]显示数组中钟点工以及他们的工资"<<endl;
cout<<"[5]退出"<<endl;
int num;
cin>>num;
switch(num)
{
case 1:
cout<<"输入职工信息:"<<endl<<"姓名:";
cin>>name;
cout<<"编号:";
cin>>number;
cout<<"类别:(输入“经理”或“钟点工”)";
cin>>sort;
if(sort=="经理")
{
cout<<"月工资:";
cin>>salary;
Manager::m++;
x[Manager::m-1].put(name,number,salary);
cout<<"***增加一个职工***"<<endl;
x[Manager::m-1].show();
}
else if(sort=="钟点工")
{
cout<<"小时工资:";
cin>>wage;
cout<<"月工作小时数:";
cin>>hour;
HourlyWorker::n++;
y[HourlyWorker::n-1].put(name,number,hour,wage);
cout<<"***增加一个职工***"<<endl;
y[HourlyWorker::n-1].show();
}
else cout<<"输入有误,请重新输入!"<<endl;
break;
case 2:
cout<<"***职工工资表***"<<endl;
for(i=0;i<Manager::m;i++)
x[i].show();
for(i=0;i<HourlyWorker::n;i++)
y[i].show();
break;
case 3:
cout<<"***经理工资表***"<<endl;
for(i=0;i<Manager::m;i++)
x[i].show();
break;
case 4:
cout<<"***钟点工工资表***"<<endl;
for(i=0;i<HourlyWorker::n;i++)
y[i].show();
break;
case 5:flags=false;
exit(0);
}
}
}
//求圆周率的
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<time.h>
long a=100000L;
void main()
{
FILE *fp;
long t1,t2;
char filename[40];
unsigned long c,d,e,i,j,ws;
unsigned long *f,*bb;
printf("位数=");
scanf("%ld",&ws);
if(ws<1)return;
c=(ws+4)/05*17;
bb=f=(unsigned long*)malloc(04*c);
if(f==NULL)abort();
printf("将Pi存为:(文件名) ");//提示输入数据文件名
scanf("%s",filename);//若打入NUL,则不存盘
fp=fopen(filename,"w");
if(fp==NULL)abort();
t1=time(NULL);
for(i=0;i<c-1;i++,bb++)
*bb=a/5;*bb=a/5;//这里并不错
for(e=0;c;c-=17,bb-=17,e=d%a)
{ static long group;
d=0;i=c;
j=c+c-1;
_asm mov eDI,bb
loopi:
_asm mov eax,[eDI]
_asm mul Dword ptr a
_asm mov ecx,edx
_asm mov ebx,eax
_asm mov eax,d
_asm mul dword ptr i
_asm add eax,ebx
_asm adc edx,ecx
_asm div dword ptr j
_asm mov d,eax
_asm mov [eDI],edx
_asm sub eDI,04
_asm dec dword ptr j
_asm dec dword ptr j
_asm dec dword ptr i
_asm jnz loopi
e += d/a;//这是为了避免重复计算
if(e>=100000)//这是一种糟糕情况
abort();//希望它最好不要发生
if(++group%200==0) //逢千位附近
printf( "%05lu\t",e);//显示五位
fprintf(fp,"%05lu",e);//写入磁盘
}
t2=time(NULL);
printf("%ld秒\n",t2-t1);
free(f);
fclose(fp);
}
//教学管理系统
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
const m=17;
const n=42;
//**************************定义类teach**************************
class teach
{
double *f,*g,*k,*p,*q,*r,*x,*a;
float *F,*G,*K,*P,*Q,*R,*X,*A,*T;
int *t;
public:
teach();//声明构造函数
double max(double ma[],int);//声明求最大值函数
double min(double ma[],int);//声明求最小值函数
void chutai();//声明求初态值函数
void motai();//声明求末态值函数
void zhi();//声明求教学质量函数
void zong();//声明求综合教学质量函数
void tread();//声明读数据函数
void twrite();//声明写数据函数
~teach();//声明析构函数
};
struct teacher //声明教师综合质量的结构体变量
{
int num;
float zhi;
}tea[n];
struct student //声明教师综合质量的结构体变量
{
int num;
float score;
}stu[m];

teach::teach()//定义构造函数
{
f=new double[n];
g=new double[n];
F=new float[n];
G=new float[n];
k=new double[n];
K=new float[n];
p=new double[n];
q=new double[n];
P=new float[n];
Q=new float[n];
r=new double[n];
R=new float[n];
x=new double[n];
X=new float[n];
a=new double[n];
A=new float[n];
t=new int[n];
T=new float[m];
}
teach::~teach()//定义析构函数
{
delete []f;
delete []g;
delete []F;
delete []G;
delete []k;
delete []K;
delete []p;
delete []q;
delete []P;
delete []Q;
delete []r;
delete []R;
delete []x;
delete []X;
delete []a;
delete []A;
delete []t;
}
double teach::max(double ma[],int nn=n)//定义求最大值函数
{
double mm=ma[0],xx,yy;
for(int i=1;i<nn;i++)
{
yy=ma[i];
if(yy>mm)
{
xx=yy;
yy=mm;
mm=xx;
}
}
return mm;
}
double teach::min(double ma[],int nn=n)//定义求最小值函数
{
double mm=ma[0],xx,yy;
for(int i=1;i<nn;i++)
{
yy=ma[i];
if(yy<mm)
{
xx=yy;
yy=mm;
mm=xx;
}
}
return mm;
}
void teach::chutai()//定义求初态值函数
{
int j;
double fmax,fmin,gmax,gmin,kmax,kmin;
fmax=max(f);
fmin=min(f);
gmax=max(g);
gmin=min(g);
for(j=0;j<n;j++)
{
F[j]=float(1+(n-1)*(fmax-f[j])/(fmax-fmin));
G[j]=float(1+(n-1)*(gmax-g[j])/(gmax-gmin));
k[j]=0.8*F[j]+0.2*G[j];
}
kmax=max(k);
kmin=min(k);
for(j=0;j<n;j++)
{
K[j]=float(1+(n-1)*(kmin-k[j])/(kmin-kmax));
}
}
void teach::motai()//定义求末态值函数
{
int j;
double pmax,pmin,qmax,qmin,rmax,rmin;
pmax=max(p);
pmin=min(p);
qmax=max(q);
qmin=min(q);
for(j=0;j<n;j++)
{
P[j]=float(1+(n-1)*(pmax-p[j])/(pmax-pmin));
Q[j]=float(1+(n-1)*(qmax-q[j])/(qmax-qmin));
r[j]=0.8*P[j]+0.2*Q[j];
}
rmax=max(r);
rmin=min(r);
for(j=0;j<n;j++)
{
R[j]=float(1+(n-1)*(rmin-r[j])/(rmin-rmax));
}
}
void teach::zhi()//定义求教学质量函数
{
int j;
double xmax,xmin,amax,amin;
for(j=0;j<n;j++)
{
x[j]=K[j]-R[j];
}
xmax=max(x);
xmin=min(x);
for(j=0;j<n;j++)
{
X[j]=float(1+(n-1)*(xmax-x[j])/(xmax-xmin));
a[j]=0.8*X[j]+0.2*R[j];
}
amax=max(a);
amin=min(a);
for(j=0;j<n;j++)
{
A[j]=float(1+(n-1)*(amin-a[j])/(amin-amax));
}
}
void teach::zong()//定义求综合教学质量函数
{

for(int i=0;i<n;i++)
{
tea[i].num=t[i];
tea[i].zhi=A[i];
}
for(int j=0;j<m;j++)
{
float sum=0;
int count=0;
for(i=0;i<n;i++)
{
if (tea[i].num==(j+1))
{
sum=sum+tea[i].zhi;
count++;
}
}
T[j]=sum/count;
}
}
void teach::tread()//定义读数据函数
{
int j;
ifstream fin("e:\\read.txt");
if(!fin)
{
cout<<"Cannot open the file.\n";
}
for(j=0;j<n;j++)fin>>t[j];
for(j=0;j<n;j++)fin>>f[j];
for(j=0;j<n;j++)fin>>g[j];
for(j=0;j<n;j++)fin>>p[j];
for(j=0;j<n;j++)fin>>q[j];
fin.close();
}
void teach::twrite()//定义写数据函数
{
int i,small,k;
float swap;
ofstream fout("e:\\write.txt");
if(!fout)
{
cout<<"Cannot open the file.\n";
}
fout<<setw(10)<<"班号"<<setw(10)<<"高考";
fout<<setw(10)<<"摸底考"<<setw(10)<<"通过率";
fout<<setw(10)<<"积点分"<<setw(10)<<"初态";
fout<<setw(10)<<"末态"<<setw(10)<<"质量"<<endl;
for(int j=0;j<n;j++)
{
fout<<setw(10)<<j+1<<setw(10)<<f[j];
fout<<setw(10)<<g[j]<<setw(10)<<p[j];
fout<<setw(10)<<q[j]<<setw(10)<<K[j];
fout<<setw(10)<<R[j]<<setw(10)<<A[j];
fout<<endl;
}
fout<<setw(10)<<"教师号"<<setw(10)<<"质量"<<endl;
for(j=0;j<m;j++)fout<<setw(10)<<j+1<<setw(10)<<T[j]<<endl;
fout<<setw(10)<<"教师号"<<setw(10)<<"质量"<<endl;
for(i=0;i<m;i++) //用结构体
{
stu[i].score =T[i];
stu[i].num =i+1;
}
for(i=0;i<m-1;i++)
{
small=i;
for(j=i+1;j<m;j++)
{
if(stu[j].score<stu[small].score)
small=j;
}
if(small!=i)
{
swap=stu[i].score;
stu[i].score=stu[small].score;
stu[small].score=swap;
k=stu[i].num;
stu[i].num=stu[small].num;
stu[small].num=k;
}
}
for(i=0;i<m;i++)
{
fout<<setw(10)<<stu[i].num<<setw(10)<<stu[i].score<<endl;
}
fout.close();
}
//************************主函数**********************
void main()
{
teach cet;
cet.tread();
cet.chutai();
cet.motai();
cet.zhi();
cet.zong();
cet.twrite();
}
相似回答