《面向对象程序设计》课程设计
A可选题目学生信息管理系统学生选课管理系统学生成绩管理系统学生宿舍管理系统图书管理系统企业人事管理系统B总体要求1.选择一个题目,使用VC6Win32ConsoleApp...
A 可选题目 学生信息管理系统
学生选课管理系统
学生成绩管理系统
学生宿舍管理系统
图书管理系统
企业人事管理系统B 总体要求
1.选择一个题目,使用VC6 Win32 Console Application开发
2.使用面向对象的程序设计方法,设计系统并完成系统的各个功能
3.能在系统中引入继承、多态技术(如:从基本的员工类派生出不同部门或工种的职工;通过虚函数来计算月薪等功能),并在功能上有扩充(如:统计职工信息等),能用UML的类画来描述类以及各个类之间的关系,并清晰的反映在设计报告上.
4.系统实现合理,整个工程必须是多文件结构;程序运行无误,能在设计报告中清楚叙述整个工程的实现步骤,在第3点的基础之上,能在系统中进一步引入STL、错误和异常处理技术(如:将主函数中的职工对象存放在vector或list中等),并在功能上有扩充,能用UML的类画来描述类以及各个类之间的关系,并清晰的反映在设计报告上
系统实现合理,整个工程必须是多文件结构;
5.并附上关键代码、运行结果截图. 展开
学生选课管理系统
学生成绩管理系统
学生宿舍管理系统
图书管理系统
企业人事管理系统B 总体要求
1.选择一个题目,使用VC6 Win32 Console Application开发
2.使用面向对象的程序设计方法,设计系统并完成系统的各个功能
3.能在系统中引入继承、多态技术(如:从基本的员工类派生出不同部门或工种的职工;通过虚函数来计算月薪等功能),并在功能上有扩充(如:统计职工信息等),能用UML的类画来描述类以及各个类之间的关系,并清晰的反映在设计报告上.
4.系统实现合理,整个工程必须是多文件结构;程序运行无误,能在设计报告中清楚叙述整个工程的实现步骤,在第3点的基础之上,能在系统中进一步引入STL、错误和异常处理技术(如:将主函数中的职工对象存放在vector或list中等),并在功能上有扩充,能用UML的类画来描述类以及各个类之间的关系,并清晰的反映在设计报告上
系统实现合理,整个工程必须是多文件结构;
5.并附上关键代码、运行结果截图. 展开
2个回答
2013-07-12
展开全部
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
double math,chinese,english,average,sum;
public:
stu()
{
}
stu(char n[20],double ma,double chin,double eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double getaver()
{
average=getsum()/3;
return average;
}
friend void main();
};
void main()
{
cout<<"请选择您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)数据录入"<<endl;
cout<<"(1)增加人员"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按总成绩查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有学生的数据"<<endl;
cout<<"成绩名词"<<endl;
cout<<"(7)按总分查询排名"<<endl;
cout<<"(8)按语文查询排名"<<endl;
cout<<"(9)按数学查询排名"<<endl;
cout<<"(y)按英语查询排名"<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
}while(flag2==0);
do
{
switch(p)
{
case '0':
{
char c;
char name[20];double math,chinese,english;
do{
cout<<"请输入姓名"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的总成绩"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<<endl;
}
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<<endl<<"平均成绩是:"<<(*s[j]).getaver()<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
} 还有一部分。。
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
double math,chinese,english,average,sum;
public:
stu()
{
}
stu(char n[20],double ma,double chin,double eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double getaver()
{
average=getsum()/3;
return average;
}
friend void main();
};
void main()
{
cout<<"请选择您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)数据录入"<<endl;
cout<<"(1)增加人员"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按总成绩查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有学生的数据"<<endl;
cout<<"成绩名词"<<endl;
cout<<"(7)按总分查询排名"<<endl;
cout<<"(8)按语文查询排名"<<endl;
cout<<"(9)按数学查询排名"<<endl;
cout<<"(y)按英语查询排名"<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
}while(flag2==0);
do
{
switch(p)
{
case '0':
{
char c;
char name[20];double math,chinese,english;
do{
cout<<"请输入姓名"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的总成绩"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<<endl;
}
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<<endl<<"平均成绩是:"<<(*s[j]).getaver()<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
} 还有一部分。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-12
展开全部
学生信息管理系统,给你一部分程序,符合要求把你邮箱发给我。#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include <math.h>
#include"form.h"
#include"add.h"extern int count;
////////////////////////////函数声明//////////////////////////
void sortdate(); //2.记录排序
void printreport(struct student *head); //3.打印学生成绩
void searchstudents(); //6.查询学生信息
void statscore(); //7.统计成绩
void out(); //0.退出
int total(struct student *nod); //计算总分
int zavg(struct student *nod); //计算平均分整数部分
int xavg(struct student *nod); //计算平均分小数部分
void SortAllData(struct student *head,int count, int (*p)());//排序
int CompareSnoAsc(struct student *p,struct student *q); //学号升序////////////////////////////函数实现//////////////////////////
void main()
{
winwelcome();
do{
system("cls");
winmenulist();
onlyoneinput(56,16); //输入单个选项
switch(key)
{
case '1': //1.添加学生信息
addstudentinfo();
break;
case '2': //2.记录排序
sortdate();
break;
case '3': //3.打印学生成绩
printreport(head);
break;
case '6': //6.查询学生信息
searchstudents();
break;
case '7': //7.统计成绩
statscore();
break;
case '0':
out();
continue;
case '\r':
continue;
case ' ':
continue;
default:
goxy(2,20);
putchar(key);
printf(" is a error number, please input a number between 0 to 7");
goxy(2,21);
printf("Press any key to continue");
getch();
}
}while(1);
}/////////////////////////2.记录排序//////////////////////////
void sortdate()
{
while (1)
{
system("cls");
winsortdate();
onlyoneinput(55,17);
switch(key)
{
case '1': //按学号升序排
system("cls");
winstudengrade();
goxy(31,3);
printf("Rise By Student Number");
// SortAllData(head,count,CompareSnoAsc);
goxy(1,21);
printf("Press any key to continue");
getch();
break;
case '2': //按学号降序排
winstudengrade();
goxy(33,3);
printf("Descend By Number");
goxy(1,21);
printf("Press Any Key To Continue");
break;
case '3': //按总分升序排
winstudengrade();
goxy(35,3);
printf("Rise By Total");
goxy(1,21);
printf("Press Any Key To Continue");
break;
case '4': //按总分降序排
winstudengrade();
goxy(34,3);
printf("Descend By Total");
goxy(1,21);
printf("Press Any Key To Continue");
break;
//case 5:
default:
goxy(2,20);
putchar(key);
printf(" is a error number, please input a number between 0 to 4");
goxy(2,21);
printf("press any key to continue");
getch();
}
}
}///////////////////////////3.打印学生成绩/////////////////////////
void printreport(struct student *head)
{
int i,j,page=1;
struct student *node;
node=head;
while(node)
{
system("cls");
winstudengrade();
goxy(31,3);
printf("Print Student's Report");
j=8;
for(i=1;i<=10;i++,j++)
{
goxy(1,j);
printf("%s",node->sno);
goxy(6,j);
printf("%s",node->name);
goxy(26,j);
printf("%s",node->age);
goxy(30,j);
printf("%3d",node->chinese);
goxy(38,j);
printf("%3d",node->english);
goxy(46,j);
printf("%3d",node->math);
goxy(51,j);
printf("%3d",node->physics);
goxy(59,j);
printf("%3d",node->chemistry);
goxy(69,j);
printf("%3d",total(node));
goxy(75,j);
printf("%2d.%d",zavg(node),xavg(node));
node=node->next;
if (node==NULL)
break;
}
goxy(2,20);
printf("Press up key to up page");
goxy(2,21);
printf("Press down key to next page");
goxy(2,22);
printf("Press esc key to exit");
while(1)
{
key=getch();
if (key==27)
return;
if (key<=0)
{
key=getch();
if (key==72&&page!=1) //向上翻页
{
node=node-10;
page--;
break;
}
if (key==80&&node!=NULL) //向下翻页
{
page++;
break;
}
}
}
}
}///////////////////////////6.查询学生信息//////////////////////////
void searchstudents()
{
scanf("%d",key);
system("cls");
switch(key)
{
case '1':
winstudengrade();
goxy(33,3);
printf("Search By Number");
goxy(1,21);
printf("Please Input Any Key TO Continue");
break;
case '2':
winstudengrade();
goxy(35,3);
printf("Search By Name");
goxy(1,21);
printf("Please Enter Any Key TO Continue");
// case 3:
//返回上级目录
}
}///////////////////////////7.统计成绩/////////////////////////
void statscore()
{
winstatscore();
}////////////////////////////0.退出//////////////////////////
void out()
{
while(1)
{
system("cls");
winout();
onlyoneinput(55,11);
if (key=='Y'||key=='y')
exit(0);
else if(key=='N'||key=='n')
break;
else
{
goxy(2,20);
putchar(key);
printf(" is a error option,please input a option ( Y or N )");
goxy(2,21);
printf("please input anykey to continue");
getch();
}
}
}/////////////////////计算总分/////////////////////
int total(struct student *nod)
{
int sum=0;
sum=nod->chinese+nod->english+nod->math+nod->physics+nod->chemistry;
return sum;
}//////////////////计算平均分////////////////////
int zavg(struct student *nod) //整数部分
{
int i=0;
i=total(nod)/5;
return i;
}
int xavg(struct student *nod) //小数部分
{
float i;
int j;
i=total(nod)/5.0;
j=(i-zavg(nod))*10;
return j;
}///////////////////////排序////////////////////////
void SortAllData(struct student *head,int count, int (*p)())
{
struct student *i,*j,*temp=NULL;
i=j=head;
for (i=head;i!=NULL;i=i->next)
{
for (j=i->next;j!=NULL;j=j->next)
{
if ((*p)())
{
temp->pre=i->pre;
temp->next=i->next;
i->pre->next=temp;
i->next->pre=temp;
i->pre=j->pre;
i->next=j->next;
j->pre->next=i;
j->next->pre=i;
j->pre=temp->pre;
j->next=temp->next;
temp->pre->next=j;
temp->next->pre=j;
}
}
}
printreport(head);
}///////////////////////学号升降序/////////////////////int CompareSnoAsc(struct student *p,struct student *q) //学号升序
//{
// return strcmp(p->sno,q->sno)>0;
//}
//int CompareSnoDesc(struct student *p,struct student *q)//学号降序
//{
// return strcmp(p->sno,q->sno)<0;
#include<stdlib.h>
#include<ctype.h>
#include <math.h>
#include"form.h"
#include"add.h"extern int count;
////////////////////////////函数声明//////////////////////////
void sortdate(); //2.记录排序
void printreport(struct student *head); //3.打印学生成绩
void searchstudents(); //6.查询学生信息
void statscore(); //7.统计成绩
void out(); //0.退出
int total(struct student *nod); //计算总分
int zavg(struct student *nod); //计算平均分整数部分
int xavg(struct student *nod); //计算平均分小数部分
void SortAllData(struct student *head,int count, int (*p)());//排序
int CompareSnoAsc(struct student *p,struct student *q); //学号升序////////////////////////////函数实现//////////////////////////
void main()
{
winwelcome();
do{
system("cls");
winmenulist();
onlyoneinput(56,16); //输入单个选项
switch(key)
{
case '1': //1.添加学生信息
addstudentinfo();
break;
case '2': //2.记录排序
sortdate();
break;
case '3': //3.打印学生成绩
printreport(head);
break;
case '6': //6.查询学生信息
searchstudents();
break;
case '7': //7.统计成绩
statscore();
break;
case '0':
out();
continue;
case '\r':
continue;
case ' ':
continue;
default:
goxy(2,20);
putchar(key);
printf(" is a error number, please input a number between 0 to 7");
goxy(2,21);
printf("Press any key to continue");
getch();
}
}while(1);
}/////////////////////////2.记录排序//////////////////////////
void sortdate()
{
while (1)
{
system("cls");
winsortdate();
onlyoneinput(55,17);
switch(key)
{
case '1': //按学号升序排
system("cls");
winstudengrade();
goxy(31,3);
printf("Rise By Student Number");
// SortAllData(head,count,CompareSnoAsc);
goxy(1,21);
printf("Press any key to continue");
getch();
break;
case '2': //按学号降序排
winstudengrade();
goxy(33,3);
printf("Descend By Number");
goxy(1,21);
printf("Press Any Key To Continue");
break;
case '3': //按总分升序排
winstudengrade();
goxy(35,3);
printf("Rise By Total");
goxy(1,21);
printf("Press Any Key To Continue");
break;
case '4': //按总分降序排
winstudengrade();
goxy(34,3);
printf("Descend By Total");
goxy(1,21);
printf("Press Any Key To Continue");
break;
//case 5:
default:
goxy(2,20);
putchar(key);
printf(" is a error number, please input a number between 0 to 4");
goxy(2,21);
printf("press any key to continue");
getch();
}
}
}///////////////////////////3.打印学生成绩/////////////////////////
void printreport(struct student *head)
{
int i,j,page=1;
struct student *node;
node=head;
while(node)
{
system("cls");
winstudengrade();
goxy(31,3);
printf("Print Student's Report");
j=8;
for(i=1;i<=10;i++,j++)
{
goxy(1,j);
printf("%s",node->sno);
goxy(6,j);
printf("%s",node->name);
goxy(26,j);
printf("%s",node->age);
goxy(30,j);
printf("%3d",node->chinese);
goxy(38,j);
printf("%3d",node->english);
goxy(46,j);
printf("%3d",node->math);
goxy(51,j);
printf("%3d",node->physics);
goxy(59,j);
printf("%3d",node->chemistry);
goxy(69,j);
printf("%3d",total(node));
goxy(75,j);
printf("%2d.%d",zavg(node),xavg(node));
node=node->next;
if (node==NULL)
break;
}
goxy(2,20);
printf("Press up key to up page");
goxy(2,21);
printf("Press down key to next page");
goxy(2,22);
printf("Press esc key to exit");
while(1)
{
key=getch();
if (key==27)
return;
if (key<=0)
{
key=getch();
if (key==72&&page!=1) //向上翻页
{
node=node-10;
page--;
break;
}
if (key==80&&node!=NULL) //向下翻页
{
page++;
break;
}
}
}
}
}///////////////////////////6.查询学生信息//////////////////////////
void searchstudents()
{
scanf("%d",key);
system("cls");
switch(key)
{
case '1':
winstudengrade();
goxy(33,3);
printf("Search By Number");
goxy(1,21);
printf("Please Input Any Key TO Continue");
break;
case '2':
winstudengrade();
goxy(35,3);
printf("Search By Name");
goxy(1,21);
printf("Please Enter Any Key TO Continue");
// case 3:
//返回上级目录
}
}///////////////////////////7.统计成绩/////////////////////////
void statscore()
{
winstatscore();
}////////////////////////////0.退出//////////////////////////
void out()
{
while(1)
{
system("cls");
winout();
onlyoneinput(55,11);
if (key=='Y'||key=='y')
exit(0);
else if(key=='N'||key=='n')
break;
else
{
goxy(2,20);
putchar(key);
printf(" is a error option,please input a option ( Y or N )");
goxy(2,21);
printf("please input anykey to continue");
getch();
}
}
}/////////////////////计算总分/////////////////////
int total(struct student *nod)
{
int sum=0;
sum=nod->chinese+nod->english+nod->math+nod->physics+nod->chemistry;
return sum;
}//////////////////计算平均分////////////////////
int zavg(struct student *nod) //整数部分
{
int i=0;
i=total(nod)/5;
return i;
}
int xavg(struct student *nod) //小数部分
{
float i;
int j;
i=total(nod)/5.0;
j=(i-zavg(nod))*10;
return j;
}///////////////////////排序////////////////////////
void SortAllData(struct student *head,int count, int (*p)())
{
struct student *i,*j,*temp=NULL;
i=j=head;
for (i=head;i!=NULL;i=i->next)
{
for (j=i->next;j!=NULL;j=j->next)
{
if ((*p)())
{
temp->pre=i->pre;
temp->next=i->next;
i->pre->next=temp;
i->next->pre=temp;
i->pre=j->pre;
i->next=j->next;
j->pre->next=i;
j->next->pre=i;
j->pre=temp->pre;
j->next=temp->next;
temp->pre->next=j;
temp->next->pre=j;
}
}
}
printreport(head);
}///////////////////////学号升降序/////////////////////int CompareSnoAsc(struct student *p,struct student *q) //学号升序
//{
// return strcmp(p->sno,q->sno)>0;
//}
//int CompareSnoDesc(struct student *p,struct student *q)//学号降序
//{
// return strcmp(p->sno,q->sno)<0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询