求一个简单学生管理系统

实现一个基本的学生管理系统
基本的学生管理系统以文件为基础,根据教师提供的学生数据,必须完成其相应的基本功能,有能力的同学可以尝试系统可选功能。
1.学生数据格式
类别 姓名 学号 年龄 系别 实验室 文章
D 张三 B02001 28 计算机学院 LAB1 2
M 王欢 Y01233 24 自动化学院 LAB1
B 李嘉诚 00291 20 电信工程学院
D 郑智 B01021 29 自动化学院 LAB9 20
注意:类别中B代表本科生,M代表硕士研究生,D代表博士研究生;每个学生信息包括姓名、学号、年龄、系别;硕士研究生和博士研究生包括实验室名称;博士研究生包括发表文章的数量。字段之间使用 ’\t’ 作为分割符。
2.系统基本功能
(1)读取文件中的学生信息,能够按照学生类别显示;
(2)能够增加、删除、修改学生信息
(3)能够按照学号精确查询学生信息
(4)能够统计不同类别、不同性别的学生人数
(5)更新后的学生信息数据保存在文件中
3.系统可选功能
(1)能够按照姓名模糊查询学生信息
(2)能够按照年龄对数据进行排序
(3)其他认为应该增加的信息管理功能,比如生成图表信息分析信息
4.系统实现建议
(1)学生信息数据由教师以文件的形式提供,建议学生使用C++的I/O流类读取文件,并能够将文件中的信息按照字段进行区分。
(2)建立三个具有单继承关系的本科生类、硕士生类、博士生类,使用对象数组的形式保存从文件中读取的学生信息。
(3)基类和派生类中类似的操作应该定义为同名成员函数,如显示学生信息的函数display()等,以便通过动态联编的方式调用相关函数。
(4)建议使用基于对话框的程序结构,学习Windows可视化编程的技术。
(5)需要学习对话框、编辑框、按钮、复选框、下拉框、列表框等控件的使用。
5.系统界面要求
(1)建议使用基于MFC对话框的图形界面实现,如图1所示。

图1 学生管理系统参考界面
(2)可以使用控制台方式实现,如图2所示

图2 学生管理系统参考界面

第1个回答  2006-09-10
找学C++的人帮你编一个,我又一个类似的。不过我不会搞成系统界面。不过先发给你看看。
定义一个学生类,共中有3个数据成员:学号、姓名、年龄,以及若干成员函数。同时编写main函数使用这个类,实现对学生数据的赋值和输出,并且实现以ASCII码形式将学生的信息存储到一个磁盘文件中。
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
#include <string.h>
#include <stdlib.h>
#include <fstream.h>
struct student
{
int mo,da,yr;
char name[10];
int num;
int age;
static char curr[2][10]; //课程名
float score[2]; //相应课程的分数
};
char student::curr[2][10];

float average(student stu) //求某学生三门课的平均分
{
float sum=0;
for(int i=0;i<2;i++)
sum+=stu.score[i];
return sum/2;
}
float average1(student stu[],int n,int k)//求某门课总平均分,k代表课程的编号
{
float sum=0;
for(int i=0;i<n;i++)
sum+=stu[i].score[k];
return sum/n;
}
void sort(student stu[],int n) //对stu按平均成绩进行排序(降序)
{
student temp;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
if(average(stu[i])<average(stu[j]))
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
void main()
{
ofstream fout; //fout输出文件流对象
ifstream fin;
student stu[50];
int count=0;
char endyn;
cout<<"输入两门课的名称:";
cin>>student::curr[0]>>student::curr[1];
while(1)
{
cout<<"输入第"<<count+1<<"个学生的信息:\n";
cout<<"姓名:";
cin>>stu[count].name;
cout<<"学号:";
cin>>stu[count].num;
cout<<"年龄:";
cin>>stu[count].age;
for(int i=0;i<2;i++)
{
cout<<"课程"<<student::curr[i]<<"的得分为:";
cin>>stu[count].score[i];
}
cout<<"是否继续(Y/N)";
cin>>endyn;
if(endyn=='N'||endyn=='n')
{
cout<<'\n';
break;
}
else
count++;
}
for(int i=0;i<=count;i++)
{
cout<<stu[i].name<<"两门课的平均分为:"<<average(stu[i])<<'\n';
}
for(i=0;i<2;i++)
{
cout<<"\n全班课程"<<student::curr[i]<<"的平均分为:"<<average1(stu,count+1,i);
}
cout<<"\n\n";
sort(stu,count+1);
cout<<" 按平均成绩排名:\n\n";
cout<<setw(8)<<"姓名"<<setw(8)<<"学号"<<setw(8)<<"年龄"<<setw(12)<<student::curr[0]<<setw(12)
<<student::curr[1]<<setw(12)<<"平均成绩\n";
for(i=0;i<=count;i++)
cout<<setw(8)<<stu[i].name<<setw(8)<<stu[i].num<<setw(8)<<stu[i].age<<setw(12)<<stu[i].score[0]
<<setw(12)<<stu[i].score[1]<<setw(12)<<average(stu[i])<<'\n';
while(fout&&i<3)
{
fout.write((char*)&stu[i],sizeof(student));
i++;
}
fout.close();
fin.open("students.txt",ios::in|ios::binary);
if (!fin)
{
cout<<"Error:Can't open students.txt!";
exit(1);
}
fin.close();
}
输入和输出结果:(粗体为输入结果)
输入两门课的名称:gaoshu
wuli
输入第1个学生的信息:
姓名:zhao
学号:2
年龄:21
课程gaoshu的得分为:83
课程wuli的得分为:76
是否继续(Y/N)y
输入第2个学生的信息:
姓名:qian
学号:5
年龄:21
课程gaoshu的得分为:73
课程wuli的得分为:87
是否继续(Y/N)y
输入第3个学生的信息:
姓名:sun
学号:7
年龄:21
课程gaoshu的得分为:82
课程wuli的得分为:79
是否继续(Y/N)y
输入第4个学生的信息:
姓名:zhou
学号:18
年龄:20
课程gaoshu的得分为:82
课程wuli的得分为:84
是否继续(Y/N)n

zhao两门课的平均分为:79.5
qian两门课的平均分为:80
sun两门课的平均分为:80.5
zhou两门课的平均分为:83

全班课程gaoshu的平均分为:80
全班课程wuli的平均分为:81.5

按平均成绩排名:

姓名 学号 年龄 gaoshu wuli 平均成绩
zhou 18 20 82 84 83
sun 7 21 82 79 80.5
qian 5 21 73 87 80
zhao 2 21 83 76 79.5本回答被网友采纳
第2个回答  2006-09-16
我认为用Visual FoxPro 最好,只要你建立一个数据库就行了 搞上超级连接,然后就可以想加入谁就加入谁了, 他会给你一个表格形式出现的。你可以考虑一下!
第3个回答  2006-09-10
自己用VB或者DELPHI做喽,很简单的嘛!!!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网