学籍管理系统课程设计报告.docx

上传人:b****0 文档编号:12550199 上传时间:2023-04-20 格式:DOCX 页数:28 大小:149.05KB
下载 相关 举报
学籍管理系统课程设计报告.docx_第1页
第1页 / 共28页
学籍管理系统课程设计报告.docx_第2页
第2页 / 共28页
学籍管理系统课程设计报告.docx_第3页
第3页 / 共28页
学籍管理系统课程设计报告.docx_第4页
第4页 / 共28页
学籍管理系统课程设计报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

学籍管理系统课程设计报告.docx

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

学籍管理系统课程设计报告.docx

学籍管理系统课程设计报告

成绩

课程设计报告

 

题目学籍管理系统

课程名称面向对象程序设计课程设计

院部名称信息技术学院

专业计算机科学与技术(本)

班级09计算机科学与技术

(1)

学生姓名周浩

学号05

课程设计地点A203

课程设计学时20

指导教师李慧

金陵科技学院教务处制

【注:

根据课程设计大纲第四项具体要求撰写课程设计报告】

一需求分析

随着计算机的发展,越来越多的学校有自己的学籍管理系统。

这样更方便数据的长期保存,更适用于数据的集中处理。

通过这个简单的学籍管理系统,可以添加新成员的基本信息,通过其姓名,学号,班级等信息查询这个人的基本信息。

可以很方便的进行数据修改,以及数据删除。

本系统主要是通过二进制的文件读取,进行输入,输出,以及修改,删除等基本功能。

一共涉及到两个类,第一个类是person类,主要是成员数据,只有一个添加数据的公有接口。

主要是方便第2个类student对其的继承,继承它的所有成员函数及其成员数据。

Person类的数据成员

1.姓名

2.性别

系统功能包括:

1.添加函数

二概要设计

classperson

{

public:

voidadd();

protected:

charname[10];charsex[3];

};

这个类设计得很简单,因为它包含student类的基本信息,通过公有继承,直接应用person类的成员函数及其变量。

其中的数据成员含义如下:

用户姓名:

用name字符数组来表示,或者直接使用string类型的变量来存放

用户性别:

用sex字符数组来表示,或者直接使用string类型的变量来存放

为了对person类的信息进行必要的操作,最主要是添加函数:

voidadd();//主要是输入姓名,性别的基本信息。

为了实现学生管理系统的基本功能,主要是通过建立一个student类的成员函数来实现它。

所以每个student类的成员函数都非常重要,它直接影响要功能的实现。

classstudent:

publicperson//继承person类

{

public:

voidadd();

voidadd2();

voidaddban();

voiddel();

voidchange();

voidmenue();

voidreader();

voidsearchname();

voidsearchban();

voidsearchnumber();

voiddisp();

private:

intnumber;charxibie[10];intban;//定义学号系别班级

};

其中数据成员的含义如下:

number:

用来存放一个学生的学号。

xibie:

用来存放一个学生的系别。

ban:

用来存放一个学生的班级。

其中的成员函数解释如下:

voidadd();//写入函数

voidadd2();//写入函数

voidaddban();//增加班

voiddel();//删除函数

voidchange();//改变函数

voidmenue();//主菜单

voidreader();//次菜单

voidsearchname();//查询姓名

voidsearchban();//查询班级

voidsearchnumber();//查询学号

voiddisp();//显示

类体外定义了一个比较函数

boolcomp(chars1[],chars2[]);//比较两个字符串相等

三详细设计

Person类的实现

voidadd()//写入函数

{

cout<<"请输入姓名:

"<

cin>>name;

cout<<"请输入性别:

"<

cin>>sex;

}

Student类的实现

voidstudent:

:

disp()//显示

{

cout<<"姓名:

"<

cout<<"性别:

"<

cout<<"班级:

"<

cout<<"学号:

"<

cout<<"系别:

"<

}

voidstudent:

:

add()

{

cout<<"请输入学生信息:

"<

person:

:

add();//写入函数

cout<<"请输入学号:

"<

cin>>number;//输入学号

cout<<"请输入系别:

"<

cin>>xibie;//输入系别

cout<<"请输入班级"<

cin>>ban;//输入班级

}

voidstudent:

:

add2()//写入函数

{

studenta;

();

fstreamfile("",ios:

:

binary|ios:

:

out|ios:

:

app);//二进制打开文件,指针指向文件尾

((char*)&a,sizeof(a));//把类信息写入文件

();//关闭文件

}

voidstudent:

:

searchname()//按姓名查询

{

cout<<"请输入所要查询的学生姓名:

";

charname2[10];cin>>name2;

studenta;

fstreamfile("",ios:

:

binary|ios:

:

in);//二进制打开文件,指针在文件头

((char*)&a,sizeof(a));//读取类信息

while(!

())//判断文件指针是否到文件尾

{

if(comp,name2))//判断输入的字符是否与文件重点一样

();//如一样的话,显示信息

((char*)&a,sizeof(a));//如果指针没到文件尾,继续读取

}

();//关闭文件

}

voidstudent:

:

searchban()//按班级查询

{

cout<<"请输入所要查询的学生班级:

";

intban2;cin>>ban2;//输入年龄

studenta;//第一个学生类的对象

fstreamfile("",ios:

:

binary|ios:

:

in);//二进制打开文件。

指针在文件头

((char*)&a,sizeof(a));//读取类信息

while(!

())//判断指针是否在文件尾

{

if==ban2)//判断输入年龄是否与文件中的年龄一样

();//如果一样的话,显示信息

((char*)&a,sizeof(a));//如果指针没到文件尾,继续读取

}

();//关闭文件

}

voidstudent:

:

searchnumber()//按学号查询

{

cout<<"请输入所要查询的学生编号:

";

intnumber2;cin>>number2;//输入学号

studenta;//第一个学生类的对象

fstreamfile("",ios:

:

binary|ios:

:

in);//二进制打开文件。

指针在文件头

((char*)&a,sizeof(a));//读取类信息

while(!

())//判断指针是否在文件尾

{

if==number2)//判断输入的学号是否与文件中的一样

();//如一样的话,显示信息

((char*)&a,sizeof(a));//如果指针没到文件尾,继续读取

}

();//关闭文件

}

voidstudent:

:

del()//删除函数

{

staticcharread_name[10];//定义静态变量

staticcharread_sex[3];

staticintread_ban;

staticintread_number;

staticcharread_xibie[10];

intn;

intrecsize=sizeof(read_name)+sizeof(read_sex)+sizeof(int)+sizeof(int)+sizeof(read_xibie);//一个人的信息的长度

strcpy(name,"");//删除用空字符和0来代表的,

strcpy(sex,"");

ban=0;

number=0;

strcpy(xibie,"");

fstreamfile("",ios:

:

binary|ios:

:

in);//二进制打开文件。

指针在文件头

cout<

";

cin>>n;//输入第几个学生

((n-1)*recsize,ios:

:

beg);//指向功能

(name,10);//把空字符写入文件

(sex,3);

((char*)&ban,sizeof(int));

((char*)&number,sizeof(int));

(xibie,10);

();

cout<

cout<

}

voidstudent:

:

change()//修改函数

{

staticcharread_name[10];//定义静态变量

staticcharread_sex[3];

staticintread_year;

staticintread_number;

staticcharread_xibie[10];

intn;

intrecsize=sizeof(read_name)+sizeof(read_sex)+sizeof(int)+sizeof(int)+sizeof(read_xibie);//一个人的信息的长度

fstreamfile("",ios:

:

binary|ios:

:

in|ios:

:

out);//二进制打开文件。

指针在文件头

cout<

";//定位的位置

cin>>n;

cout<<"输入你要修改的信息:

"<

studenta;//定义学生对象

();//调用写入函数

((n-1)*recsize,ios:

:

beg);//指向功能

((char*)(&a),sizeof(a));//写入对象

();//关闭文件

cout<<"该学生信息修改成功"<

cout<

}

voidstudent:

:

addban()

{

intc;

studenta;

charb;

chary;

cout<<"输入你要建立的班级"<

cin>>c;

cout<<"输入这个班的成员"<

cout<<"继续,输入y"<

cin>>b;

while(b=='y')

{

();

cout<<"继续输入y"<

cin>>b;

}

}

 

voidstudent:

:

menue()

{

cout<<"1添加学生信息"<

cout<<"2修改学生信息"<

cout<<"3删除学生信息"<

cout<<"4查询学生信息"<

cout<<"5新建班级"<

cout<<"6退出系统"<

}

voidstudent:

:

reader()

{

cout<<"1按姓名查询"<

cout<<"2班级查询"<

cout<<"3按学号查询"<

cout<<"4退出"<

}

 

类外函数的实现

boolcomp(chars1[],chars2[])//比较文件中字符和输入的字符是否相同

{

inti=0;

while(s1[i]!

='\0'&&s2[i]!

='\0'&&s1[i]==s2[i])

i++;

if(s1[i]=='\0'&&s2[i]=='\0')

return1;

else

return0;

}

四程序测试

/******************************************

*

*测试主函数

*******************************************/

voidmain()

{

studenta;

intx1,x2;

do

{

();//主菜单

cout<<"请输入操作号:

";

cin>>x1;//输入选项

switch(x1)//主菜单选择

{

case1:

();

break;

case2:

();

break;

case3:

();

break;

case4:

do

{

();

cout<<"请输入操作号:

"<

cin>>x2;

switch(x2)

{

case1:

();

break;

case2:

();

break;

case3:

();

break;

}

}while(x2!

=4);break;

case5:

();

break;

}

}while(x1!

=6);

}

部分测试数据与运行结果:

 

五个人体会

通过这次课程设计,我更加深刻的知道了我们学的c++和我们的生活密切相连,所以更应该注意平时上课各种小知识点的积累。

然后上机具体操作的情况又与笔试有很大的不同,因为通过键盘操作,更容易出错。

所以我们平时在学习的时候,就应该做到边学边编,如果很久没有接触到c++的编译环境,就会出现不知道从何如手。

另外,程序的变化太大拉,它需要我们拓展课外知识,所以仅靠在课堂上的时间学好它是不现实的。

有很多小的技巧,以及编程思想需要我们自己去领悟,这要求我们要有很好的自学能力。

比如说这次变成如果没有掌握好用2进制的方式输入文件的话,就很难编出能实现功能的程序

编程最重要的是思路清晰,条理清楚,只有思路比较清楚的条件下,进展才比较顺利。

并且,在编译过程中遇到的错误也要耐心去修改,并且记住这相应的错误代码,以便以后遇到相同的情况,知道怎么修正。

六参考资料

《软件工程导论》第四版清华大学出版

《C#开发实战宝典》王小科编著清华大学出版社

《C#开发大全》刘丽霞编著清华大学出版

《数据库系统概论》王珊萨师煊编著浙江大学出版社

《C语言程序设计实例精粹》谭明金、俞海英编著电子工业出版社

七附件:

源程序清单

学生学籍管理系统源程序清单

voidadd()//写入函数

{

cout<<"请输入姓名:

"<

cin>>name;

cout<<"请输入性别:

"<

cin>>sex;

}

Student类的实现

voidstudent:

:

disp()//显示

{

cout<<"姓名:

"<

cout<<"性别:

"<

cout<<"班级:

"<

cout<<"学号:

"<

cout<<"系别:

"<

}

voidstudent:

:

add()

{

cout<<"请输入学生信息:

"<

person:

:

add();//写入函数

cout<<"请输入学号:

"<

cin>>number;//输入学号

cout<<"请输入系别:

"<

cin>>xibie;//输入系别

cout<<"请输入班级"<

cin>>ban;//输入班级

}

voidstudent:

:

add2()//写入函数

{

studenta;

();

fstreamfile("",ios:

:

binary|ios:

:

out|ios:

:

app);//二进制打开文件,指针指向文件尾

((char*)&a,sizeof(a));//把类信息写入文件

();//关闭文件

}

voidstudent:

:

searchname()//按姓名查询

{

cout<<"请输入所要查询的学生姓名:

";

charname2[10];cin>>name2;

studenta;

fstreamfile("",ios:

:

binary|ios:

:

in);//二进制打开文件,指针在文件头

((char*)&a,sizeof(a));//读取类信息

while(!

())//判断文件指针是否到文件尾

{

if(comp,name2))//判断输入的字符是否与文件重点一样

();//如一样的话,显示信息

((char*)&a,sizeof(a));//如果指针没到文件尾,继续读取

}

();//关闭文件

}

voidstudent:

:

searchban()//按班级查询

{

cout<<"请输入所要查询的学生班级:

";

intban2;cin>>ban2;//输入年龄

studenta;//第一个学生类的对象

fstreamfile("",ios:

:

binary|ios:

:

in);//二进制打开文件。

指针在文件头

((char*)&a,sizeof(a));//读取类信息

while(!

())//判断指针是否在文件尾

{

if==ban2)//判断输入年龄是否与文件中的年龄一样

();//如果一样的话,显示信息

((char*)&a,sizeof(a));//如果指针没到文件尾,继续读取

}

();//关闭文件

}

voidstudent:

:

searchnumber()//按学号查询

{

cout<<"请输入所要查询的学生编号:

";

intnumber2;cin>>number2;//输入学号

studenta;//第一个学生类的对象

fstreamfile("",ios:

:

binary|ios:

:

in);//二进制打开文件。

指针在文件头

((char*)&a,sizeof(a));//读取类信息

while(!

())//判断指针是否在文件尾

{

if==number2)//判断输入的学号是否与文件中的一样

();//如一样的话,显示信息

((char*)&a,sizeof(a));//如果指针没到文件尾,继续读取

}

();//关闭文件

}

voidstudent:

:

del()//删除函数

{

staticcharread_name[10];//定义静态变量

staticcharread_sex[3];

staticintread_ban;

staticintread_number;

staticcharread_xibie[10];

intn;

intrecsize=sizeof(read_name)+sizeof(read_sex)+sizeof(int)+sizeof(int)+sizeof(read_xibie);//一个人的信息的长度

strcpy(name,"");//删除用空字符和0来代表的,

strcpy(sex,"");

ban=0;

number=0;

strcpy(xibie,"");

fstreamfile("",ios:

:

binary|ios:

:

in);//二进制打开文件。

指针在文件头

cout<

";

cin>>n;//输入第几个学生

((n-1)*recsize,ios:

:

beg);//指向功能

(name,10);//把空字符写入文件

(sex,3);

((char*)&ban,sizeof(int));

((char*)&number,sizeof(int));

(xibie,10);

();

cout<

cout<

}

voidstudent:

:

change()//修改函数

{

staticcharread_name[10];//定义静态变量

staticcharread_sex[3];

staticintread_year;

staticintread_number;

staticcharread_xibie[10];

intn;

intrecsize=sizeof(read_name)+sizeof(read_sex)+sizeof(int)+sizeof(int)+sizeof(read_xibie);//一个人的信息的长度

fstreamfile("",ios:

:

binary|ios:

:

in|ios:

:

out);//二进制打开文件。

指针在文件头

cout<

";//定位的位置

cin>>n;

cout<<"输入你要修改的信息:

"<

studenta;//定义学生对象

();//调用写入函数

((n-1)*recsize,ios:

:

beg);//指向功能

((char*)(&a),sizeof(a));//写入对象

();//关闭文件

cout<<"该学生信息修改成功"<

cout<

}

voidstudent:

:

addban()

{

intc;

studenta;

charb;

chary;

cout<<"输入你要建立的班级"<

cin>>c;

cout<<"输入这个班的成员"<

cout<<"继续,输入y"<

cin>>b;

while(b=='y')

{

();

co

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

当前位置:首页 > 高等教育 > 其它

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

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