学生学籍管理系统c++课程设计报告书Word文档格式.docx
- 文档编号:16956553
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:22
- 大小:46.58KB
学生学籍管理系统c++课程设计报告书Word文档格式.docx
《学生学籍管理系统c++课程设计报告书Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统c++课程设计报告书Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
c)排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
(2)源程序说明:
源程序清单及注释如下:
#include<
iostream>
fstream>
iomanip>
usingnamespacestd;
classBasic
{
public:
virtualintinput(ifstream&
its)=0;
virtualvoidinput()=0;
virtualvoiddisplay(ofstream&
virtualvoiddisplay()=0;
virtualvoiddisplay_1(){}
friendclassCollege;
protected:
//把这些数放在这,方便调用
Basic*next;
//指针
intnumber;
//学号
charname[40];
//
intdom_number;
//宿舍号
doublemark;
//综合成绩
intcredit;
//实得学分
};
classStudent:
virtualpublicBasic
intinput(ifstream&
its)//输入流
{
its>
>
number;
if(number==-1)
return0;
else
{
its>
name>
sex>
dom_number>
phone_number;
return1;
}
}
voidinput()//输入
cout<
<
"
学号:
;
cin>
:
name;
性别:
sex;
宿舍:
dom_number;
:
voiddisplay(ofstream&
its)//输出流
its<
number<
"
name<
sex<
dom_number<
phone_number<
endl;
voiddisplay()//输出
setw(10)<
setw(6)<
setw(13)<
private:
charsex[5];
//性别
charphone_number[20];
classCourse:
its)//输入流函数
chass_number>
chass_name>
chass_mark>
peacetime_mark>
experiment_mark>
txt_mark;
account();
voidinput()//输入函数
学号="
课程编号="
chass_number;
课程名称="
chass_name;
学分="
chass_mark;
平时成绩="
peacetime_mark;
实验成绩="
experiment_mark;
卷面成绩="
account();
voidaccount()//计算综合成绩和实得学分
inti;
if(experiment_mark==-1)
mark=peacetime_mark*0.15+experiment_mark*0.15+txt_mark*0.7;
elsemark=peacetime_mark=peacetime_mark*0.3+txt_mark*0.7;
i=mark/10;
switch(i)
case10:
credit=chass_mark;
break;
case9:
case8:
credit=chass_mark*0.8;
case7:
credit=chass_mark*0.7;
case6:
credit=chass_mark*0.6;
default:
credit=0;
its)//输出流函数
its<
chass_number<
chass_name<
chass_mark<
peacetime_mark<
experiment_mark<
txt_mark<
voiddisplay()//输出函数
setw(11)<
setw(5)<
setw(7)<
mark<
credit<
voiddisplay_1()
cout<
课程名称:
chass_name
<
综合成绩:
实得学分:
charchass_number[30];
//课程编号
charchass_name[30];
//课程名称
intchass_mark;
//学分
intpeacetime_mark;
//平时成绩
intexperiment_mark;
//实验成绩
inttxt_mark;
//卷面成绩
classCollege//链表类
College(inti)//构造函数建立初链,i=0建立Student链表,i=1建立Course链表
ji=0;
Basic*p;
intt;
PL=i;
if(PL==0)//根据PL,打开相应的文件
f.open("
A.txt"
ios:
in);
head=newStudent;
p=newStudent;
else
B.txt"
head=newCourse;
p=newCourse;
if(!
f)//判断f是否打开文件
cout<
错误"
abort();
t=head->
input(f);
head->
next=p;
p->
next=NULL;
for(;
)//读入文件数据,并将数据插入链表中
if(i==0)
p=newStudent;
elsep=newCourse;
t=p->
if(t==0)
break;
head=Build(p);
f.close();
//关闭文件
~College()
save();
Basic*Build(Basic*p)//插入函数,将p有序的插入链表中
Basic*p1=head,*p2=head;
for(i=0;
p1->
next!
=NULL;
i++)
if(i==0&
&
p->
number)//处理头链
{
p->
next=p1;
head=p;
ji++;
}
elseif(p->
number)//处理中间
p2->
elseif(i==ji)//处理尾
p2=p1;
p1=p1->
next;
p2=p1;
p1=p1->
returnhead;
voiddisplay()//输出链表信息
Basic*a=head;
a->
a=a->
next)
a->
display();
voidfind_number()//查找学号(student)
Basic*h=head;
请输入你想找的学号:
i;
h->
h=h->
if(h->
number==i)
h->
voidfind_name()//查找(student)
chari[40];
请输入你想找的:
if(strcmp(h->
name,i)==0)
voidfind_dom_number()//查找宿舍(student)
请输入你想找的宿舍:
dom_number==i)
Basic*get_head()
voidfind(Basic*a)//输入一个学号时,查询出此生的所有课程情况(Course)
请输入你想查的学号:
if(a->
cout<
i<
display_1();
voidDelete(intj)//删除,j表示学号
Basic*p1=head,*p2=head;
inti=0;
for(;
)
number==j)//处理头
head=p1->
i=-1;
//保证下次还可以删除头链
elseif(p1->
number==j)//处理尾
next=p1->
i++;
voiddelete_student(College&
b)//当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息(student)
请输入你想删除的学生的学号:
Delete(i);
b.Delete(i);
voidtaxis_mark()//综合成绩排序(Course)
Basic*m[90],*t;
inti,j,k,b;
升序-1降序-2"
b;
if(b==1)//升序
for(i=0;
m[i]=a;
a=a->
for(j=0;
j<
j++)
for(k=j;
k<
k++)
{
if(m[j]->
mark>
m[k]->
mark)
{
t=m[j];
m[j]=m[k];
m[k]=t;
}
}
按综合成绩升序排序为"
for(j=0;
m[j]->
elseif(b==2)//降序
按综合成绩降序排序为"
voidtaxis_credit()//学分排序(Course)
credit>
credit)
按学分升序排序为"
按学分降序排序为"
voidsave()//保存函数
inti=-1;
if(PL==0)
s.open("
out);
elseif(PL==1)
s.open("
h->
display(s);
s<
s.close();
ifstreamf;
ofstreams;
Basic*head;
//链表的头指针
intji;
//计算插入的数
intPL;
//判断建立怎样的链表
intmain()
inti,k[10];
Course*c;
Collegea(0),b
(1);
*************************欢迎进入!
**********************"
*************************学籍管理系统**********************"
****************"
to:
cout<
********<
1>
录入<
2>
查询<
3>
删除********"
4>
排序<
5>
全部输出<
其他>
结束********"
****************"
***********************************************************"
cin>
if(i==1)
c=newCourse;
c->
input();
b.Build(c);
gototo;
elseif(i==2)
1-学生基本情况查询2-成绩查询"
k[0];
if(k[0]==1)
1-学号查询2-查询3-宿舍查询"
cin>
k[1];
if(k[1]==1)
a.find_number();
elseif(k[1]==2)
a.find_name();
elseif(k[1]==3)
a.find_dom_number();
gototo;
elseif(k[0]==2)
b.find(a.get_head());
gototo;
elseif(i==3)
a.delete_student(b);
elseif(i==4)
1-综合成绩排序2-实得学分排序"
k[2];
if(k[2]==2)
b.taxis_credit();
elseif(k[2]==1)
b.taxis_mark();
elseif(i==5)
学号性别宿舍"
a.display();
学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分"
b.display();
return0;
}
4、遇到问题及解决方案
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 学籍 管理 系统 c+ 课程设计 报告书