学生信息管理系统实验报告.docx

上传人:b****8 文档编号:23648874 上传时间:2023-05-19 格式:DOCX 页数:25 大小:20.96KB
下载 相关 举报
学生信息管理系统实验报告.docx_第1页
第1页 / 共25页
学生信息管理系统实验报告.docx_第2页
第2页 / 共25页
学生信息管理系统实验报告.docx_第3页
第3页 / 共25页
学生信息管理系统实验报告.docx_第4页
第4页 / 共25页
学生信息管理系统实验报告.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

学生信息管理系统实验报告.docx

《学生信息管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统实验报告.docx(25页珍藏版)》请在冰豆网上搜索。

学生信息管理系统实验报告.docx

学生信息管理系统实验报告

学生信息管理系统实验报告

班级:

10网工三班学生姓名:

谢昊天学号:

**********

实验目的和要求:

实验目的:

1、加深理解Windows程序设计的基本概念;

2、基于单文档的应用程序的创建;

3、学会对话框及相关控件的创建;

4、熟悉基本的Windows消息映射机制和消息相应过程。

实验内容:

1.创建一个基于对话框的应用程序,用于处理学生成绩,并能够处理相关数据。

2.进一步完善实验二中的系统;

3.在学生信息管理系统中添加一个信息查询对话框,并做好相应的界面设计;

4.根据功能要求完成相应的界面设计;

实验内容与分析设计:

1.使用单文档或基于对话框应用程序框架;

2.设计信息查询对话框,增加信息检索功能;

3.信息存储可以借助于数据库,也可以借助于文件,检索记录可以直接在记录文件中进行;

4.通过界面的设计,增加成绩处理的功能;

实验步骤与调试过程:

1.打开Visualc++6.0编程环境;

2.点击文件->新建、选择建立新的工程;选择Win32ConsoleApplication选项建立工程名为“学生信息管理系统”的一个空工程;

3.继续点击文件->新建、选择建立新的文件;选择C++SourceFile选项建立在“学生信息管理系统”工程下的名为“学生信息管理系统”的文件;(或者使用试验一中的文件);

整个系统的功能在菜单内完成,分别是在学生信息管理下的学生信息录入

4.创建学生信息的录入。

voidAdd:

:

OnOK()

{

UpdateData();

if(m_sNum==""||m_sName==""||m_sMajor==""||m_sGrade

==""||

m_sBirthday==""||(!

m_cMale.GetCheck()&&!

m_cFemale.GetCheck())){

MessageBox("学生信息不完整,无法录入!

","错误");

return;

}

5.创建学生信息的删除。

6.创建学生信息的修改。

voidModify:

:

OnOK()

{UpdateData();

ifstreamin("record.txt");

intr=0,k;

stringa;

while(r!

=m_nRecord){

in>>a;

k=a.size();

r++;

if(r==m_nRecord)

break;

in.ignore(1024,'\n');

}

7.创建学生信息的查询。

voidSearch:

:

OnOK()

{UpdateData();

m_sName="";

m_sMajor="";

m_sGrade="";

m_sBirthday="";

m_cMale.SetCheck(0);

m_cFemale.SetCheck(0);

UpdateData(false);

if(m_sNum==""){

MessageBox("学号为空,无法查询!

","错误");

return;

}

8.可视化的窗口五个,分别实现用户的登录,学生信息的录入,修改,删除,查找。

9.通过窗口的各个按键对学生信息进行操作。

10.在组建选项中点击执行【学生信息管理系统.exe】(或者Ctrl+F5)执行程序.

11.程序没有错误,正常执行学生信息管理系统.exe,显示学生信息管理系统。

实验结果:

调试无误,正常运行学生信息管理系统.exe,显示学生信息管理系统操作页面。

可以实现一下操作:

1.实现简单地使用用户名和密码来进入登陆界面。

2.实现任意添加学生的信息,包括添加学生的个人学号,姓名,性别,专业,年级出生日期。

输入不允许为空,并且有提示功能,如果输入的时候有一项为空则提示输入相关的信息。

3.实现删除学生的信息,包括删除学生的个人学号,姓名,性别,专业,年出生日期。

根据编号进行用户权限检查,在数据库中进行查找相符和的记录,如果编号在数据库中不存在相应记录,则提示不能删除,否则可以删除该记录。

输入不允许为空,并且有提示功能,如果输入的时候为空则提示输入相关的信息。

4.实现编辑学生的信息,包括编辑学生的个人学号,姓名,性别,专业,年级,出生日期。

输入不允许为空,并且有提示功能,如果输入的时候有一项为空则提示输入相关的信息。

5.实现查询学生的信息,包括编辑查询学生的个学号,姓名,性别,专业,年级,出生日期。

输入不允许为空,并且有提示功能,如果输入的时候为空则提示输入相关的信息。

6.实现保存学生的信息,包括保存学生的个人学号,姓名,性别,专业,年级,出生日期。

疑难小结:

通过本次综合试验,了解了C语言、C++,Windows网络编程的一些基础知识,学习到了用C语言、C++,Windows网络编程的特点。

学习到了如何如何建立一个学生类实现基本地操作;如何定义所需的学生类及实现基本地操作。

如何定义指向结构体的指针设置服务器CSocket地址,实现了数据的存储,以及了实现查询学生的信息同,在实验过程中,回顾书本上的理论知识,巩固了Windows网络编程的知识。

 

主要算法和程序清单:

1.录入学生信息

voidAdd:

:

OnOK()

{

UpdateData();

if(m_sNum==""||m_sName==""||m_sMajor==""||m_sGrade==""||

m_sBirthday==""||(!

m_cMale.GetCheck()&&!

m_cFemale.GetCheck())){

MessageBox("学生信息不完整,无法录入!

","错误");

return;

}

intflag=0;

CStudent*stu=newCStudent;

stu->m_strID=m_sNum;

stringtemp;

ifstreamin("record.txt");

while(in>>temp){

if(temp==stu->m_strID){

flag=1;

MessageBox("该学号已存在!

","注意");

in.close();

m_sNum="";

UpdateData(false);//只将学号清空,其余信息保留

return;

}

}

in.close();

write(stu);

deletestu;

MessageBox("录入完毕!

","成功");

clean();//清空表格

//TODO:

Addextravalidationhere

//CDialog:

:

OnOK();

}

voidAdd:

:

clean()

{

m_sNum="";

m_sName="";

m_sMajor="";

m_sGrade="";

m_sBirthday="";

m_cMale.SetCheck(0);

m_cFemale.SetCheck(0);

UpdateData(false);

}

voidAdd:

:

write(CStudent*stu)

{

stu->m_strName=m_sName;

stu->m_strMajor=m_sMajor;

stu->m_strGrade=m_sGrade;

stu->m_strDate=m_sBirthday;

stringtemp;

if(m_cMale.GetCheck())

temp="男";

else

temp="女";

ofstreamou;

ou.open("record.txt",ios:

:

app);//选择附加模式

ou<

ou<m_strID;

ou<m_strName;

if(m_cMale.GetCheck())

temp="男";

else

temp="女";

ou<

ou<m_strMajor;

ou<m_strGrade;

ou<m_strDate;

ou<

ou.close();

}

2.查询信息代码

voidDelete:

:

OnOK()

{

if(!

searched){

MessageBox("请先查询!

","注意");

return;

}

if(!

find){

MessageBox("该学生信息不存在,无法删除!

","错误");

return;

}

intmbr=MessageBox("确定要删除该学生的所有信息吗?

","注意",

MB_YESNO|MB_ICONQUESTION);

if(mbr==IDNO)

return;

intk;

ifstreamin("record.txt");

for(inti=1;i<=index;i++){

stringa;

in>>a;

k=a.size();//为了得到文件指针的偏移量

if(i==index)//说明文件指针到达要删除那行了,但偏移了k字节

break;

in.ignore(1024,'\n');

}

in.seekg(-k,ios:

:

cur);//让指针跳到要删除那行的行首

intoffset=in.tellg();//记下指针位置,便于写新的记录

fstreamou;//这是文件流,不是输出流!

ou.open("record.txt");

ou.seekp(offset,ios:

:

beg);//跳到删除行

stringstr;

getline(in,str);

intsize=str.size();//得到删除行的大小

for(i=0;i

ou<<"";//用空格代替删除行

MessageBox("该学生信息已删除!

","成功");

m_sNum="";

clean();

searched=false;//在表格是空的情况下要求先查询

//TODO:

Addextravalidationhere

//CDialog:

:

OnOK();

}

voidDelete:

:

OnButton1()

{

find=false;//该变量表示是否找到

searched=true;//该变量表示是否进行过查询

UpdateData();

clean();//清空上次查询结果,仅保留现在输入的学号

if(m_sNum==""){

MessageBox("学号为空,无法查询!

","错误");

searched=false;

return;

}

index=0;//表示要查找的学生信息在哪一行,作为删除的索引

ifstreamin("record.txt");

stringtemp,str;

while(in>>temp){

index++;

str=m_sNum;

if(str==temp){

find=true;//找到了

in>>temp;

m_sName=temp.c_str();

in>>temp;

if(temp=="男")

m_cMale.SetCheck

(1);

else

m_cFemale.SetCheck

(1);

in>>temp;

m_sMajor=temp.c_str();

in>>temp;

m_sGrade=temp.c_str();

in>>temp;

m_sBirthday=temp.c_str();

UpdateData(false);

in.close();

break;

}

in.ignore(1024,'\n');

}

in.close();

if(!

find){

MessageBox("该学生信息不存在!

","注意");

m_sNum="";

UpdateData(false);

searched=false;

}

//TODO:

Addyourcontrolnotificationhandlercodehere

}

voidDelete:

:

clean()

{

m_sMajor="";

m_sGrade="";

m_sBirthday="";

m_cMale.SetCheck(0);

m_cFemale.SetCheck(0);

UpdateData(false);

}

3.修改学生信息代码

voidModify:

:

OnOK()

{

//TODO:

Addextravalidationhere

UpdateData();

ifstreamin("record.txt");

intr=0,k;

stringa;

while(r!

=m_nRecord){

in>>a;

k=a.size();

r++;

if(r==m_nRecord)

break;

in.ignore(1024,'\n');

}

in.seekg(-k,ios:

:

cur);

intoffset=in.tellg();

stringtemp,str;

intflag=0;//用来判断信息是否改动

for(intcol=0;col<6;col++){

in>>temp;

switch(col){

case0:

if(m_sNum!

=temp.c_str())

flag=1;

break;

case1:

if(m_sName!

=temp.c_str())

flag=1;

break;

case2:

if(m_cMale.GetCheck())

str="男";

else

str="女";

if(temp!

=str)

flag=1;

break;

case3:

if(m_sMajor!

=temp.c_str())

flag=1;

break;

case4:

if(m_sGrade!

=temp.c_str())

flag=1;

break;

case5:

if(m_sBirthday!

=temp.c_str())

flag=1;

break;

}

if(flag)

break;

}

if(flag==0){

MessageBox("该学生信息没有改动!

","注意");

return;

}

if(m_nRecord==0||index==0){

MessageBox("没有学生信息!

","错误");

return;

}

//查看新改的学号是否已存在

ifstreaminfile("record.txt");

intrd=0;//因为要排除原来那行,是与其它行比较看是否重号

while(infile>>temp){

rd++;

if(temp.c_str()==m_sNum&&rd!

=m_nRecord){

MessageBox("该学号已存在,请重新输入!

","注意",

MB_ICONWARNING);

show(m_nRecord);

return;

}

infile.ignore(1024,'\n');

}

infile.close();

intmbr=MessageBox("确定要修改该学生的信息吗","注意",

MB_YESNO|MB_ICONQUESTION);

if(mbr==IDNO){

show(m_nRecord);//显示原来信息

return;

}

CStudent*stu=newCStudent;

stu->m_strID=m_sNum;

stu->m_strName=m_sName;

if(m_cMale.GetCheck())

stu->m_strSex="男";

else

stu->m_strSex="女";

stu->m_strMajor=m_sMajor;

stu->m_strGrade=m_sGrade;

stu->m_strDate=m_sBirthday;//将信息存入变量,便于比较

stu->savetofile(offset);

deletestu;

LVITEMlvi;

lvi.mask=LVIF_IMAGE|LVIF_TEXT;

lvi.iItem=m_nRecord;

in.seekg(offset,ios:

:

beg);

intc=0;

while(in>>str){

lvi.iSubItem=c;

lvi.pszText=(LPTSTR)(str.c_str());

if(c==0)

m_cList.InsertItem(&lvi);

else

m_cList.SetItem(&lvi);

c++;

if(c==6)

break;

}

m_cList.DeleteItem(m_nRecord-1);

MessageBox("修改完毕!

","成功");

//CDialog:

:

OnOK();

}

voidModify:

:

show(intr)

{

clean();

if(r<=0)

return;

if(r>index)

return;

ifstreamin("record.txt");

intk=0;

for(inti=1;i<=r;i++){

stringa;

in>>a;

k=a.size();

if(i==r)

break;

in.ignore(1024,'\n');

}//同样,也是为了得到要显示那行

in.seekg(-k,ios:

:

cur);//退回到行头

m_nRecord=r;

stringtemp;

for(intcol=0;col!

=6;col++){

in>>temp;

switch(col){

case0:

m_sNum=temp.c_str();

break;

case1:

m_sName=temp.c_str();

break;

case2:

if(temp=="男")

m_cMale.SetCheck

(1);

else

m_cFemale.SetCheck

(1);

break;

case3:

m_sMajor=temp.c_str();

break;

case4:

m_sGrade=temp.c_str();

break;

case5:

m_sBirthday=temp.c_str();

break;

}

}

UpdateData(false);

in.close();

}

voidModify:

:

clean()

{

m_nRecord=0;

m_sNum="";

m_sName="";

m_sGrade="";

m_sMajor="";

m_sBirthday="";

m_cMale.SetCheck(0);

m_cFemale.SetCheck(0);

UpdateData(false);

}

BOOLModify:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//TODO:

Addextrainitializationhere

index=0;//行数

ifstreaminfile("record.txt");

stringstr;

while(infile>>str){//为了得到总共的记录数(行数)

index++;

infile.ignore(1024,'\n');

}

infile.close();

m_cList.InsertColumn(0,"学号",LVCFMT_LEFT,130);

m_cList.InsertColumn(1,"姓名",LVCFMT_LEFT,100);

m_cList.InsertColumn(2,"性别",LVCFMT_LEFT,70);

m_cList.InsertColumn(3,"专业",LVCFMT_LEFT,120);

m_cList.InsertColumn(4,"年级",LVCFMT_LEFT,80);

m_cList.InsertColumn(5,"出生日期",LVCFMT_LEFT,100);

ifstreamin("record.txt");

LVITEMlvi;

for(intr=0;r

lvi.mask=LVIF_TEXT;

lvi.iItem=r;

intc=0;

while(in>>str){

lvi.iSubItem=c;

lvi.pszText=(LPTSTR

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

当前位置:首页 > PPT模板 > 卡通动漫

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

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