学籍管理系统课程设计报告.docx
《学籍管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《学籍管理系统课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
学籍管理系统课程设计报告
成绩
课程设计报告
题目学籍管理系统
课程名称面向对象程序设计课程设计
院部名称信息技术学院
专业计算机科学与技术(本)
班级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