#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>
#define N 50 //系统中学生的最大数量
int n=3; //学生数量的初始值
struct student
{
int sid;
char name[10];
char num[14];
float chinese;
float english;
float clanguage;
float totalscore;
float average;
};
void print(bool menu)//打印基本信息
{
if(!menu)
{
cout<<"\t\t"<<"----------------------------------------------"<<endl;
cout<<"\t\t"<<"----------------------------------------------"<<endl;
cout<<"\t\t"<<"*** 学生成绩管理系统 ***"<<endl;
cout<<"\t\t"<<"*** 1.文件录入学生信息 ***"<<endl;
cout<<"\t\t"<<"*** 2.增加学生信息 ***"<<endl;
cout<<"\t\t"<<"*** 3.删除学生信息 ***"<<endl;
cout<<"\t\t"<<"*** 4.查找学生信息 ***"<<endl;
cout<<"\t\t"<<"*** 5.学生成绩排序 ***"<<endl;
cout<<"\t\t"<<"*** 6.显示学生信息 ***"<<endl;
cout<<"\t\t"<<"*** 7.退出系统 ***"<<endl;
cout<<"\t\t"<<"----------------------------------------------"<<endl;
cout<<"\t\t"<<"----------------------------------------------"<<endl;
}
}
void GetInformation(struct student *arr,int n)//学生成绩信息录入
{
FILE *fp;
int i;
char buffer[100];
if(fp=fopen("stu.dat","r"))
{
for(i=0;i<n;i++)
{
fgets(buffer,100,fp);
sscanf(buffer,"%s %s %f %f %f",&arr[i].name,arr[i].num,&arr[i].chinese,&arr[i].english,&arr[i].clanguage);
arr[i].totalscore=arr[i].chinese + arr[i].english + arr[i].clanguage;
arr[i].average=arr[i].totalscore/3;
if(feof(fp))
break;
}
cout<<"所有学生的成绩信息已录入!"<<endl<<endl;
fclose(fp);
}
}
void Display(struct student* arr,int n)//学生成绩信息显示
{
cout<<"序号"<<"\t"<<"姓名"<<"\t"<<" 学号"<<"\t\t"<<"语文"<<"\t"<<"英语"<<"\t"<<"C语言"<<"\t"<<"平均分"<<"\t"<<"总分"<<endl;
for(int i=0;i<n;i++)
{
cout<<" "<<i+1<<"\t"<<arr[i].name<<"\t"<<arr[i].num<<"\t "<<arr[i].chinese<<"\t "<<arr[i].english<<"\t "<<arr[i].clanguage
<<"\t "<<arr[i].average<<"\t"<<arr[i].totalscore<<endl;
}
cout<<endl;
}
void Save(struct student* arr,int n)//学生成绩信息保存,保存在源目录下的student.txt
{
FILE *fp;
fp=fopen("stu1.dat","w+");
if(fp==NULL)
{
cout<<"文件不存在!"<<endl;
exit(0);
}
fwrite(arr,sizeof(struct student)*n,n,fp);
fclose(fp);
cout<<endl<<"*所有学生的成绩信息已保存!!!"<<endl<<endl;
}
void Delete(struct student* arr,int n)//学生成绩信息删除
{
char number[10];
bool flag=false;
cout<<"要删除的学生信息:"<<endl;
cout<<"请输入该学生的学号:"<<endl;
cin>>number;
for(int i=0;i<n;i++)
{
if (!strcmp(number,arr[i].num))
{
strcpy(arr[i].name," ");
strcpy(arr[i].num," ");
arr[i].chinese=0;
arr[i].english=0;
arr[i].clanguage=0;
arr[i].totalscore=0;
arr[i].average=0;
Save(arr,n);
flag=true;
}
}
if(flag==true)
{
cout<<endl<<"该学生不存在!"<<endl;
}
}
void Search(struct student* arr,int n)//学生成绩信息查询
{
int temp,i;
bool flag=false;
cout<<"---------------1.按学号查找---------------"<<endl;
cout<<"---------------2.按姓名查找---------------"<<endl;
cout<<"---------------3.返回上层菜单-------------"<<endl;
cout<<"请按数字键(1—3)选择相应的功能:"<<endl;
cin>>temp;
switch (temp)
{
case 1://按照学号查询
{
char number[14];
cout<<"请输入学号(10位整数的学号):"<<endl;
cin>>number;
for(i=0;i<n;i++)
{
if(!strcmp(number,arr[i].num))
{
cout<<"姓名"<<"\t"<<" 学号"<<"\t\t"<<"语文"<<"\t"<<"英语"<<"\t"<<"C语言"<<"\t"<<"平均分"<<"\t"<<"总分"<<endl;
cout<<arr[i].name<<"\t"<<arr[i].num<<"\t "<<arr[i].chinese<<"\t "<<arr[i].english<<"\t "<<arr[i].clanguage
<<"\t "<<arr[i].average<<"\t"<<arr[i].totalscore<<endl<<endl;
flag=true;
}
}
if(!flag)
{
cout<<endl<<"该学生不存在."<<endl<<endl;
}
}
break;
case 2://按照姓名查询
{
char nam[10];
cout<<"请输入姓名(汉字):"<<endl;
cin>>nam;
for(i=0;i<n;i++)
{
if(!strcmp(nam,arr[i].name))
{
cout<<"姓名"<<"\t"<<"学号"<<"\t\t"<<"语文"<<"\t"<<"英语"<<"\t"<<"C语言"<<"\t"<<"平均分"<<"\t"<<"总分"<<endl;
cout<<arr[i].name<<"\t"<<arr[i].num<<"\t"<<arr[i].chinese<<"\t"<<arr[i].english<<"\t"<<arr[i].clanguage
<<"\t"<<arr[i].average<<"\t"<<arr[i].totalscore<<endl<<endl;
flag=true;
}
}
if(!flag)
{
cout<<endl<<"该学生不存在."<<endl<<endl;
}
}
break;
default:
break;
}
}
void Sort(struct student* arr,int n)//学生成绩排序
{
int temp,i;
bool flag=false;
student stemp;
cout<<"---------------1.按学号排序---------------"<<endl;
cout<<"---------------2.按总分排序---------------"<<endl;
cout<<"---------------3.返回上层菜单-------------"<<endl;
cout<<"请按数字键(1—3)选择相应的功能:"<<endl;
cin>>temp;
switch (temp)
{
case 1://按照学号排序
{
int j,index;
char min[14];
for(i=0;i<n;i++)
{
index=i;
strcpy(min,arr[i].num);
for(j=i+1;j<n;j++)
{
if(strcmp(min,arr[j].num)>0)
{
index=j;
}
}
if(index!=i)
{
stemp=arr[index];
arr[index]=arr[i];
arr[i]=stemp;
}
}
Display(arr,n);
}
break;
case 2://按照总分排序
{
int bound,exchange=n-1;
while(exchange!=0)
{
bound=exchange;
exchange=0;
for(i=0;i<bound;i++)
{
if(arr[i].totalscore<arr[i+1].totalscore)
{
stemp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=stemp;
exchange=i;
}
}
}
Display(arr,n);
}
break;
default:
break;
}
}
void Add(struct student* arr)
{
bool flag=false;
n+=1;
cout<<"请根据下面提示输入新的学生信息:"<<endl;
cout<<"姓名:";
cin>>arr[n-1].name;
cout<<"学号:";
cin>>arr[n-1].num;
cout<<"语文:";
cin>>arr[n-1].chinese;
cout<<"英语:";
cin>>arr[n-1].english;
cout<<"C语言:";
cin>>arr[n-1].clanguage;
arr[n-1].totalscore=arr[n-1].chinese + arr[n-1].english + arr[n-1].clanguage;
arr[n-1].average=arr[n-1].totalscore/3;
cout<<"新的学生信息已录入!"<<endl<<endl;
flag=true;
}
int main(int argc,char* argv[])
{
struct student arr[N];
bool flag=true;
if(flag)
{
int select;
print(false);
cout<<"请按数字键(1或7)选择相应的功能:"<<endl;
cin>>select;
while(0<select && select<7)
{
switch (select)
{
case 1:
GetInformation(arr,N);
print(true);
break;
case 2:
;
case 3:
;
case 4:
;
case 5:
;
case 6:
cout<<"学生基本信息未录入,功能无法实现。"<<endl<<endl;
print(false);
cout<<"请按数字键(1或7)选择相应的功能:"<<endl;
cin>>select;
break;
default:
break;
}
if(select==1)
break;
}
if(select>=7)
flag=false;
else
flag=true;
if(flag)
{
cout<<"请按数字键(1—7)选择相应的功能:"<<endl;
cin>>select;
while(select>0 && select<7)
{
switch (select)
{
case 1:
cout<<"学生信息已录入!"<<endl;
print(true);
break;
case 2:
Add(arr);
print(true);
break;
case 3:
Delete(arr,n);
print(true);
break;
case 4:
Search(arr,n);
print(true);
break;
case 5:
Sort(arr,n);
print(true);
break;
case 6:
Display(arr,n);
print(true);
break;
default:
break;
}
cout<<"请按数字键(1—7)选择相应的功能:"<<endl;
cin>>select;
}
}
Save(arr,n);
cout<<"感谢使用本系统!"<<endl;
}
return 0;
}
如何把C++语言编写的代码转换成C语言
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 我用双手-成就你的梦想 2015-12-29 03:31关注
另外c里面是没有bool类型的可以用int的0和1来代替
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 thinkphp适配人大金仓问题
- ¥15 有卷积神经网络识别害虫的项目吗
- ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
- ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
- ¥15 彩灯控制电路,会的加我QQ1482956179
- ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
- ¥15 (关键词-电路设计)
- ¥15 如何解决MIPS计算是否溢出
- ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
- ¥15 操作系统相关算法中while();的含义