C 学生信息管理系统实验报告 示例Word文档格式.docx
《C 学生信息管理系统实验报告 示例Word文档格式.docx》由会员分享,可在线阅读,更多相关《C 学生信息管理系统实验报告 示例Word文档格式.docx(26页珍藏版)》请在冰点文库上搜索。
(2)定义类classstudent:
用于定义成员结构体数组。
(3)类中构造函数student():
对类中各项私有成员进行传值。
(4)类中输入运算符重载函数operator>
>
():
方便对类的对象输入。
(5)类中输出运算符重载函数operator<
<
方便对类的对象输出。
(6)获取函数getnum():
方便在类外对类中的私有成员num的数据进行调用。
(7)获取函数getname():
方便在类外对类中的私有成员name的数据进行调用。
(8)获取函数getban():
方便在类外对类中的私有成员ban的数据进行调用。
(9)录入函数enter():
从键盘输入学生个人信息,并保存到文件中。
(10)查找函数search_num():
按学号查找学生个人信息。
(11)查找函数search_name():
按姓名查找学生个人信息。
(12)查找函数search_ban():
按班级查找学生个人信息。
(13)修改函数changr():
按学号修改学生个人信息,保存的文件中。
(14)删除函数del():
按学号删除学生个人信息,保存到文件中。
(15)排序函数sort():
按学号对学生个人信息进行排序。
(16)统计函数count():
按班级对学生人数进行统计。
程序功能结构图如图1所示:
图1程序功能结构图如图
三、详细设计。
本系统有一个主函数,8个功能模块,每个功能模块函数都是由主函数调用,分别说明如下:
主函数流程图如图2所示:
图2主函数流程图
(2)键盘输入函数流程图:
流程图如图3所示:
图3键盘输入函数流程图
(3)排序函数流程图:
流程图如图4所示:
图4排序函数流程图
(4)信息修改函数流程图:
由用户输入需要修改的成员的学号,在现有的学生信息中查询是否有此学生信息的存在,查到输出该学生的全部信息,没查到则输出“学号为XX的学生不存在!
”信息。
流程图如图5所示:
图5信息修改函数流程图
(5)信息删除函数流程图:
由用户输入需要删除的成员的学号,在现有的学生信息中查询是否有此学生信息的存在,查到删除该学生的全部信息,没查到则输出“学号为XX的学生不存在!
流程图如图6所示:
图6信息删除函数流程图
(6)学号查询函数流程图:
由用户输入需要查询的成员的学号,在现有的学生信息中查询是否有此学生信息的存在,查到输出该学生的全部信息,没查到则输出“学号为XX的学生不存在!
流程图如图7所示:
图7学号查询函数流程图
(7)姓名查询函数流程图:
由用户输入需要查询的成员的姓名,在现有的学生信息中查询是否有此学生信息的存在,查到输出该学生的全部信息,没查到则输出“姓名为XX的学生不存在!
流程图如图8所示:
图8姓名查询函数流程图
(8)班级查询函数流程图:
由用户输入需要查询的成员的班级,在现有的学生信息中查询是否有此学生信息的存在,查到输出该学生的全部信息,没查到则输出“班级为XX的学生不存在!
流程图如图9所示:
图9班级查询函数流程图
(9)按班级统计函数流程图:
由用户输入需要查询的成员的班级,在现有的学生信息中查询是否有此学生信息的存在,查到即对该班级人数进行统计,没查到则输出“班级为XX的学生不存在!
流程图如图10所示:
图10按班级统计函数流程图
四、测试结果。
(1)程序运行主菜单如图11所示:
图11
(2)从键盘上输入学生人数和学生信息如图12所示:
图12
(3)按学号修改如图13所示:
图13
(4)按学号删除如图14:
图14
(5)按学号查找如图15:
图15
(6)按姓名查找如图16:
图16
(7)按班级查找如图17:
图17
(8)按班级统计人数如图18:
图18
(9)按学号进行排序如图19:
如图19
五、软件操作使用说明书。
本软件采用命令行对话方式进行操作,运行后出现主界面如上图所示,然后按菜单提示操作即可。
六、总结。
经过一个星期的不断上机实践练习,我对c++有了更进一步的认识和了解,学好它重在实践,要通过不断的上机操作不断的进行操作和试运行才能更好地掌握它,通过这次实践,我发现了自己的许多不足:
我对各种循环的理解深度还不够,对字符成员调用还不是很熟练,对指针的理解还是不透彻,以及对解决问题的想法不够全面。
这些不足,在这次实践中都有所提高,并且对这些不足我都会在后续的学习中努力补足。
七、代码:
#include<
iostream>
fstream>
cstring>
#defineM5000
usingnamespacestd;
classstudent
{
public:
student(){}
student(charna[10],charse[10],intn,intb,chart[12]):
num(n),ban(b)
{
strcpy(sex,se);
strcpy(name,na);
strcpy(tel,t);
}
friendistream&
operator>
(istream&
is,student&
s)
is>
;
returnis;
friendostream&
operator<
(ostream&
os,student&
os<
"
"
endl;
returnos;
intgetnum()
returnnum;
intgetban()
returnban;
char*getsex()
char*s=newchar[strlen(sex)];
s=sex;
returns;
char*getname()
char*p=newchar[strlen(name)];
p=name;
returnp;
char*gettel()
char*t=newchar[strlen(tel)];
t=tel;
returnt;
private:
charname[10];
charsex[10];
intnum,ban;
chartel[12];
};
intmenu()
chars[80];
intc;
cout<
**************************主菜单***************************"
endl<
|0.退出当前程序|\n"
|1.输入学生信息|\n"
|2.根据学号查询|\n"
|3.根据姓名查询|\n"
|4.根据班级查询|\n"
|5.根据学号排序|\n"
|6.按班级计人数|\n"
|7.根据学号删除|\n"
|8.根据学号修改|\n"
-----------------------------------------------------------------------------"
输入您的菜单选项编号(0-8):
DesignedbyPeng"
for(;
)
gets(s);
c=atoi(s);
if(c>
8)
cout<
输入错误,请重新输入!
:
else
break;
returnc;
}
intenter(studentt[])
inti,n;
system("
cls"
);
请输入学生信息条数"
cin>
n;
请输入学生信息\n"
姓名性别学号班级联系电话"
fstreamfs;
("
c:
\\"
ios:
out);
for(i=0;
i<
i++)
cin>
t[i];
fs<
();
getchar();
returnn;
voidsearch_num(studentt[],intn)
inti,nu,temp=-1000;
请输入查找学生的学号:
nu;
if(nu==t[i].getnum())
{
该学生信息为:
temp=i;
}
if(temp==-1000)
cout<
学号为"
nu<
的学生不存在!
voidsearch_ban(studentt[],intn)
inti,ba,temp=-1000;
请输入查找学生的班级号:
ba;
if(ba==t[i].getban())
temp=i;
班级为"
ba<
voidsearch_name(studentt[],intn)
inti,temp=-1000;
charna[20];
请输入查找学生的姓名:
na;
if(strcmp(na,t[i].getname())==0)
姓名为"
na<
voidsort(studentt[],intn)
studentp;
ints;
请选择升序或降序(1或2):
s;
if(s==1)
{cout<
按学号排序(升序)完成如下:
for(inti=0;
n-1;
{for(intj=0;
j<
n-1-i;
j++)
if(t[j].getnum()>
t[j+1].getnum())
{
p=t[j];
t[j]=t[j+1];
t[j+1]=p;
}
for(inta=0;
a<
a++)
t[a];
if(s==2)
按学号排序(降序)完成如下:
if(t[j].getnum()<
voidcount(studentt[],intn)
inti,c,temp=-1000;
in);
请输入想统计人数的班级:
c;
ints=0;
fs>
if(c==t[i].getban())
s++;
该班级人数为:
s<
c<
voidchange(studentt[],intn)
intid,i,temp=-1000,run=0;
请输入要修改的学生的学号:
id;
in|ios:
if(id==t[i].getnum())
修改前该学生信息为:
run=2000;
}
if(run==2000)
{("
请输入你修改该学生的信息为:
fs<
修改成功!
id<
intdel(studentt[],intn)
intber,temp=-1000,run=0;
inti,j,nu;
请输入要删除的学生的学号:
ber;
if(ber==t[i].getnum())
run=2000;
删除中........"
删除后数据为:
for(intx=0;
x<
x++)
if(ber==t[x].getnum())
for(j=0;
if(j==x)
continue;
else
fs<
t[j];
cout<
nu=n-1;
ber<
returnnu;
voidmain()
students[M];
intlength;
system("
switch(menu())
case0:
exit(0);
break;
case1:
length=enter(s);
case5:
sort(s,length);
case8:
change(s,length);
case7:
length=del(s,length);
case2:
search_num(s,length);
case3:
search_name(s,length);
case4:
search_ban(s,length);
case6:
count(s,length);
按回车返回主菜单.."
getchar();
return;