第1个回答 2008-05-21
这哪里是c的考试阿!这就是程序设计!刚学c怎么可能这么复杂。给你个例子,但删除功能有点问题#include<fstream.h>
#include<stdlib.h> //其它说明
#include<string.h> //字符串函数
#include <stdio.h>
#include <iostream.h>
struct STUDENT //学生基本信息结构体
{
int ID; //学号
char Name[40]; //姓名
char Sex[10]; //性别
int RoomNo; //宿舍号码
long int Roomtel; //宿舍电话
};
struct STUDENTBASIC //学生基本成绩信息结构体
{
int ID; //学号
char courseNo[10]; //课程编号
char course[10]; //课程名称
int goal; //学分
int averagescore; //平时成绩
int labscore; //实验成绩
int examinationscore; //卷面成绩
double sum; //综合成绩
float factgoal; //实得学分
};
struct STUDENT STD[100]; //定义学生最多人数
struct STUDENTBASIC STDB[100];
int num=0; //全局变量 读入的基本信息人数
int n=0; //全局变量 写入成绩的人数
int g=0; //全局变量 写入成绩的条数
void printmenu(); //打印程序菜单
void read_information(); //读入学生基本信息文件
void lookfornum(); //按学号查询
void lookforname(); //按姓名查询
void lookforroom(); //按宿舍查询
void get_information(); //1 获取学生成绩信息
void seek(); //2 查学生基本信息
void seek_score(); //3 学生成绩查询
void del(); //4 删除
void sort_sum(); //5 按降序排列综合成绩
//主程序
void main()
{
read_information();
for(;;)
{
printmenu();
char menuNo;
cin>>menuNo;
switch(menuNo)
{
case '1':get_information();break;
case '2':seek();break;
case '3':seek_score();break;
case '4':del();break;
case '5':sort_sum();break;
case '0':cout<<"欢迎再次使用!"<<endl;exit(0);
default: cout<<"请输入正确的命令格式!!";break;
}
}
}
//定义函数部分
//打印菜单函数
void printmenu()
{
cout<<"----------------------------------------------------"<<endl;
cout<<"-----学生成绩管理系统-------制作2008.4--"<<endl;
cout<<"------欢迎进入学生成绩管理系统------"<<endl;
cout<<" 输入命令代号,进入相应功能"<<endl ;
cout<<" 1.录入学生成绩信息"<<endl;
cout<<" 2.查询学生基本信息"<<endl;
cout<<" 3.学生成绩查询"<<endl;
cout<<" 4.删除"<<endl;
cout<<" 5.按降序排列综合成绩"<<endl;
cout<<" 0.退出系统"<<endl;
cout<<"----------------------------------------------------"<<endl;
}
//读入学生基本信息:
void read_information()
{
for(;;)
{
fstream readin("f:\\student.txt",ios::in|ios::out);
if(!readin)
{
cout<<"无法打开文件"<<endl;
}
else
{
for(int i=0;readin.eof()==0;i++)
{readin>>STD[i].ID>>STD[i].Name>>STD[i].Sex>>
STD[i].RoomNo>>STD[i].Roomtel;
num++;
}
readin.close();
}break;
}
}
//获取学生成绩信息
void get_information()
{
cout<<"请输入要录入学生数:"<<endl;
cin>>n;
cout<<"请输入要录入条数:"<<endl;
cin>>g;
fstream input("f:\\score.dat",ios::app|ios::in);
for(int i=0;i<g;i++)
{
cout<<"学生学号:";
cin>>STDB[i].ID;
cout<<"课程号:";
cin>>STDB[i].courseNo;
cout<<"课程名称:";
cin>>STDB[i].course;
cout<<"学分:";
cin>>STDB[i].goal;
cout<<"平时成绩:";
cin>>STDB[i].averagescore;
cout<<"实验成绩:";
cin>>STDB[i].labscore;
cout<<"卷面成绩:";
cin>>STDB[i].examinationscore;
if(STDB[i].labscore==-1) //计算学生的综合成绩
{STDB[i].sum=0.30*STDB[i].averagescore+0.70*STDB[i].examinationscore;}
else
{STDB[i].sum=0.15*STDB[i].averagescore+0.15*STDB[i].labscore+0.70*STDB[i].examinationscore;}
int a=int(STDB[i].sum/10); //计算学生的实得学分
switch(a)
{
case 10:
case 9:
STDB[i].factgoal=STDB[i].goal;
break;
case 8:
STDB[i].factgoal=0.8*STDB[i].goal;
break;
case 7:
STDB[i].factgoal=0.75*STDB[i].goal;
break;
case 6:
STDB[i].factgoal=0.6*STDB[i].goal;
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
STDB[i].factgoal=0;
break;
default:
cout<<"Input error"<<endl;
}
input<<STDB[i].ID<<" "<<STDB[i].courseNo<<" "<<STDB[i].course<<" "<<
STDB[i].goal<<" "<<STDB[i].averagescore<<" "<<STDB[i].labscore<<" "<<
STDB[i].examinationscore<<" "<<STDB[i].sum<<" "<<STDB[i].factgoal<<endl;
}
input.close();
}
//查询学生信息
void lookfornum() //用学号查找学生基本信息
{
struct STUDENT *m=STD;
int i,p,flag=1;
cout<<"请输入学生的学号:";
cin>>p;
for(i=0;i<num&&flag;i++)
{
if(m[i].ID==p)
{
flag=0;
cout<<m[i].ID<<" "<<m[i].Name<<" "<<m[i].Sex<<
" "<<m[i].RoomNo<<" "<<m[i].Roomtel<<endl;
}
}
if(flag)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
}
void lookforname() //用姓名查找学生基本信息
{ struct STUDENT *m=STD;
char p[20];int i=0;
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>p;
for(i=0;i<num;i++)
{
if(strcmp(p,m[i].Name)==0)
{
flag=1;
cout<<m[i].ID<<" "<<m[i].Name<<" "<<m[i].Sex<<" "<<m[i].RoomNo<<" "<<m[i].Roomtel<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
void lookforroom() //用宿舍号查找学生基本信息
{ struct STUDENT *m=STD;
int i,d;
cout<<"请输入宿舍号"<<endl;
cin>>d;
for(i=0;i<num;i++)
{
if(m[i].RoomNo==d)
cout<<m[i].ID<<" "<<m[i].Name<<" "<<m[i].Sex<<" "<<m[i].RoomNo<<" "<<m[i].Roomtel<<endl;
}
}
void seek() //运用该函数调用以上三个查询函数
{
int b;
cout<<"1.按学号"<<endl;
cout<<"2.按名字"<<endl;
cout<<"3.按宿舍"<<endl;
cin>>b;
switch(b)
{
case 1:
lookfornum();
break;
case 2:
lookforname();
break;
case 3:
lookforroom();
break;
}
}
//查询学生分数
void seek_score()
{struct STUDENTBASIC *s=STDB;
struct STUDENT *a=STD;
int p;
cout<<"请输入学生的学号:";
cin>>p;
double b=0;
int y=0;
for(int j=0;j<n;j++)
{
if(s[j].ID==p)
cout<<" "<<"学号:"<<a[j].ID<<" "<<"姓名:"<<a[j].Name<<endl;
}
for(int i=0;i<g;i++)
{
if(s[i].ID==p)
{
b=b+s[i].factgoal;
cout<<"课程编号:"<<s[i].courseNo<<" "<<"课程名称:"<<s[i].course<< " "<<"综合成绩:"<<s[i].sum<<" "<<"实得学分:"<<s[i].factgoal<<endl;
y++;
}
}
cout<<" "<<"共修:"<<y<<"科,实得总学分为:"<<b<<endl;
}
//删除
void del()
{
int p;
cout<<"请输入你要删除的学生的学号:"<<endl;
cin>>p;
int i;
for(i=0;i<num;i++)
{
if(STD[i].ID==p)
{
STD[i]=STD[i+1];
}
num--;
}
for(i=0;i<n;i++)
{
{ if(STDB[i].ID==p)
STDB[i]=STDB[i+1];
}
}
n--;
cout<<"已删除!"<<endl;
ofstream out("f:\\student.txt");
for(i=0;i<num;i++)
{
out<<STD[i].ID<<" "<<STD[i].Name<<" "<<STD[i].Sex<<
" "<<STD[i].RoomNo<<" "<<STD[i].Roomtel<<endl;
}
out.close();
}
//按降序排列综合成绩
void sort_sum()
{
int i,j,k;
struct STUDENTBASIC temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(STDB[j].sum>STDB[k].sum)
{
k=j;
};
};
if(k!=i)
{
temp=STDB[k];
STDB[k]=STDB[i];
STDB[i]=temp;
};
}
for(int v=0;v<n;v++)
{
cout<<"学号:"<<STDB[v].ID<<" "<<"综合成绩"<<STDB[v].sum<<endl;
}
第2个回答 2008-05-21
#include "RctData.h"
MySqlConn msc;
string dataBase="test";
string createTableSql="create table stu_info (sno char(10) primary key,sname nvarchar(8) not null,sex nchar(2) not null,dataStruct tinyint,operationSystem tinyint,softWareProcess tinyint,compileTheory tinyint,averageScore tinyint)";
void createTable()
{
msc.execute(createTableSql);
system("pause");
}
void paintMainMenu()
{
system("cls");
cout<<"\n\n\t\t\t 功能列表\n";
cout<<"\n\t基本功能...\t\t\t管理功能\n";
cout<<"\n\t1 : 添加学生记录\t\t5 : 查看平均成绩并按其排序";
cout<<"\n\t2 : 删除学生记录\t\t6 : 查看科目平均成绩";
cout<<"\n\t3 : 修改学生记录\t\t7 : 查找最高分(按个人平均分)";
cout<<"\n\t4 : 显示成绩列表\t\t8 : 查找最高分(按指定科目)";
cout<<"\n\t \t\t9 : 筛选(按性别)";
cout<<"\n\t \t\t10 : 筛选(按高于指定学生平均成绩)";
cout<<"\n\n\t\t\t 0 : 退出";
cout<<"\n\t您的选择 : ";
}
void add()
{
string sno,sname,sex, querySql="\0";
int dataStruct,operationSystem,softWareProcess,compileTheory,averageScore;
system("cls");
cout<<"\n\n\t\t输入要添加的学生信息\n";
cout<<"学号 : ";
cin>>sno;
cout<<"姓名 : ";
cin>>sname;
cout<<"性别 : ";
cin>>sex;
cout<<"数据结构 : ";
cin>>dataStruct;
cout<<"操作系统 : ";
cin>>operationSystem;
cout<<"软件过程 : ";
cin>>softWareProcess;
cout<<"编译原理 : ";
cin>>compileTheory;
averageScore=(dataStruct+operationSystem+softWareProcess+compileTheory)/4;
char a[10],b[10],c[10],d[10],e[10];
itoa(dataStruct,a,10);
itoa(operationSystem,b,10);
itoa(softWareProcess,c,10);
itoa(compileTheory,d,10);
itoa(averageScore,e,10);
querySql+="insert into stu_info values ('";
querySql+=sno;
querySql+="','";
querySql+=sname;
querySql+="','";
querySql+=sex;
querySql+="',";
querySql+=a;
querySql+=",";
querySql+=b;
querySql+=",";
querySql+=d;
querySql+=",";
querySql+=d;
querySql+=",";
querySql+=e;
querySql+=")";
if(msc.execute(querySql))
{
if(int tempint=msc.affectedRows())
{
cout<<"语句的执行影响 "<<tempint<<"行数据\n";
}
else
{
cout<<"语句执行没对数据库造成影响"<<endl;
}
}
system("pause");
}
void del()
{
system("cls");
string name;
cout<<"\n\n\t\t删除同学信息\n";
cout<<"输入要删除同学的姓名 :";
cin>>name;
string querySql="\0";
querySql+="delete from stu_info where sname='";
querySql+=name;
querySql+="'";
if(msc.execute(querySql))
{
if(int tempint=msc.affectedRows())
{
cout<<"语句的执行影响 "<<tempint<<"行数据\n";
}
else
{
cout<<"语句执行没对数据库造成影响"<<endl;
}
}
system("pause");
}
void update()
{
system("cls");
cout<<"\n\n\t\t\t\t修改信息"<<endl;
cout<<"别修改了,删除后再删入得了.\n";
system("pause");
}
void showTableExceptAvgScore()
{
string querySql="select sno '学生学号',sname '姓名',sex '性别',dataStruct '数据结',operationSystem '操作系',softWareProcess '软件过' ,compileTheory '编译原' from stu_info";
msc.showQuery(querySql);
system("pause");
}
void showAndOrderAvgScoreByPerson() //降序排列 desc
{
string querySql="select sno '学生学号',sname '姓名',sex '性别',averageScore '平均分' from stu_info order by averageScore desc";
msc.showQuery(querySql);
system("pause");
}
void showAvgScoreBySubject()
{
string querySql="select avg(dataStruct) '数据结',avg(operationSystem) '操作系',avg(softWareProcess) '软件过',avg(compileTheory)'编译原' from stu_info ";
msc.showQuery(querySql);
system("pause");
}
void showTopScoreByPerson()
{
string querySql="select sno '学生学号',sname '姓名',sex '性别',dataStruct '数据结',operationSystem '操作系',softWareProcess '软件过' ,compileTheory '编译原',averageScore '平均分' from stu_info where averageScore =( select max(averageScore) from stu_info ) ";
msc.showQuery(querySql);
system("pause");
}
void showTopScoreBySubject()
{
int choice;
string subject;
cout<<"选择科目(1 : 数据结构 2 : 操作系统 3 : 软件过程 4 : 编译原理) :"<<endl;
cin>>choice;
switch(choice)
{
case 1:
subject="dataStruct";
break;
case 2:
subject="operationSystem";
break;
case 3:
subject="softWareProcess";
break;
case 4:
subject="compileTheory";
break;
default:
break;
}
string querySql="\0";
querySql+="select sno '学生学号',sname '姓名',sex '性别',dataStruct '数据结',operationSystem '操作系',softWareProcess '软件过' ,compileTheory '编译原',averageScore '平均分' from stu_info where ";
querySql+=subject;
querySql+="=( select max(" ;
querySql+=subject;
querySql+=") from stu_info) ";
msc.showQuery(querySql);
system("pause");
}
void selectBySex()
{
int choice;
string sex;
cout<<"按性别筛选(1 : 男 2: 女) :";
cin>>choice;
switch(choice)
{
case 1:
sex="男";
break;
case 2:
sex="女";
break;
default:
break;
}
string querySql="\0";
querySql+="select sno '学生学号',sname '姓名',sex '性别',dataStruct '数据结',operationSystem '操作系',softWareProcess '软件过' ,compileTheory '编译原' from stu_info where sex= '";
querySql+=sex;
querySql+="'"; //字符串在Sql语句中应该用''引起来
msc.showQuery(querySql);
system("pause");
}
void selectByOneAvgScore()
{
string name;
cout<<"输入作基准的学生的名字 :";
cin>>name;
string querySql="\0";
querySql+="select sno '学生学号',sname '姓名',sex '性别',dataStruct '数据结',operationSystem '操作系',softWareProcess '软件过' ,compileTheory '编译原' from stu_info where averageScore>(select averageScore from stu_info where sname='";
querySql+=name;
querySql+="')";
msc.showQuery(querySql);
system("pause");
}
int main()
{
//连接数据库
msc.connect("root","123321",dataBase);
/*第一次执行时要建立一个学业生信息表*/
//createTable();
int choice;
paintMainMenu();
cin>>choice;
while(choice)
{
switch(choice)
{
case 1:
add();
break;
case 2:
del();
break;
case 3:
del();
break;
case 4:
showTableExceptAvgScore();
break;
case 5:
showAndOrderAvgScoreByPerson();
break;
case 6:
showAvgScoreBySubject();
break;
case 7:
showTopScoreByPerson();
break;
case 8:
showTopScoreBySubject();
break;
case 9:
selectBySex();
break;
case 10:
selectByOneAvgScore();
break;
default:
break;
}
paintMainMenu();
cin>>choice;
}
msc.close();
system("pause");
return 0;
}