高校学籍管理系统C++程序设计Word格式.docx
- 文档编号:7670481
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:34
- 大小:20.90KB
高校学籍管理系统C++程序设计Word格式.docx
《高校学籍管理系统C++程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《高校学籍管理系统C++程序设计Word格式.docx(34页珍藏版)》请在冰点文库上搜索。
string.h>
ctype.h>
classCOURSE
//课程类
{
private:
staticintcoursenum;
//课程数量
staticchar(*coursename)[20];
//课程名称
public:
staticvoidLoadCourse()
//从文件COURSE.DAT装入课程信息
ifstreamf("
course.dat"
);
f>
>
coursenum;
coursename=newchar[coursenum][20];
for(inti=0;
i<
i++)
f>
coursename;
f.close();
}
friendclassSTUDENT;
friendclassCOLLEGE;
};
intCOURSE:
:
coursenum=0;
char(*COURSE:
coursename)[20]=0;
classSTUDENT//学生类
charnum[20];
//学号
charname[20];
//姓名
charsex;
//性别
charcname[20];
//班级
float*grade;
//成绩(动态数组)
floatsum;
//各科总分
STUDENT*next;
STUDENT()
grade=newfloat[COURSE:
coursenum];
next=0;
~STUDENT()
delete[]grade;
voidInput()
sum=0;
cout<
<
"
学号:
;
cin>
num;
//输入学生一般信息
姓名:
name;
性别:
sex;
sex=toupper(sex);
班级:
cname;
COURSE:
i++)
//输入学生各科成绩
{
cout<
coursename<
成绩:
grade;
sum+=grade;
//计算总分
}
voidInput(ifstream&
f)
//输出学生各科成绩,总分
sum;
staticvoidOutputT()
setw(10)<
学号"
setw(20)<
姓名"
setw(5)<
性别"
班级"
setw(7)<
总分"
endl;
voidOutput()
//输出学生一般信息
sum<
voidOutput(ofstream&
f<
f<
classCOLLEGE
//学校类
STUDENT*SL;
//学生链表
voidClear();
intFind(char*ID,STUDENT**p1,STUDENT**p2);
voidCOLLEGE:
ValueS2ToS1(STUDENT&
s1,STUDENT&
s2);
COLLEGE()
COURSEadCourse();
//装入课程信息
SL=newSTUDENT();
//创建学生链表表头结点
~COLLEGE()
STUDENT*p=SL;
//删除学生链表各个结点
while(p)
SL=p->
next;
deletep;
p=SL;
voidSet();
//课程设置(增,删,改,存)
voidAdd();
//增加学生
voidDelete();
//删除学生
voidModify();
//修改学生
voidQuery();
//查询学生信息(按姓名,学号)
voidPrint();
//输出所有学生信息
voidStat();
//统计课程平均成绩,课程合格率
voidSumSort();
//按总分排名(高->
低)
voidNumSort();
//按学号排序(低->
高)
voidSave();
//学生数据存盘
voidLoad();
//装入学生数据
Add()
\n**增加学生信息**\n"
STUDENT*p=newSTUDENT;
//创建1个新学生结点
STUDENT*p2=SL;
//查找学生链表表尾结点
while(p2->
next)p2=p2->
p2->
next=p;
//链接学生结点
p->
Input();
//输入学生信息
//查找学生结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针)
intCOLLEGE:
Find(char*ID,STUDENT**p1,STUDENT**p2)
*p1=SL->
*p2=SL;
while(*p1)
if(strcmp((*p1)->
num,ID)==0)
break;
//找到
else
*p2=*p1;
//继续查找
*p1=(*p1)->
return*p1?
1:
0;
elete()
\n**删除学生**\n"
charNo[20];
STUDENT*p1,*p2;
No;
if(!
Find(No,&
p1,&
p2))
指定的学生没有找到!
\n"
else
p2->
next=p1->
//连接
deletep1;
正确删除!
Modify()
\n**修改学生**\n"
p1->
Output();
//输出原来的学生信息(做提示)
//输入此学生信息(更新)
修改完成!
/*承上*/
//查询学生信息
//按学号或姓名查找,如果找到显示该学生,如果未找到,也给出相应提示.
uery()
\n**查询学生**\n"
STUDENT*p=SL->
charName[20];
charch;
do
按学号查1,按姓名查2:
ch;
}while(ch!
='
1'
&
ch!
2'
intflag=0;
//未找到0,找到1
if(ch=='
)
//按学号查
if(strcmp(p->
num,No)==0)
flag=1;
p=p->
else
//按姓名查
Name;
name,Name)==0)
if(flag==1)
//如果找到,显示此同学信息
p->
OutputT();
//否则给出未找到提出
//输出所有学生信息
rint()
\n**输出学生信息**\n"
STUDENT:
//输出标题
while(p)
//循环输出各位学生信息
p=p->
//学生数据存盘
Save()
ofstreamf("
student.dat"
//遍历学生链表
Output(f);
//写入文件
f.close();
\n**保存数据完成!
**\n"
Clear()
while(p)
SL->
next=p->
deletep;
p=SL->
//装入学生数据
voidCOLLEGEad()
Clear();
ifstreamf("
STUDENT*p=SL;
STUDENT*p2=newSTUDENT;
Input(f);
while(f)
next=p2;
p2=newSTUDENT;
deletep2;
//统计课程平均成绩,课程合格率
Stat()
float*sum=newfloat[COURSE:
//各科平均成绩
float*pass=newfloat[COURSE:
//各科合格人数,/n=>
合格率
intn=0;
//学生人数
for(inti=0;
STUDENT*p=SL->
n=0;
sum=pass=0;
while(p)
n++;
//人数
sum=sum+p->
//某科总分
if(p->
grade>
=60)pass++;
//某科合格人数
for(i=0;
setprecision(4)<
setiosflags(ios:
showpoint);
平均:
sum/n<
合格率:
pass/n*100.<
%"
delete[]sum;
delete[]pass;
s2)
strcpy(s1.num,s2.num);
strcpy(s1.name,s2.name);
s1.sex=s2.sex;
strcpy(ame,ame);
//班级
s1.grade=s2.grade;
//成绩指针(动态数组)
s1.sum=s2.sum;
//按总分排名(采用选择法排序),总分高->
低
SumSort()
p1=SL->
while(p1)
p2=p1->
while(p2)
if(p2->
sum>
p1->
sum)
STUDENTt;
ValueS2ToS1(t,*p1);
ValueS2ToS1(*p1,*p2);
ValueS2ToS1(*p2,t);
p2=p2->
p1=p1->
NumSort()
//按学号排序(低->
if(strcmp(p2->
num,p1->
num)<
0)
//只要修改这里,其余同SumSort
voidmain()
COLLEGEc;
//定义大学对象
cout.setf(ios:
left);
//显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数
\n☆☆高校学籍管理系统☆☆\n"
1-增加学生\n"
2-删除学生\n"
3-修改学生\n"
4-查询学生\n"
5-输出学生信息\n"
6-综合统计(课程平均成绩,课程合格率)\n"
7-总分排序\n"
8-学号排序\n"
S-数据存盘\n"
L-数据装入\n"
Q-退出\t请选择(1-8,SLQ):
cin>
ch=toupper(ch);
switch(ch)
case'
c.Add();
c.Delete();
3'
c.Modify();
4'
c.Query();
break;
5'
c.Print();
6'
c.Stat();
7'
c.SumSort();
8'
c.NumSort();
S'
c.Save();
L'
c.Load();
Q'
3、2数据文件
1、course.dat:
3
C++
英语
高数
2、student.dat:
86101
chenkaijun
M
M8601
77
59
96
232
86102
zhaowei
F
55
85
217
86103
wubin
M
87
92
264
86104
shijun
58
90
233
86105
wangzhuguo
66
70
86
222
3、3运行结果参考
☆☆高校学籍管理系统☆☆
1-增加学生
2-删除学生
3-修改学生
4-查询学生
5-输出学生信息
6-综合统计(课程平均成绩,课程合格率
7-总分排序
8-学号排序
S-数据存盘
L-数据装入
Q-退出请选择(1-8,SLQ)
6-综合统计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高校 学籍 管理 系统 C+ 程序设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)