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

C语言的实训项目发几个,谢谢
案例一 贪吃蛇游戏 案例二 计算器 案例三 黑白棋游戏 案例四 迷宫问题 案例五 扫地雷游戏 案例六 速算24 案例七 数据结构CAI系统 案例八 进程调度 案例九 存储管理分区分配算法 案例十 通讯录 案例十一 学生成绩管理 案例十二 工资管理 案例十三 图书借阅管理 案例十四 教师工作量计算 ...

C语言程序设计实训图书目录
第一部分 实验指导书 实验一:VisualC++6.0集成环境认识与程序初步 实验二:基本数据类型、运算符及表达式 实验三:数据的输入和输出 实验四:选择结构程序设计 实验五:循环结构程序设计 实验六:数组 实验七:函数 实验八:指针 实验九:编译预处理 实验十:结构体、共用体和用户自定义类型 实验十一:...

求助一道C语言实训编程题 分多多
\/\/--- include <stdio.h> include <stdio.h> struct student { int no;char name[20];char sex;char address[40];int score[5];};struct student stu[100];void input(struct student *studn,int n){ int s,i;for (s=0; s<n; ++s) { printf("请输入第%d位学生的信息:\\n",s...

c语言程序设计实训报告参考
一、项目一:学生成绩排名(实验指导老师李环宇)1.1实训目的(1)熟悉变量、数组定义、使用、输入、输出等基本操作;(2)进行选择、循环结构程序设计练习;(3)掌握冒泡法排序的算法。1.2实训内容2、实训内容(1)定义一个数组a[11],用以存放学生的成绩;(2)从键盘输入10个学生及成绩;(3)采...

单片机C语言程序设计实训100例:基于AVR+Proteus仿真内容简介
这篇文章详细介绍了单片机C语言程序设计实训的100个实例,主要针对AVR单片机进行深入学习。首先,基础设计部分涵盖了AVR的基础知识,包括端口编程、定时\/计数器的运用、中断程序设计、A\/D转换的程序设计、比较器的编程技巧,以及EEPROM、Flash、USART和看门狗功能的实现。硬件应用案例部分则更偏向实际操作,涉及...

单片机C语言程序设计实训100例的内容简介
基于AVR Studio+WinAVR(GCC)组合环境和Proteus硬件仿真平台,精心安排了100个AVR单片机C程序设计案例。全书提供了所有寨例完整的C语言源程序,各案例设计了难易适中的实训目标。基础设计类案例涵盏AVR单片机最基本的端口编程、定时\/计数器应用、中断程序设计、A\/D转换、比较器程序设计、EEPROM、Flash、USART及...

C语言程序开发实训教程内容简介
《C语言程序开发实训教程》是为适应高等院校C语言程序设计教学大纲和全国计算机等级考试二级C语言程序设计考试大纲需求而编写的一本教材。本书内容广泛,涵盖了C语言的基础知识到高级应用,旨在为学习者提供全面、深入的C语言学习体验。首先,本书对C语言进行了全面介绍,包括语言的基本概念、特点和用途,帮助...

谁有 计算机软件项目实训指导,急急!求这个百度网盘资源!阿里嘎多_百度...
https:\/\/pan.baidu.com\/s\/1h36qHxv3P3FX0HURk_Bk_g 提取码:1234 《计算机软件项目实训指导》根据计算机专业的知识体系,并考虑IT行业主要岗位的技能要求,面向实际应用给出了循序渐进、任务驱动的39个实训项目,涵盖Web技术、C语言、Java开发、C++开发、网络技术、数据库技术、汇编语言、操作系统、...

单片机C语言程序设计实训100例内容简介
本书专为8051单片机C语言程序设计实践而编撰,以Keil μVision编程平台和Proteus硬件仿真平台为依托,精心构建了超过100个详实的案例。在基础设计部分,案例涵盖了基础的单片机操作,如端口编程、定时\/计数器的运用,以及中断管理和串口通信技术。这些内容为读者提供了深入理解8051单片机基本功能的实践平台。硬件...

单片机C语言程序设计实训100例——基于8051+Proteus仿真 可以发一份到...
如果stc系列单片机,用串口就行了,也就是max232.成熟电路网上多的是,你也可以“宏晶科技”,他是专业生产stc单片机的,上面资料齐全。初始学习单片机 一定养成好的习惯 那本书 已经发到你的邮箱,注意查收 名字是 “单片机C语言程序设计实训100例——基于8051+Proteus仿真”ok 祝学有所成 ...

相似回答