学生学籍管理系统c++课程设计报告书Word文档格式.docx

上传人:b****5 文档编号:16956553 上传时间:2022-11-27 格式:DOCX 页数:22 大小:46.58KB
下载 相关 举报
学生学籍管理系统c++课程设计报告书Word文档格式.docx_第1页
第1页 / 共22页
学生学籍管理系统c++课程设计报告书Word文档格式.docx_第2页
第2页 / 共22页
学生学籍管理系统c++课程设计报告书Word文档格式.docx_第3页
第3页 / 共22页
学生学籍管理系统c++课程设计报告书Word文档格式.docx_第4页
第4页 / 共22页
学生学籍管理系统c++课程设计报告书Word文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

学生学籍管理系统c++课程设计报告书Word文档格式.docx

《学生学籍管理系统c++课程设计报告书Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统c++课程设计报告书Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

学生学籍管理系统c++课程设计报告书Word文档格式.docx

当在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、遇到问题及解决方案

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1