#include<iostream.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<stdio.h>
#include<string.h>
typedef struct
{
char class_0[20]; /*班级*/
int number; /*学号*/
char name[20]; /*姓名*/
float c_program; /*C++语言成绩*/
char project[20];/*项目*/
float TEL;/*电话号码*/
float QQ;/*QQ*/
char add;/*宿舍地址*/
}Student;
Student stu[100]; /*结构体数组变量*/
int menu() /*菜单函数*/
{
char c;
do
{
system("cls"); /*运行前清屏*/
cout<<"********************************C++课程设计管理系统********************************"<<endl;/*菜单选择*/
cout<<"【1】输入数据"<<endl;
cout<<"【2】显示所有数据"<<endl;
cout<<"【3】按平均分降序排列"<<endl;
cout<<"【4】查找并显示一组数据"<<endl;
cout<<"【5】插入一组数据"<<endl;
cout<<"【6】修改一组数据"<<endl;
cout<<"【7】删除一组数据"<<endl;
cout<<"【8】从文件中读入数据"<<endl;
cout<<"【9】将所有记录写入文件"<<endl;
cout<<"【0】退出本系统\n"<<endl;
cout<<"**********************作者:072202H 计算机二班~~朱旭涛************************"<<endl;
cout<<"请你选择操作(0-9):"<<endl;
c=getchar(); /*读入选择*/
}
while(c<'0'||c>'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{
int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{
cout<<"请输入学生的班别:"; /*交互输入*/
cin>>stud[n+i].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n+i].number;
cout<<"请输入学生的姓名:";
cin>>stud[n+i].name;
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n+i].c_program;
cout<<"请输入该学生所设计项目:";
cin>>stud[n+i].project;
cout<<"请输入该学生的电话号码:";
cin>>stud[n+i].TEL;
cout<<"请输入该学生QQ号码:";
cin>>stud[n+i].QQ;
cout<<"请输入该学生宿舍地址:";
cin>>stud[n+i].add;
gets(x); /*清除多余的输入*/
cout<<"=====>提示:继续写入成绩?(Y/N)";
cin>>sign; /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
if(!stud)cout<<"没有记录";
else{
cout<<"--------------------------------------------------------------------------------"<<endl; /*格式头*/
cout<<" 班别 学号 姓名 C++ 项目 TEL QQ 宿舍地址 "<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
}
void Sort(Student stud[],int n) /*按分排序*/
{
int i,j,k;
float s;
char t[20];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(stud[j].c_program<stud[j+1].c_program)
{
strcpy(t,stud[j+1].class_0);
strcpy(stud[j+1].class_0,stud[j].class_0);
strcpy(stud[j].class_0,t);
k=stud[j+1].number;
stud[j+1].number=stud[j].number;
stud[j].number=k;
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
s=stud[j+1].c_program;
stud[j+1].c_program=stud[j].c_program;
stud[j].c_program=s;
strcpy(t,stud[j+1].project);
strcpy(stud[j+1].project,stud[j].project);
strcpy(stud[j].project,t);
strcpy(s,stud[j+1].TEL);
strcpy(stud[j+1].TEL,stud[j].TEL);
strcpy(stud[j].TEL,s);
strcpy(s,stud[j+1].QQ);
strcpy(stud[j+1].QQ,stud[j].QQ);
strcpy(stud[j].QQ,s);
strcpy(t,stud[j+1].add);
strcpy(stud[j+1].add,stud[j].add);
strcpy(stud[j].add,t);
}
cout<<"--------------------------------------------------------------------------------"<<endl; /*格式头*/
cout<<" 班别 学号 姓名 C++ 项目 TEL QQ 宿舍地址 "<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
for(i=1;i<n+1;i++) /*循环输入*/
{
cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].c_program<<stud[i-1].project<<stud[i-1].TEL<<
stud[i-1].QQ<<stud[i-1].add<<endl;
}
}
int Insert(Student stud[],int n) /*插入一条记录*/
{
char x[10]; /*清除多余输入所用*/
cout<<"请输入学生的班级:"<<endl; /*交互输入*/
cin>>stud[n].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n].number;
cout<<"请输入学生的姓名:";
cin>>stud[n].name;
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n].c_program;
cout<<"请输入该学生所设计项目:";
cin>>stud[n].project;
cout<<"请输入该学生的电话号码:";
cin>>stud[n].TEL;
cout<<"请输入该学生QQ号码:";
cin>>stud[n].QQ;
cout<<"请输入该学生宿舍地址:";
cin>>stud[n].add;
gets(x);
n++;
Sort(stu,n); /*调用排序函数*/
cout<<"=====>提示:插入成功!"<<endl; /*返回成功信息*/
return(n);
}
int Delete(Student stud[],int n) /*按学号查找,删除一条记录*/
{
int s;
int i=0,j;
cout<<"输入需要删除学生的学号:"<<endl; /*交互式问寻*/
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无法找到改学号……"<<endl; /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].class_0,stud[j+1].class_0);
stud[j].number=stud[j+1].number;
strcpy(stud[j].name,stud[j+1].name);
stud[j].c_program=stud[j+1].c_program;
stud[j].project=stud[j+1].project;
stud[j].TEL=stud[j+1].TEL;
stud[j].QQ=stud[j+1].QQ;
stud[j].add=stud[j+1].add;
}
cout<<"=====>提示:已成功删除!"<<endl; /*返回成功信息*/
return(n-1);
}
void Search(Student stud[],int n) /*查找并显示一个记录*/
{
int s;
int i=0;
cout<<"输入需要查找学生的学号:"<<endl;
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; /*输入失败信息*/
return;
}
cout<<"---------------------------"<<endl;
cout<<"班别:"<<stud[i].class_0<<endl; /*输出该学生信息*/
cout<<"学号:"<<stud[i].number<<endl;
cout<<"姓名:"<<stud[i].name<<endl;
cout<<"C++程序设计:"<<stud[i].c_program<<endl;
cout<<"项目:"<<stud[i].project<<endl;
cout<<"电话号码:"<<stud[i].TEL<<endl;
cout<<"QQ号:"<<stud[i].QQ<<endl;
cout<<"宿舍地址:"<<stud[i].add<<endl;
}
void Modify(Student stud[],int n)
{
int s;
int i=0;
cout<<"输入需要修改成绩学生的学号:"<<endl;
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无该学生的成绩……"<<endl; /*输入失败信息*/
return;
}
cout<<"-----------------------------------该学生的信息---------------------------------"<<endl; /*格式头*/
cout<<" 班别 学号 姓名 C++ 项目 TEL QQ 宿舍地址 "<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].c_program<<stud[i-1].project<<stud[i-1].TEL<<
stud[i-1].QQ<<stud[i-1].add<<endl;
cout<<"请输入学生的班别:"<<endl; /*交互输入*/
cin>>stud[n+i].class_0;
cout<<"请输入学生的学号:"<<endl;
cin>>stud[n+i].number;
cout<<"请输入学生的姓名:"<<endl;
cin>>stud[n+i].name;
cin>>stud[n].number;
cout<<"请输入学生的姓名:";
cin>>stud[n].name;
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n+i].c_program;
cout<<"请输入该学生所设计项目:";
cin>>stud[n+i].project;
cout<<"请输入该学生的电话号码:";
cin>>stud[n+i].TEL;
cout<<"请输入该学生QQ号码:";
cin>>stud[n+i].QQ;
cout<<"请输入该学生宿舍地址:";
cin>>stud[n+i].add;
}
int Read(Student stud[],int n) /*从文件中读入数据*/
{
int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
cout<<"输入文件名:"<<endl;
cin>>filename; /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{
cout<<"=====>提示:无法打开这个文件!"<<endl; /*打开失败信息*/
cout<<"\t\t\t";
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%d%s%f%f%f%f%f%f%f%f%f",stud[n+i].class_0,&stud[n+i].number,stud[n+i].name,&stud[n+i].electrics,&stud[n+i].c_program,&stud[n+i].multimedia,&stud[n+i].english,&stud[n+i].math,&stud[n+i].sport,&stud[n+i].polity,&stud[n+i].summary,&stud[n+i].average);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
cout<<"=====>提示:读入数据成功,可选择【显示所有成绩】查看"<<endl;
cout<<"\t\t\t";
system("pause");
return(n);
}
void Save(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
cout<<"输入文件名:"; /*输入文件名*/
cin>>filename;
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
cout<<"=====>提示:无法打开这个文件!"<<endl;
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-8s%-8d%-6s%-6.1f%-7.1f%-7.1f%-6.1f%-6.1f%-6.1f%-7.1f%-8.1f%-6.2\n",stud[i].class_0,stud[i].number,stud[i].name,stud[i].electrics,stud[i].c_program,stud[i].multimedia,stud[i].english,
stud[i].math,stud[i].sport,stud[i].polity,stud[i].summary,stud[i].average);
i++;
}
fclose(fp); /*关闭文件*/
cout<<"=====>提示:已成功写入数据!"<<endl; /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu()) /*选择判断*/
{
case 1:
cout<<endl<<"====>> 输入成绩 <<===="<<endl; /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
cout<<endl<<"====>> 显示所有记录 <<===="<<endl; /*显示所有记录*/
Display(stu,n);
break;
case 3:
cout<<endl<<"====>> 按降序排列 <<===="<<endl;
Sort(stu,n); /*按学号排序*/
cout<<"排序成功!"<<endl;
cout<<"\t\t\t";
system("pause");
break;
case 4:
cout<<endl<<"====>> 查找并显示一组成绩 <<===="<<endl;
Search(stu,n); /*插入一条记录*/
cout<<"\t\t\t";
system("pause");
break;
case 5:
cout<<endl<<"====>> 插入一组成绩 <<===="<<endl;
n=Insert(stu,n); /*按姓名查找,删除一条记录*/
cout<<"\t\t\t";
system("pause");
break;
case 6:
cout<<endl<<"====>> 修改一组成绩 <<===="<<endl;
Modify(stu,n); /*查找并显示一个记录*/
cout<<"\t\t\t";
system("pause");
break;
case 7:
cout<<endl<<"====>> 删除一组成绩 <<===="<<endl;
n=Delete(stu,n); /*查找并显示一个记录*/
cout<<"\t\t\t";
system("pause");
break;
case 8:
cout<<endl<<"====>> 从文件中读入数据 <<===="<<endl;
n=Read(stu,n); /*循环读出数据*/
break;
case 9:
cout<<endl<<"====>> 将所有记录写入文件 <<===="<<endl;
Save(stu,n); /*循环写入数据*/
cout<<"\t\t\t";
system("pause");
break;
case 0:
cout<<endl<<"====>> 谢谢您的使用! <<===="<<endl; /*结束程序*/
cout<<"\t\t\t";
system("pause");
exit(0);
}
}
}
调试:
'Sort' : local function definitions are illegal
e:\c++\kechengsheji.cpp(136) : error C2601: 'Insert' : local function definitions are illegal
e:\c++\kechengsheji.cpp(162) : error C2601: 'Delete' : local function definitions are illegal
e:\c++\kechengsheji.cpp(189) : error C2601: 'Search' : local function definitions are illegal
e:\c++\kechengsheji.cpp(213) : error C2601: 'Modify' : local function definitions are illegal
e:\c++\kechengsheji.cpp(254) : error C2601: 'Read' : local function definitions are illegal
e:\c++\kechengsheji.cpp(282) : error C2601: 'Save' : local function definitions are illegal
e:\c++\kechengsheji.cpp(306) : error C2601: 'main' : local function definitions are illegal
e:\c++\kechengsheji.cpp(373) : fatal error C1004: unexpected end of file found