课程设计:学生基本信息管理系统

问题描述
系统维护学生的基本信息以及各科成绩信息,并支持查询.修改功能.
学生基本信息文件(A.TXT)的内容如下:
学号 姓名 性别 宿舍号码 电话号码
01 张成成 男 501 87732111
02 李成华 女 101 87723112
.. .... .. ... ......
学生成绩基本信息文件(B.TXT)及其内容如下:
学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分
01 A01 大学物理 3 66 78 82
02 B03 高等数学 4 78 55 90
... .. ..... . .. .. ...
基本要求
要能提供以下几个基本功能
1数据录入功能:对B.TXT进行数据录入,只录入每个学生的学号.课程编号 课程名称,学分,平时成绩,实验成绩,卷面成绩共7个数据.综合成绩.学分
由程序根据条件自动运算.
2计算综合成绩:综合成绩的计算:如果本各成的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70%.
3实得学分的计算:采用等级学分制,综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=学分*80%;综合成绩在70-80之间 应得学分+学分*75%,综合成绩在60-70之间的 应得学分=学分*60% 综合成绩在60以下的 应得学分=学分*0%.
4查询功能:分为学生基本查询和成绩查询两种
(1)学生基本查询:
1.输入一个学号,查出此生的基本信息并显示输出.
2.输入一个宿舍号码,可查询本室所有学生的基本信息并显示输出.
(2).成绩查询
1输入一个学号,查询此学生的所有课程情况 格式如下.
学号:xx 姓名xxx
课程编号:xxx 课程名称xxxxx 综合成绩xxxx 实得学分xxx
课程编号:xxx 课程名称xxxxx 综合成绩xxxx 实得学分xxx
课程编号:xxx 课程名称xxxxx 综合成绩xxxx 实得学分xxx
... ... .... ... .... ... .... ...
共修:xxx科 ,实得学分:xxx
5.排序功能:能实现选择按综合成绩或实得学分升序或降序排列并显示数据.
程序设计的具体说明
主函数中提供菜单结构:根据选择的数字执行不同的操作.
菜单
0.推出
1.成绩录入
2.学生信息查询
3.学生成绩查询
4.成绩排序及显示
5.删除(选做)
要求界面友好

你说的叫学籍管理系统也可。我把我的课设结果发给你,一共参考。绝对没问题。比你的全面,你只须稍加修正。
学籍管理系统
学籍信息,包括学院、班级、学号、姓名、专业、性别、出生日期,家庭地址,电话号码等。要求该系统具有浏览,增加,删除,查询,插入等功能。程序的主要实现可以用链表来实现。类设计完成后,输入足够的测试数据进行测试,将必要的测试及过程输入到文件中。菜单可以根据设计功能要求自由设计。
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
#include"Student.h"
#include"StuList.h"
class StuList;//带表头节点的链表类
class Student //链表节点类
{
friend StuList;
private://每个结点的具体信息
char school[12];//学院
char major[12];//专业
char class1[12]; //班级
long number; //学号
char name[9]; //姓名
char sex[7]; //性别
char birth[12]; //出生年月
long phone; //电话号码
char add[20]; //家庭地址
Student *next;
public:
Student(char* scl=NULL,char* mal=NULL,char* cal=NULL,long No=0,char* nal=NULL,char *sal=NULL,char *bil=NULL,char *adl=NULL,long phl=0);//构造函数定义,初始化各个参数
};
class StuList //带表头节点的链表类
{
private:
Student *head,*current;//定义指针
public://以下是成员函数
StuList();
~StuList();
void makeEmpty();
void add(char* scl,char* cal,char* mal,long No,char* nal,char *sal,char *bil,char *adll,long phl);
void insert(char* scl,char* cal,char* mal,long No,char* nal,char *sal,char *bil,char *adl,long phl);
void delet(long No,char* nal);
void searchStu1(char* nal);
void searchStu2(long no);
void chazhao();
void print();
void save();
};
Student::Student(char* scl,char* mal,char* cal,long No,char* nal,char *sal,char *bil,char *adl,long phl)
// Student类的构造函数定义,初始化各个参数
{
……/
}
StuList::StuList()//StuList类的构造函数
{
……
}
StuList::~StuList()//StuList类的析构函数
{
……
}
void StuList::makeEmpty() //清空链表
{……}
void StuList::searchStu1(char* nal) //按姓名查找链表中的节点,打印信息
{
int a=0;
current=head->next;
do
{
if(strcmp(current->name,nal)==0)//strcmp为比较字符串
{
cout<<"查到姓名为"<<current->name<<"的学生的信息:\n";
cout<<"--------------------------------------------------------------------\n";
cout<<"学院\t专业\t班级\t学号\t姓名\t性别\t生日\t住址\t电话\n";
cout<<"--------------------------------------------------------------------\n";
cout<<current->school<<"\t"<<current->major<<"\t"<<current->class1<<"\t"<<current->number<<"\t";
cout<<current->name<<"\t"<<current->sex<<"\t"<<current->birth<<"\t"<<current->add<<"\t"<<current->phone<<endl;
a++;
}
current=current->next;
}while(current!=NULL);
if(a==0) cout<<"没找到!"<<endl;
else cout<<"\n共"<<a<<"条记录!\n";
}
void StuList::searchStu2(long no) //按学号查找链表中的节点,打印信息

{
int b=0;
current=head->next;
do
{
if(current->number==no)
{
cout<<"查到学号为"<<current->number<<"的学生的信息:\n";
cout<<"--------------------------------------------------------------------\n";
cout<<"学院\t专业\t班级\t学号\t姓名\t性别\t生日\t住址\t电话\n";
cout<<"--------------------------------------------------------------------\n";
cout<<current->school<<"\t"<<current->major<<"\t"<<current->class1<<"\t"<<current->number<<"\t";
cout<<current->name<<"\t"<<current->sex<<"\t"<<current->birth<<"\t"<<current->add<<"\t"<<current->phone<<endl;
b++;
}
current=current->next;
}while(current!=NULL);
if(b==0) cout<<"没找到!"<<endl;
else cout<<"\n共"<<b<<"条记录!\n";
}
void StuList::print() //输出链表
{
……
}
void StuList::chazhao()//查找函数
{
if(head->next==NULL)//链表为空
{
cout<<"链表为空!"<<endl;
return;
}
int k;
do
{
cout<<"\n\n\t\t-*-*-*-*-*-*查找功能子菜单-*-*-*-*-*-*\n";
cout<<"\t\t** **\n";
cout<<"\t\t** 1、按照姓名查找 **\n";
cout<<"\t\t** 2、按照学号查找 **\n";
cout<<"\t\t** 3、退出查找 **\n";
cout<<"\t\t** **\n";
cout<<"\t\t-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n\n";
cout<<"请选择:";
cin>>k;
char sear[16];
long no;
switch(k)
{
case 1:
cout<<"姓名:"; cin>>sear;
StuList::searchStu1(sear);//调用按姓名查找函数
break;
case 2:
cout<<"学号:"; cin>>no;
StuList::searchStu2(no); //调用按姓名查找函数
break;
case 3:
char t;
cout<<"退出查找?(y/n):"; cin>>t;
if(t!='y') k=4;
else k=0;
break;
}
}while(k!=0);
}
void StuList::save()//文件保存
{
Student* p;
p=head->next;
fstream out;
out.open("F:\\maqiong\\学籍管理系统.txt",ios::app);
out<<"********************************************************************\n";
out<<"学院\t专业\t班级\t学号\t姓名\t性别\t生日\t住址\t电话\n";
out<<"--------------------------------------------------------------------\n";
do
{ out<<p->school<<"\t"<<p->major<<"\t"<<p->class1<<"\t"<<p->number<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->birth<<"\t"<<p->add<<"\t"<<p->phone<<endl;
p=p->next;
}while(p!=NULL);
out.close();
}
void menu()//菜单函数
{
cout<<endl<<"\t"<<"*-*-*-*-*-*-*-*-*-*-菜单*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
cout<<"\t"<<"** **"<<endl;
cout<<"\t"<<"** 1.加入学生资料 2.插入一个学生 **"<<endl;
cout<<"\t"<<"** 3.移除一个学生 4.显示该表 **"<<endl;
cout<<"\t"<<"** 5.查找学生资料 6.清空该表 **"<<endl;
cout<<"\t"<<"** 7.显示菜单 0.退出程序 **"<<endl;
cout<<"\t"<<"** **"<<endl;
cout<<"\t"<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl<<endl;
}
void main()
{
char cmd;
StuList* list=NULL;
list=new StuList;
menu();
do
{
cout<<endl<<"请选择要进行的操作序号(7-显示菜单):";//输入命令
cin>>cmd;
if(list==NULL) //检查输入的命令是否合适
while(cmd!='1'&&cmd!='8'&&cmd!='0')
{cout<<"还没有建立链表,请先建立链表:";cin>>cmd;}
switch(cmd) //匹配命令
{
case('1'): //加入学生信息到链表后
char insschool2[12],insclass12[12],insmajor2[12],insname2[12],inssex2[7],insbirth2[12],insadd2[12];
int insnumber2,insphone2;
cout<<"请输入学生信息"<<'\n';
cout<<"学院:"; cin>>insschool2;
……
……
list->add(insschool2,insmajor2,insclass12,insnumber2,insname2,inssex2,insbirth2,insadd2,insphone2);
list->save();
break;
case('2'): //按学号插入一个学生
char insschool3[12],insmajor3[12],insclass13[12],insname3[12],inssex3[7],insbirth3[12],insadd3[12];
int insnumber3,insphone3;
cout<<"学院:"; cin>>insschool3;
……
……
list->insert(insschool3,insmajor3,insclass13,insnumber3,insname3,inssex3,insbirth3,insadd3,insphone3);
list->save();
break;
case('3'): //删除一个学生信息
char tem;
cout<<"删除一个学生?(y/n)"; cin>>tem;
if(tem=='y')
{
int rem; char insname4[12];
cout<<"学号:"; cin>>rem;
cout<<"姓名:"; cin>>insname4;
list->delet(rem,insname4);
list->print();
list->save();
break;
}else break;
case('4'): //显示所有学生
list->print(); break;
case('5'): //查找学生信息
list->chazhao();break;
case('6'): //清空链表
char tin;
cout<<"删除链表退出?(y/n):"; cin>>tin;
if(tin=='y')
{
list->makeEmpty();
cout<<"链表为空"<<endl;
break;
}
else break;
case('7'): //显示菜单
menu();
break;
case('0'): //退出
if(list==NULL) break;
char temp;
cout<<"删除链表并退出?(y/n):"; cin>>temp;
if(temp=='y'){list->~StuList();list=NULL;}
else cmd=10; break;
default:
cout<<"请输入菜单中的命令!"<<endl;
}
}while(cmd!='0');
}
温馨提示:答案为网友推荐,仅供参考
相似回答