学籍管理系统c++Word文件下载.docx
- 文档编号:21070291
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:12
- 大小:18.23KB
学籍管理系统c++Word文件下载.docx
《学籍管理系统c++Word文件下载.docx》由会员分享,可在线阅读,更多相关《学籍管理系统c++Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
classperson
{
public:
voidadd();
protected:
charname[10];
charsex[3];
};
这个类设计得很简单,因为它包含student类的基本信息,通过公有继承,直接应用person类的成员函数及其变量。
其中的数据成员含义如下:
用户姓名:
用name字符数组来表示,或者直接使用string类型的变量来存放
用户性别:
用sex字符数组来表示,或者直接使用string类型的变量来存放
为了对person类的信息进行必要的操作,最主要是添加函数:
voidadd();
//主要是输入姓名,性别的基本信息。
为了实现学生管理系统的基本功能,主要是通过建立一个student类的成员函数来实现它。
所以每个student类的成员函数都非常重要,它直接影响要功能的实现。
classstudent:
publicperson//继承person类
voidadd2();
voidaddban();
voiddel();
voidchange();
voidmenue();
voidreader();
voidsearchname();
voidsearchban();
voidsearchnumber();
voiddisp();
private:
intnumber;
charxibie[10];
intban;
//定义学号系别班级
其中数据成员的含义如下:
number:
用来存放一个学生的学号。
xibie:
用来存放一个学生的系别。
ban:
用来存放一个学生的班级。
其中的成员函数解释如下:
//写入函数
//增加班
//删除函数
//改变函数
//主菜单
//次菜单
//查询姓名
//查询班级
//查询学号
//显示
类体外定义了一个比较函数
boolcomp(chars1[],chars2[]);
//比较两个字符串相等
详细设计
Person类的实现
voidadd()//写入函数
{
cout<
<
"
请输入姓名:
endl;
cin>
>
name;
请输入性别:
sex;
}
Student类的实现
voidstudent:
:
disp()//显示
cout<
姓名:
name<
"
;
性别:
sex<
班级:
ban<
学号:
number<
系别:
xibie<
}
add()
请输入学生信息:
person:
add();
请输入学号:
cin>
number;
//输入学号
请输入系别:
xibie;
//输入系别
请输入班级"
ban;
//输入班级
add2()//写入函数
studenta;
a.add();
fstreamfile("
student.txt"
ios:
binary|ios:
out|ios:
app);
//二进制打开文件,指针指向文件尾
file.write((char*)&
a,sizeof(a));
//把类信息写入文件
file.close();
//关闭文件
searchname()//按姓名查询
请输入所要查询的学生姓名:
charname2[10];
cin>
name2;
in);
//二进制打开文件,指针在文件头
file.read((char*)&
//读取类信息
while(!
file.eof())//判断文件指针是否到文件尾
if(comp(a.name,name2))//判断输入的字符是否与文件重点一样
a.disp();
//如一样的话,显示信息
file.read((char*)&
//如果指针没到文件尾,继续读取
searchban()//按班级查询
请输入所要查询的学生班级:
intban2;
ban2;
//输入年龄
//第一个学生类的对象
//二进制打开文件。
指针在文件头
file.eof())//判断指针是否在文件尾
if(a.ban==ban2)//判断输入年龄是否与文件中的年龄一样
//如果一样的话,显示信息
//如果指针没到文件尾,继续读取
searchnumber()//按学号查询
请输入所要查询的学生编号:
intnumber2;
number2;
//输入学号
if(a.number==number2)//判断输入的学号是否与文件中的一样
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,"
student2.txt"
endl<
请输入你要删除第几位学生的信息:
n;
//输入第几个学生
file.seekp((n-1)*recsize,ios:
beg);
//指向功能
file.write(name,10);
//把空字符写入文件
file.write(sex,3);
file.write((char*)&
ban,sizeof(int));
number,sizeof(int));
file.write(xibie,10);
该学生删除成功"
//提示
change()//修改函数
staticintread_year;
intn;
fstreamfile("
in|ios:
out);
请输入你要修改第几位学生的信息:
//定位的位置
输入你要修改的信息:
studenta;
//定义学生对象
a.add();
//调用写入函数
file.write((char*)(&
a),sizeof(a));
//写入对象
file.close();
//关闭文件
该学生信息修改成功"
addban()
intc;
charb;
chary;
输入你要建立的班级"
c;
输入这个班的成员"
继续,输入y"
b;
while(b=='
y'
)
a.add2();
继续?
输入y"
menue()
1添加学生信息"
<
2修改学生信息"
3删除学生信息"
4查询学生信息"
5新建班级"
6退出系统"
reader()
1按姓名查询"
2班级查询"
3按学号查询"
4退出"
类外函数的实现
boolcomp(chars1[],chars2[])//比较文件中字符和输入的字符是否相同
inti=0;
while(s1[i]!
='
\0'
&
s2[i]!
s1[i]==s2[i])
i++;
if(s1[i]=='
&
s2[i]=='
return1;
else
return0;
程序测试
/******************************************
*
*测试主函数
*******************************************/
voidmain()
intx1,x2;
do
a.menue();
请输入操作号:
x1;
//输入选项
switch(x1)//主菜单选择
{
case1:
a.add2();
break;
case2:
a.change();
case3:
a.del();
case4:
do
{
a.reader();
cout<
请输入操作号:
cin>
x2;
switch(x2)
{
case1:
a.searchname();
break;
case2:
a.searchban();
case3:
a.searchnumber();
}
}while(x2!
=4);
break;
case5:
a.addban();
}
}while(x1!
=6);
个人体会
通过这次课程设计,我更加深刻的知道了我们学的c++和我们的生活密切相连,所以更应该注意平时上课各种小知识点的积累。
然后上机具体操作的情况又与笔试有很大的不同,因为通过键盘操作,更容易出错。
所以我们平时在学习的时候,就应该做到边学边编,如果很久没有接触到c++的编译环境,就会出现不知道从何如手。
另外,程序的变化太大拉,它需要我们拓展课外知识,所以仅靠在课堂上的时间学好它是不现实的。
有很多小的技巧,以及编程思想需要我们自己去领悟,这要求我们要有很好的自学能力。
比如说这次变成如果没有掌握好用2进制的方式输入文件的话,就很难编出能实现功能的程序
编程最重要的是思路清晰,条理清楚,只有思路比较清楚的条件下,进展才比较顺利。
并且,在编译过程中遇到的错误也要耐心去修改,并且记住这相应的错误代码,以便以后遇到相同的情况,知道怎么修正。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学籍 管理 系统 c+