招生系统C++课程设计.docx

上传人:b****8 文档编号:10534922 上传时间:2023-02-21 格式:DOCX 页数:51 大小:526.08KB
下载 相关 举报
招生系统C++课程设计.docx_第1页
第1页 / 共51页
招生系统C++课程设计.docx_第2页
第2页 / 共51页
招生系统C++课程设计.docx_第3页
第3页 / 共51页
招生系统C++课程设计.docx_第4页
第4页 / 共51页
招生系统C++课程设计.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

招生系统C++课程设计.docx

《招生系统C++课程设计.docx》由会员分享,可在线阅读,更多相关《招生系统C++课程设计.docx(51页珍藏版)》请在冰豆网上搜索。

招生系统C++课程设计.docx

招生系统C++课程设计

计算机学院计算机科学与技术专业

《程序设计综合课程设计》报告

(20010/2011学年第一学期)

 

学生姓名:

学生班级:

学生学号:

指导教师:

 

2011年 1月 9日

 

 

 

第一章课程设计目的和要求

1.1课程设计目的

C++课程设计的主要目的是培养学生综合运用C++所学知识解决实际问题,提高学生运用知识的能力,真正做到学以致用

通过课程设计,提高学生的编程能力,使学生加深对所学知识的掌握及运用,对所学的基本知识能够做到熟练运用,从而为日后的学习和技术的培养、提高打下坚实的基础。

通过课程设计,拓展学生的知识面和思维面,丰富学生的函数库知识和加深学生对函数库的认识,使学生的思维更加灵活、全面,在编程时做到严谨、认真。

通过课程设计,使学生对学习有新的认识,改变以往学习为了考试,作业为了应付的学习态度,运用知识解决实际问题,从而让学生获得学习的乐趣,增进学生学习的动力。

在课程设计中,培养学生思考问题、解决问题的能力,并让学生做到学习联系实际,具备运用知识的现实性思维,从而让学到的知识更加灵活、更具实际可操作性。

1.2课程设计要求

1)用C语言实现系统;

2)函数功能要划分好(结构化程序设计);

3)界面友好(良好的人机交互),加必要的注释;

4)提供程序测试方案。

 

第二章课程设计任务内容

(1)确定每一批次的录取分数线,并将批次、分数线、实际录取人数输出到文本文件soutput.txt中,每一批次录取信息占一行,格式自定。

确定分数线时,如果在分数线处有多名考生,则将这些考生全部录取,即每一批次的实际录取人数可能会超过预定人数。

(2)如果考生成绩行的格式不对,则丢弃该考生的成绩,不作为确定分数线的依据,但要求将该考生姓名输出到文本文件serror.txt中,格式自定。

 

(3)将总分为650分的考生姓名输出到文本文件soutput.txt中,格式自定。

 

(4)将第三批次录取的所有考生的平均成绩(4舍5入)输出到文本文件soutput.txt中,格式自定。

 

(5)要求将下面两个时间值(单位为秒)输出到文件soutput.txt的最后:

从打开scores.txt文件到读完所有考生成绩的时间;从打开scores.txt文件到程序结束的时间。

 

第三章详细设计说明

3.1系统功能结构图

3.2模块分析

自定义结构体:

structinfor

{

charidentify[20];****身份证

charname[20];*********姓名

charsex[2];***********性别

intage;***************年龄

floatgrade;***********成绩

infor*l;};************下一个地址

主函数

intmain():

函数接口:

功能:

程序的入口,负责程序的运行与退出、操作以及调用其它函数。

特别函数

infor*oldrank():

注释设计:

保留原有数据*********************

在主函数中申明从而节省空间****所得结果供(2,4)共用

若“2,4”调用此函数将会产生两条链条**浪费内存空间

函数接口:

功能:

保留文件中的原有数据

功能模块函数

0->voidmake()

注释设计:

输入批数和预定录取人数****操作“0”函数块

函数接口:

功能:

输入批数和预定录取人数****操作“0”函数块

1->voidoutput()

注释:

输出处理信息*******操作“1”函数块

函数接口:

功能:

输出处理信息*******操作“1”函数块

2->infor*addrecord(infor*head)

注释:

在原有基础上继续输入信息并处理****操作“2”函数块

函数接口:

功能:

在原有基础上继续输入信息并处理****操作“2”函数块

3->voidnewrecord()

注释:

重新录入学生信息并处理****操作“3”函数块

函数接口:

功能:

重新录入学生信息并处理****操作“3”函数块

4->voiddisplayandcorrect(infor*head)

注释:

核对和改正错误信息并随之修改处理结果****操作“4”函数块

函数接口:

功能:

核对和改正错误信息并随之修改处理结果****操作“4”函数块

被调用模块函数

voidsameuse()

注释:

处理信息程序********************

************************共用体函数块***(0,2,3,4)共用

函数接口:

功能:

处理信息程序

被调用单个函数

1)infor*rank()

注释:

排列顺序

功能原理流程:

 

工作原理:

功能:

排列顺序

2)voidselection(infor*head)

注释:

确定各批次分数线

功能原理流程:

工作原理:

 

功能:

确定各批次分数线

3)voidinclude(infor*head)

注释:

筛出650分的学生

功能原理流程:

工作原理:

 

功能:

筛出650分的学生

4)voidrecord()

注释:

重新录入学生信息

功能原理流程:

工作原理:

 

功能:

重新录入学生信息

5)infor*insert(infor*head)

注释:

在原有信息上继续录入学生信息

功能原理流程:

工作原理:

 

 

功能:

在原有信息上继续录入学生信息

6)voiddisplay(infor*head)

注释:

显示要核对的信息并人工核对且记录错误信息

功能原理流程:

工作原理:

 

功能:

显示要核对的信息并人工核对且记录错误信息

7)voidcorrect(infor*head)

注释:

改正错误信息

功能原理流程:

工作原理:

 

功能:

改正错误信息

8)voidinput(infor*head)

注释:

向文件中输入所有数据

************************共用体函数块***(2,4)共用

功能原理流程:

工作原理:

获取动态链表数据链

将信息数据输入到信息文件中

功能:

向文件中输入所有数据

9)voiddell(infor*head)

注释:

删除相同的信息

功能原理流程:

功能:

删除相同的信息

3.3程序测试

)操作页面

图3.3

1)设置处理要求、查看处理信息联合测试

1******设置处理要求

图3.3-1-1.1

*****查看处理信息

图3.3-1-1.2

******设置成功

2******设置处理要求

图3.3-1-2.1

*****查看处理信息

图3.3-1-2.2

*****设置成功

2)在原有基础上继续录入信息、查看和核对录入信息联合测试

1********在原有基础上继续录入信息

图3.3-2-1.1

********查看和核对录入信息

图3.3-2-1.2

2********在原有基础上继续录入信息

图3.3-2-2.1

********查看和核对录入信息

图3.3-2-2.2

*****继续录入成功

3)重新录入信息、查看和核对录入信息、查看处理信息联合测试

1***********重新录入信息

图3.3-3-1.1

*****查看处理信息

图3.3-3-1.2

********查看和核对录入信息

图3.3-3-1.3

2********重新录入信息

图3.3-3-2.1

*****查看处理信息

图3.3-3-2.2

********查看和核对录入信息

图3.3-3-2.3

******重新录入成功

4)查看和核对录入信息单独测试

1*******查看和核对录入信息

图3.3-4-1.1

2*******查看和核对录入信息

图3.3-4-2.1

******信息修改成功

5)操作结束

图3.3-5

 

第四章软件使用说明

4.1操作页面

图4.1

4.2各功能操作解析

0设置批数和每批的预订人数:

首先:

0、enter

其次根据提示录入整形数据直到此功能操作结束

再次根据提示进行你想要的下一个功能操作

1查看信息处理结果:

首先:

1、enter

再次根据提示进行你想要的下一个功能操作

2在原有数据基础上录入信息:

首先:

2、enter

其次根据提示录入信息直到此功能操作结束

再次根据提示进行你想要的下一个功能操作

3重新输入信息:

首先:

3、enter

其次根据提示录入信息直到此功能操作结束

再次根据提示进行你想要的下一个功能操作

4查看和核对录入信息:

首先:

4、enter

其次根据提示进行操作直到此功能操作结束

再次根据提示进行你想要的下一个功能操作

5退出程序操作:

首先:

5、enter

程序运行结束,退出程序。

 

第五章课程设计心得与体会

做事不能急于求成,想尽快了事,要认真思考,对问题做到充分的了解和思考后进行处理。

思考问题时,不能只局限与纸上描述的问题本身,要善于将问题现实化,在实际中思考此类问题,从而建立实际可操作性思维,让编写的程序更具普遍适用性,更符合实际性。

死板的根据纸上要求编写程序,以实现功能为目的,不联系实际,所编写的程序是为实现目的而做,而不是用于解决实际问题。

学习知识,要认真对待,不能有模糊性思维,遇到不懂将就着过,对于基础知识更是必须做到认真,要做到彻底的明白,为日后更深的学习打下坚实的基础。

学习不能只局限于课本,要学会多练习,多阅读,多积累,做到对所学知识的拓展与丰富,从而让我们的思维更加丰富、灵活和简洁。

 

附录1:

参考文献

附录1.1参考书

《C++课程设计》

附录1.2参考函数块

#include\\头文件

usingmanespacestd;\\如果是TC30编译器就可以不要

voidmain()

{clock_tstart,finish;\\声明开始结束变量

start=clock();\\开始计算时间

\\你要运行的程序

finish=clock();\\结束计算时间

cout<

"<<(double)(finish-start)/CLK_TCK<

}

 

附录2:

程序清单

#include

#include

#include

#include

#include

usingnamespacestd;

structinfor

{charidentify[20];

charname[20];

charsex[2];

intage;

floatgrade;

infor*l;};

intmain()

{

voidmake();

voidoutput();

infor*oldrank();

voidnewrecord();

infor*addrecord(infor*head);

voiddisplayandcorrect(infor*head);

intn;

infor*head=NULL;

for(;;)

{cout<<"**********************************招生系统************************************"<

cout<<"设置处理要求(批数和每批预定录取人数)请按0:

"<

cout<<"查看处理信息请按1:

"<

cout<<"在原有数据上继续录入请按2:

"<

cout<<"重新录入信息请按3:

"<

cout<<"查看和核对录入信息请按4:

"<

cout<<"操作结束请按5:

"<

cout<<"请输入按钮:

";

cin>>n;

if(n==2||n==3)

{cout<<"是否删除原有信息,是:

3,不是:

2,拒绝:

6:

";

cin>>n;}

if(n==5)

{cout<<"确定要结束吗?

是:

5,不是:

6:

";

cin>>n;}

if(n==2&&head==NULL||n==4&&head==NULL)//如果程序未运行“2”则须此操作

head=oldrank();

switch(n)

{case0:

cout<

case1:

cout<

case2:

cout<

case3:

cout<

case4:

cout<

}

if(n==5)break;}

return0;

}

infor*oldrank()//保留原有数据*********************

{voiddell(infor*head);//在主函数中申明从而节省空间****所得结果供(2,4)共用

infor*head,*m;//若“2,4”调用此函数将会产生两条链条**浪费内存空间

charidentify[20],name[20],sex[2];

intage;

floatgrade;

charc='0';

ofstreamf1("score.txt",ios:

:

app);

if(!

f1)

{cerr<<"“infor*oldrank()中ofstreamf1(score.txt,ios:

:

app)”文件打开失败"<

exit

(1);}

f1<

f1.close();

ifstreamf("score.txt",ios:

:

in);

if(!

f)

{cerr<<"“infor*oldrank()中ifstreamf(score.txt,ios:

:

in)”文件打开失败"<

exit

(1);}

head=newinfor;

m=head;

for(;;)

{f>>identify>>name>>sex>>age>>grade;

strcpy(m->identify,identify);

strcpy(m->name,name);

strcpy(m->sex,sex);

m->age=age;

m->grade=grade;

if(strcmp(identify,"0")==0&&strcmp(name,"0")==0&&strcmp(sex,"0")==0&&age==0&&grade==0)

{m->l=NULL;

break;}

elsem->l=newinfor;

m=m->l;

}

f.close();

dell(head);

returnhead;

}

voidoutput()//输出处理信息*******操作“1”函数块

{stringa,b;

inti,j=0;

cout<<"操作结果概况:

"<

ifstreamf("soutput.txt",ios:

:

in);

if(!

f)

{cerr<<"“voidoutput()中ifstreamf(soutput.txt,ios:

:

in)”文件打开失败"<

exit

(1);}

for(;;)

{f>>a;

if(a=="结束")break;

cout<

f.close();

ifstreamf1("基础数据.txt",ios:

:

in);

if(!

f1)

{cerr<<"“voidoutput()中ifstreamf1(基础数据.txt,ios:

:

in)”文件打开失败"<

exit

(1);}

f1>>i;

f1.close();

cout<<"录取名单概况:

"<

ifstreamf2("备用字符串.txt",ios:

:

in);

if(!

f2)

{cerr<<"“voidoutput()中ifstreamf2(备用字符串.txt,ios:

:

in)”文件打开失败"<

exit

(1);}

f2>>a;

ifstreamf3("录取名单.txt",ios:

:

in);

if(!

f3)

{cerr<<"“voidoutput()中ifstreamf3(录取名单.txt,ios:

:

in)”文件打开失败"<

exit

(1);}

f3>>b;

cout<

for(intn=1;n<=i;n++)

{f2>>a;

for(;;)

{f3>>b;

j=0;

if(b=="结束")

{cout<

break;}

if(a==b)

{cout<

break;}

cout<

j++;

if(j==5)

{cout<<'\t';

j=0;}}

if(b=="结束")break;}

f2.close();

f3.close();

}

voidsameuse()//处理信息程序*********************

{voiddell(infor*head);//************************共用体函数块***(0,2,3,4)共用

infor*rank();

voidselection(infor*head);

voidinclude(infor*head);

cout<

infor*head;

intn=1;

clock_tstart,fous,edd;

start=clock();

head=rank();

dell(head);

if(strcmp(head->identify,"0")==0&&strcmp(head->name,"0")==0&&strcmp(head->sex,"0")==0&&head->age==0&&head->grade==0)

n=0;

if(n==1)

{fous=clock();

selection(head);

include(head);

edd=clock();

ofstreamf("soutput.txt",ios:

:

app);

if(!

f)

{cerr<<"“voidsameuse()中ofstreamf(soutput.txt,ios:

:

app)”文件打开失败"<

exit

(1);}

f<<"从score.txt中读取信息所需时间为:

"<<(double)(fous-start)/CLK_TCK<<',';

f<<"从score.txt中读取信息到处理完信息所需时间为:

"<<(double)(edd-start)/CLK_TCK<<"。

"<

f<<"结束"<

f.close();}

elseif(n==0)

{ofstreamf3("soutput.txt");

if(!

f3)

{cerr<<"“voidsameuse()中ofstreamf3(soutput.txt)”文件打开失败"<

exit

(1);}

ofstreamf2("录取名单.txt");

if(!

f2)

{cerr<<"“voidsameuse()中ofstreamf2(录取名单.txt)”文件打开失败"<

exit

(1);}

ofstreamf4("备用字符串.txt");

if(!

f4)

{cerr<<"“voidsameuse()中ofstreamf4(备用字符串.txt)”文件打开失败"<

exit

(1);}

f3<<"没有录入有效数据"<

f3<<"结束"<

f2<<"没有录入有效数据"<

f2<<"结束"<

f4<<"没有录入有效数据"<

f3.close();

f2.close();

f4.close();}

}

infor*rank()//排列顺序

{infor*head,*x,*m,*y;

charidentify[20],name[20],sex[2];

intage;

floatgrade;

head=newinfor;

strcpy(head->identify,"0");

strcpy(head->name,"0");

strcpy(head->sex,"0");

head->age=0;

head->grade=0;

head->l=NULL;

ifstreamf("score.txt",ios:

:

in);

if(!

f)

{cerr<<"“infor*rank()”中文件打开失败"<

exit

(1);}

for(;;)

{x=head;

f>>identify>>name>>sex>>age>>grade;

if(strcmp(identify,"0")==0&&strcmp(name,"0")==0&&strcmp(sex,"0")==0&&age==0&&grade==0)break;

for(;;)

{if(grade>head->grade)

{m=head;

head=newinfor;

strcpy(head->identify,identify);

strcpy(head->name,name);

strcpy(head->sex,sex);

head->age=age;

head->grade=grade;

head->l=m;

break;}

elseif(grade>x->grade)

{m->l=newinfor;

y=m->l;

strcpy(y->identify,identify);

strcpy(y->name,name);

strcpy(y->sex,sex);

y->age=age;

y->grade=grade;

y->l=x;

break;}

m=x;

x=x->l;

if(x==NULL)break;}

}

f.close();

returnhead;

}

voidselection(infor*head)//确定各批次分数线

{infor*x,*y,*p;

floata;

into,m

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

当前位置:首页 > PPT模板 > 艺术创意

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

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