大学C语言考试求帮忙!~

题目1:小型学生成绩管理系统
功能:实现某班级的学生成绩管理,学生的基本信息包括学号、姓名、各科成绩等信息。
基本要求:
1设计简单的菜单,能够进行系统功能选择。
2实现信息的录入功能。
3在已有信息的基础上添加新的记录。
4删除指定学号的学生记录。
5修改指定学号的学生记录
6实现信息的浏览功能
7按学号查询功能
8按总分或平均分排序功能

题目2:小型图书管理系统设计
功能:实现某班级的图书信息管理,图书的基本信息包括书号、书名、作者、单价、数量和简介(50字内)等。
基本要求:
1设计简单的菜单,能够进行系统功能选择。
2实现信息的录入功能。
3在已有信息的基础上添加新的记录。
4删除指定书号的记录。
5修改指定书号的记录
6实现信息的浏览功能
7按书号查询功能
8按单价排序功能

题目3:学生宿舍管理系统设计
功能:实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等
基本要求:
1设计简单的菜单,能够进行系统功能选择。
2实现信息的录入功能。
3在已有信息的基础上添加新的记录。
4删除指定房间号的记录。
5修改指定房间号的记录
6实现信息的浏览功能
7按房间号查询功能
8按已入住人数排序功能

题目4:职工工资管理系统设计
功能:实现简单的职工工资信息管理,职工工资的基本信息包括编号、姓名、基本工资、奖金、工资总额等
基本要求:
1设计简单的菜单,能够进行系统功能选择。
2实现信息的录入功能。
3在已有信息的基础上添加新的记录。
4删除指定编号的记录。
5修改指定编号的记录
6实现信息的浏览功能
7按编号查询功能
8按工资总额排序功能

题目5:职工人事管理系统设计
功能:实现简单的职工人事信息管理,基本信息包括职工编号、姓名、性别、年龄、身份证号和简历(50字以内)
基本要求:
1设计简单的菜单,能够进行系统功能选择。
2实现信息的录入功能。
3在已有信息的基础上添加新的记录。
4删除指定编号的记录。
5修改指定编号的记录
6实现信息的浏览功能
7按编号查询功能
8按身份证号排序功能

题目6:小型通讯录设计
功能:实现简单的通讯录信息管理,基本信息包括编号、姓名、电话、手机、邮编、地址和关系(如朋友、亲友、同事、同学等)
基本要求:
1设计简单的菜单,能够进行系统功能选择。
2实现信息的录入功能。
3在已有信息的基础上添加新的记录。
4删除指定编号的记录。
5修改指定编号的记录
6实现信息的浏览功能
7按编号查询功能
8按手机号排序功能

帮忙弄下吧!~能在TC上正常运行的!~帮个忙谢谢!~
你做完一个就写上做的哪个吧!~~~谢谢了!~
最新回答
平凡的一天

2024-11-27 05:44:47

给个学生成绩管理的把,在VC上运行过的,TC的不知道,你自己试下,不过可能会出现很多问题,这个是C++版本的,你要把它改成C版本,而且改好了之后也不一定可行,主要是TC对标准支持也不好,而且也不利于调试...还是不要用TC了

#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>

using namespace std;

#define max 100;

class student
{
public:
student *next;
public:
string name;//姓名
long num;//学号
int x,y,z;//数学,语文,英语
int AA;//总分
void play(){cout<<name<<"学生的学号是"<<num<<",数学:"<<x<<",语文:"<<y<<",英语:"<<z<<",总分:"<<AA<<endl;};
student(string sname,long snum,int sx,int sy,int sz)
{
name=sname;
num=snum;
x=sx;
y=sy;
z=sz;
}
};

class cla
{
public:
cla()//构造函数
{
stu=0;
sload();
}
~cla()//析构函数
{
student *p;
p=stu;
while(p)
{
p=p->next;
delete stu;
stu=p;
}
stu=0;
}
void sadd(); //添加
void sremove(); //删除
void samend(); //修改
void ssearch(); //查询
void staxis(); //排序
void ssave(); //保存
void sload(); //读取

//排序函数
void pxh();
void psx();
void pyw();
void pyy();
void pAA();
private:
student *stu; //头接点
};

void cla::sadd()//添加
{
student *q;
string name1;
long num1;
int x1,y1,z1;

system("cls");
cout<<"\n **增加的学生** \n"<<endl;
cout<<"请输入学生的(中间用空格间隔) "<<endl;
cout<<"姓名 学号 数学成绩 语文成绩 英语成绩:"<<endl;
cin>>name1>>num1>>x1>>y1>>z1;

q=new student(name1,num1,x1,y1,z1);
q->next=0;
q->AA=x1+y1+z1;

if(stu)
{
student *t;
t=stu;
if(t->num==num1)
{
cout<<"学号已存在,请重新输入"<<endl;
return;
}
while(t->next)
{
if(t->num==num1)
{
cout<<"学号已存在,请重新输入"<<endl;
return;
}
t=t->next;
}
t->next=q;
}
else
{
stu=q;
}
cout<<"输入完毕"<<endl;
}

void cla::sremove()//删除
{
system("cls");
int num1;
cout<<"\n** 删除学生信息 **\n";
cout<<"请输入想要删除学生的学号:";
cin>>num1;

//查找要删除的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

//删除结点
if(p1!=NULL)//若找到结点,则删除
{
p1->play();
cout<<"确定删除吗?[Y/N]"<<endl;
char c;cin>>c;
if(toupper(c)!='Y') return;

if(p1==stu) //若要删除的结点是第一个结点
{
stu=p1->next;
delete p1;
}
else //若要删除的结点是后续结点
{
p2->next=p1->next;
delete p1;
}
cout<<"找到学号为"<<num1<<"的学生,并删除\n";
}
else //未找到结点
cout<<"未找到想要删除的学生!\n";
}

void cla::samend()//修改
{
system("cls");
long num1;
cout<<"\n** 修改学生信息 **\n";
cout<<"输入要修改学生的学号";
cin>>num1;

//查找要修改的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!=NULL)
{
cout<<"学号是"<<num1<<"的学生的信息"<<endl;
cout<<"姓名 "<<p1->name<<"数学"<<p1->x<<"语文"<<p1->y<<"英语"<<p1->z<<endl;
cout<<"请输入修改后的信息:姓名 数学成绩 语文成绩 英语成绩"<<endl;
cin>>p1->name>>p1->x>>p1->y>>p1->z;
p1->AA=p1->x+p1->y+p1->z;
cout<<"修改成功"<<endl;
}
else //未找到接点
cout<<"未找到!\n";
}

void cla::ssearch()//查询
{
system("cls");
cout<<"\n** 查询学生信息 **\n"<<endl;
cout<<"请输入查询方式:"<<endl;
cout<<"1.按学号查询"<<endl;
cout<<"2.按姓名查询"<<endl;
cout<<"3.返回"<<endl;
char c; cin>>c;
switch (c)
{
case '1':
{
long num1;
cout<<"要查询的学号"<<endl;
cin>>num1;
//查找要查询的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

if(p1!=NULL)
{
cout<<"学号是"<<num1<<"的学生的信息"<<endl;
cout<<"姓名:"<<p1->name<<" 数学:"<<p1->x<<" 语文:"<<p1->y<<" 英语:"<<p1->z<<endl;
cout<<"查询完毕...";
}
else //未找到接点
cout<<"未找到!\n";
break;
}
case '2':
{
string name1;
cout<<"要查询的学生姓名"<<endl;
cin>>name1;
//查找要查询的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->name==name1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

if(p1!=NULL)
{
cout<<name1<<"的学生的信息"<<endl;
cout<<"学号:"<<p1->num<<" 数学:"<<p1->x<<" 语文:"<<p1->y<<" 英语:"<<p1->z<<endl;
cout<<"查询完毕...";
}
else //未找到接点
cout<<"未找到!\n";
break;
}
case '3': return;
}

}

void cla::pxh() //按学号排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{
p1=stu;
if (p1->num>p1->next->num) // 如果头结点大于第二个的
{
p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{
p2=p1;
p1=p1->next;
if(p1->num>p1->next->num)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}

p1=stu;
do
{
p1->play();
p1=p1->next;
}while(p1);
}

void cla::psx()//按数学成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->x>p1->next->x) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->x>p1->next->x)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pyw()//按语文成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->y>p1->next->y) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->y>p1->next->y)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pyy()//按英语成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->z>p1->next->z) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->z>p1->next->z)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pAA()//按总分排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->AA>p1->next->AA) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->AA>p1->next->AA)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::staxis()//排序
{

system("cls");
char c;
cout<<"请选择以何种方式排序:"<<endl;
cout<<"1……以学号排序"<<endl;
cout<<"2……以数学成绩排序"<<endl;
cout<<"3……以语文成绩排序"<<endl;
cout<<"4……以英语成绩排序"<<endl;
cout<<"5……以总分排序"<<endl;
cout<<"6……返回"<<endl;
cout<<"请选择(1-6)"<<endl;
cin>>c;

switch (c)
{
case '1':pxh(); break;
case '2':psx(); break;
case '3':pyw(); break;
case '4':pyy(); break;
case '5':pAA(); break;
case '6':return;
}

}

void cla::ssave() //保存到文件
{
system("cls");
char c;
cout<<"\n保存学生信息(将覆盖原文件),是否继续?[Y/N]:"; cin>>c;
if(toupper(c)!='Y') return;

ofstream tfile("date.txt",ios_base::binary);
student *p=stu;
while(p)// 写入文件
{
tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;
tfile<<endl;
p=p->next;
}
tfile.close();
cout<<"保存完毕..."<<endl;
}

void cla::sload() //读取
{
student *p;
p=stu;
while(p)
{
stu=p->next;
delete p;
p=stu;
}

ifstream tfile("date.txt",ios_base::binary);

string name1;
long num1;
int x1,y1,z1;

tfile>>name1>>num1>>x1>>y1>>z1;
while(tfile.good())
{
//创建学生接点
student *s;
s=stu;
s=new student(name1,num1,x1,y1,z1);
s->next=0;
s->AA=x1+y1+z1;
if(stu) //若已经存在结点
{
student *p2;
p2=stu;
while(p2->next) //查找尾结点
{
p2=p2->next;
}
p2->next=s; //连接
}
else //若不存在结点(表空)
{
stu=s; //连接
}
tfile>>name1>>num1>>x1>>y1>>z1;
}
tfile.close();
cout<<"\n学生信息已经装入...\n";

}

void main()
{
char c;
cla a;
do
{
cout<<"\n 学 生 成 绩 管 理 系 统 \n";
cout<<"**************************************\n";
cout<<" 作者:软件工程06110119:zgjxwl \n";
cout<<" 1……增加学生 \n";
cout<<" 2……删除学生 \n";
cout<<" 3……修改学生 \n";
cout<<" 4……查询学生信息 \n";
cout<<" 5……排序 \n";
cout<<" 6……保存信息 \n";
cout<<" 7……读取信息 \n";
cout<<" 8……退出 \n";
cout<<"**************************************\n";
cout<<"请选择(1-8):";
cin>>c;
switch(c)
{
case '1': a.sadd();break;
case '2': a.sremove();break;
case '3': a.samend();break;
case '4': a.ssearch();break;
case '5': a.staxis();break;
case '6': a.ssave();break;
case '7': a.sload();break;
}

}while(c!='8');
}
一清北华

2024-11-27 05:28:52

这哪里是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;
}
灰尘往事

2024-11-27 07:47:34

#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;
}