![学生信息管理系统实验报告_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/a9ac64f2-8f83-4bb4-9765-6cfce8328b88/a9ac64f2-8f83-4bb4-9765-6cfce8328b881.gif)
![学生信息管理系统实验报告_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/a9ac64f2-8f83-4bb4-9765-6cfce8328b88/a9ac64f2-8f83-4bb4-9765-6cfce8328b882.gif)
![学生信息管理系统实验报告_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/a9ac64f2-8f83-4bb4-9765-6cfce8328b88/a9ac64f2-8f83-4bb4-9765-6cfce8328b883.gif)
![学生信息管理系统实验报告_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/a9ac64f2-8f83-4bb4-9765-6cfce8328b88/a9ac64f2-8f83-4bb4-9765-6cfce8328b884.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、下载可编辑学生信息管理系统实验报告班 级: 10 网工三班学生姓名:谢昊天学号: 1215134046实验目的和要求:实验目的:1、加深理解Windows 程序设计的基本概念;2、基于单文档的应用程序的创建;3、学会对话框及相关控件的创建;4、熟悉基本的Windows 消息映射机制和消息相应过程。实验内容:1. 创建一个基于对话框的应用程序,用于处理学生成绩,并能够处理相关数据。2. 进一步完善实验二中的系统;3. 在学生信息管理系统中添加一个信息查询对话框,并做好相应的界面设计;4. 根据功能要求完成相应的界面设计;实验内容与分析设计:1. 使用单文档或基于对话框应用程序框架;2. 设计信息
2、查询对话框,增加信息检索功能;3. 信息存储可以借助于数据库,也可以借助于文件,检索记录可以直接在记录文件中进行;4. 通过界面的设计,增加成绩处理的功能;实验步骤与调试过程:1打开 Visual c+ 6.0编程环境;2点击文件 -> 新建、选择建立新的工程;选择Win32 Console Application选项建立工程名为“学生信息管理系统”的一个空工程;3继续点击文件-> 新建、选择建立新的文件;选择C+ Source File选项建立在“学生信息管理系统”工程下的名为“学生信息管理系统”的文件; (或者使用试验一中的文件) ;整个系统的功能在菜单内完成,分别是在学生信息
3、管理下的学生信息录入4创建学生信息的录入。void Add:OnOK()UpdateData();if(m_sNum = "" | m_sName = "" | m_sMajor = "" | m_sGrade= "" |m_sBirthday = "" | (!m_cMale.GetCheck() && !m_cFemale.GetCheck() MessageBox(" 学生信息不完整,无法录入!", "错误 ");return;5创建
4、学生信息的删除。.专业 .整理 .下载可编辑6创建学生信息的修改。void Modify:OnOK()UpdateData();ifstream in("record.txt"); int r = 0, k;string a;while(r != m_nRecord) in >> a;k = a.size(); r+;if(r = m_nRecord) break;in.ignore(1024, 'n');7 创建学生信息的查询。void Search:OnOK()UpdateData(); m_sName = "" m_sM
5、ajor = "" m_sGrade = "" m_sBirthday = "" m_cMale.SetCheck(0); m_cFemale.SetCheck(0);UpdateData(false);if(m_sNum = "") MessageBox(" 学号为空,无法查询!", "错误 ");return;8 可视化的窗口五个,分别实现用户的登录,学生信息的录入,修改,删除,查找。9 通过窗口的各个按键对学生信息进行操作。10 在组建选项中点击执行【学生信息管理系统.
6、exe 】(或者 Ctrl+F5 )执行程序 .11 程序没有错误,正常执行学生信息管理系统.exe ,显示学生信息管理系统。实验结果:调试无误, 正常运行学生信息管理系统.exe ,显示学生信息管理系统操作页面。可以实现一下操作: 1.实现简单地使用用户名和密码来进入登陆界面。2. 实现任意添加学生的信息,包括添加学生的个人学号,姓名,性别,专业,年级出生日期。输入不允许为空,并且有提示功能, 如果输入的时候有一项为空则提示输入相关的信息。3. 实现删除学生的信息,包括删除学生的个人学号,姓名,性别,专业,年出生日期。根据编号进行用户权限检查,在数据库中进行查找相符和的记录,如果编号在数据库
7、中不存在相应记录,则提示不能删除,否则可以删除该记录。 输入不允许为空, 并且有提示功能, 如果输入的时候为空则提示输入相关的信息。 4. 实现编辑学生的信息,包括编辑学生的个人学号,姓名,性别,专业,年级,出生日期。 输入不允许为空,并且有提示功能,如果输入的时候有一项为空则提示输入相关.专业 .整理 .下载可编辑的信息。 5. 实现查询学生的信息,包括编辑查询学生的个学号,姓名,性别,专业,年级,出生日期。 输入不允许为空, 并且有提示功能, 如果输入的时候为空则提示输入相关的信息。6. 实现保存学生的信息,包括保存学生的个人学号,姓名,性别,专业,年级,出生日期。疑难小结:通过本次综合试
8、验,了解了C语言、 C+,Windows 网络编程的一些基础知识,学习到了用C语言、 C+,Windows 网络编程的特点。学习到了如何如何建立一个学生类实现基本地操作;如何定义所需的学生类及实现基本地操作。如何定义指向结构体的指针设置服务器CSocket地址, 实现了数据的存储,以及了实现查询学生的信息同,在实验过程中,回顾书本上的理论知识,巩固了Windows 网络编程的知识。主要算法和程序清单:1. 录入学生信息void Add:OnOK()UpdateData();if(m_sNum = "" | m_sName = "" | m_sMajor
9、= "" | m_sGrade = "" | m_sBirthday = "" | (!m_cMale.GetCheck() && !m_cFemale.GetCheck() MessageBox(" 学生信息不完整,无法录入!", "错误 ");return;int flag = 0;CStudent *stu = new CStudent;stu->m_strID = m_sNum;string temp;ifstream in("record.txt&quo
10、t;);while(in >> temp) if(temp = stu->m_strID) flag = 1;MessageBox(" 该学号已存在 !", "注意 ");in.close();m_sNum = ""UpdateData(false);/只将学号清空,其余信息保留return;in.close();write(stu);delete stu;MessageBox(" 录入完毕 !", "成功 ");clean();/清空表格.专业 .整理 .下载可编辑/ TOD
11、O: Add extra validation here/ CDialog:OnOK();void Add:clean()m_sNum = ""m_sName = ""m_sMajor = ""m_sGrade = ""m_sBirthday = ""m_cMale.SetCheck(0);m_cFemale.SetCheck(0);UpdateData(false);void Add:write(CStudent* stu)stu->m_strName = m_sName;stu->
12、;m_strMajor = m_sMajor;stu->m_strGrade = m_sGrade;stu->m_strDate = m_sBirthday;string temp;if(m_cMale.GetCheck()temp = "男"elsetemp = "女"ofstream ou;ou.open("record.txt", ios:app); / 选择附加模式 ou << left;ou << setw(20) << stu->m_strID;ou <<
13、setw(20) << stu->m_strName;if(m_cMale.GetCheck()temp = "男"elsetemp = "女"ou << setw(20) << temp;ou << setw(20) << stu->m_strMajor;ou << setw(20) << stu->m_strGrade;ou << setw(20) << stu->m_strDate;ou << endl;o
14、u.close();2. 查询信息代码void Delete:OnOK().专业 .整理 .下载可编辑if(!searched) MessageBox(" 请先查询 !", "注意 ");return;if(!find) MessageBox(" 该学生信息不存在,无法删除 !", " 错误 "); return;int mbr = MessageBox(" 确定要删除该学生的所有信息吗? ", " 注意 ", MB_YESNO|MB_ICONQUESTION);if(mbr
15、 = IDNO)return;int k;ifstream in("record.txt");for(int i = 1; i <= index; i+) string a;in >> a;k = a.size();/ 为了得到文件指针的偏移量if(i = index)/说明文件指针到达要删除那行了,但偏移了k 字节break;in.ignore(1024, 'n');in.seekg(-k, ios:cur); /让指针跳到要删除那行的行首int offset = in.tellg();/记下指针位置,便于写新的记录fstream ou;
16、/这是文件流,不是输出流!ou.open("record.txt");ou.seekp(offset, ios:beg);/ 跳到删除行string str;getline(in, str);int size = str.size();/得到删除行的大小for(i = 0; i < size; i+)ou << " "/用空格代替删除行MessageBox(" 该学生信息已删除!", "成功 ");m_sNum = ""clean();searched = false;/在表格
17、是空的情况下要求先查询/ TODO: Add extra validation here/ CDialog:OnOK();void Delete:OnButton1()find = false;/该变量表示是否找到searched = true; /该变量表示是否进行过查询.专业 .整理 .下载可编辑UpdateData();clean(); / 清空上次查询结果,仅保留现在输入的学号 if(m_sNum = "") MessageBox(" 学号为空,无法查询!", "错误 ");searched = false;return;in
18、dex = 0;/表示要查找的学生信息在哪一行,作为删除的索引ifstream in("record.txt");string temp, 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);elsem_cFemale.SetCheck(1);in >> te
19、mp;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 = f
20、alse;/ TODO: Add your control notification handler code here.专业 .整理 .下载可编辑void Delete:clean()m_sMajor = ""m_sGrade = ""m_sBirthday = ""m_cMale.SetCheck(0);m_cFemale.SetCheck(0);UpdateData(false);3. 修改学生信息代码void Modify:OnOK()/ TODO: Add extra validation here UpdateData()
21、;ifstream in("record.txt"); int r = 0, k;string a;while(r != m_nRecord) in >> a;k = a.size(); r+;if(r = m_nRecord)break;in.ignore(1024, 'n');in.seekg(-k, ios:cur);int offset = in.tellg();string temp, str;int flag = 0;/用来判断信息是否改动for(int col = 0; col < 6; col+) in >> t
22、emp;switch(col) case 0:if(m_sNum != temp.c_str()flag = 1;break;case 1:if(m_sName != temp.c_str()flag = 1;break;case 2:if(m_cMale.GetCheck()str = "男 ".专业 .整理 .下载可编辑elsestr = "女 "if(temp != str)flag = 1;break;case 3:if(m_sMajor != temp.c_str()flag = 1;break;case 4:if(m_sGrade != te
23、mp.c_str()flag = 1;break;case 5: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;/ 查看新改的学号是否已存在ifstream infile("record.txt&qu
24、ot;);int rd = 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();.专业 .整理 .下载可编辑int mbr = M
25、essageBox("确定要修改该学生的信息吗", "注意 ",MB_YESNO|MB_ICONQUESTION);if(mbr = IDNO) show(m_nRecord);/显示原来信息return;CStudent *stu = new CStudent;stu->m_strID = m_sNum;stu->m_strName = m_sName;if(m_cMale.GetCheck()stu->m_strSex = "男 "elsestu->m_strSex = "女 "stu-
26、>m_strMajor = m_sMajor;stu->m_strGrade = m_sGrade;stu->m_strDate = m_sBirthday; / 将信息存入变量,便于比较 stu->savetofile(offset);delete stu;LVITEM lvi;lvi.mask = LVIF_IMAGE | LVIF_TEXT;lvi.iItem = m_nRecord;in.seekg(offset, ios:beg);int c = 0;while(in >> str) lvi.iSubItem = c;lvi.pszText = (
27、LPTSTR)(str.c_str();if(c = 0)m_cList.InsertItem(&lvi);elsem_cList.SetItem(&lvi);c+;if(c = 6)break;m_cList.DeleteItem(m_nRecord-1);MessageBox(" 修改完毕 !", "成功 ");/CDialog:OnOK();void Modify:show(int r)clean();if(r <= 0)return;.专业 .整理 .下载可编辑if(r > index)return;ifstream
28、in("record.txt");int k = 0;for(int i = 1; i <= r; i+) string a;in >> a;k = a.size();if(i = r)break;in.ignore(1024, 'n');/ 同样,也是为了得到要显示那行in.seekg(-k, ios:cur); /退回到行头m_nRecord = r;string temp;for(int col = 0; col != 6; col+) in >> temp;switch(col) case 0:m_sNum = temp
29、.c_str();break;case 1:m_sName = temp.c_str();break;case 2:if(temp = "男 ")m_cMale.SetCheck(1);elsem_cFemale.SetCheck(1);break;case 3:m_sMajor = temp.c_str();break;case 4:m_sGrade = temp.c_str();break;case 5:m_sBirthday = temp.c_str();break;UpdateData(false);in.close();.专业 .整理 .下载可编辑void Mod
30、ify:clean()m_nRecord = 0;m_sNum = ""m_sName = ""m_sGrade = ""m_sMajor = ""m_sBirthday = ""m_cMale.SetCheck(0);m_cFemale.SetCheck(0);UpdateData(false);BOOL Modify:OnInitDialog()CDialog:OnInitDialog();/ TODO: Add extra initialization hereindex = 0;/ 行数
31、ifstream infile("record.txt");string str;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, "性别
32、", LVCFMT_LEFT, 70);m_cList.InsertColumn(3, "专业 ", LVCFMT_LEFT, 120);m_cList.InsertColumn(4, "年级 ", LVCFMT_LEFT, 80);m_cList.InsertColumn(5, "出生日期 ", LVCFMT_LEFT, 100);ifstream in("record.txt");LVITEM lvi;for(int r = 0; r < index; r+) lvi.mask = LVIF_T
33、EXT;lvi.iItem = r;int c = 0;while(in >> str) lvi.iSubItem = c;lvi.pszText = (LPTSTR)(str.c_str();if(c = 0)m_cList.InsertItem(&lvi);elsem_cList.SetItem(&lvi);c+;.专业 .整理 .下载可编辑if(c = 6)break;in.close();DWORD dwStyleEx;/网格风格dwStyleEx = LVS_EX_FULLROWSELECT | LVS_REPORT |LVS_EX_ONECLICKACT
34、IVATE;m_cList.SetExtendedStyle(dwStyleEx);m_cSpin.SetRange(0, index);return TRUE;FALSEvoid Modify:OnDeltaposSpin2(NMHDR* pNMHDR, LRESULT* pResult)NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;/ TODO: Add your control notification handler code here int r = m_cSpin.GetPos();if(pNMUpDown->iDelta = 1)/说明
35、点击了Spin 的往上箭头show(r+1);else if(pNMUpDown->iDelta = -1)/说明点击了Spin 的往下箭头show(r-1);*pResult = 0;void Modify:OnClickList3(NMHDR* pNMHDR, LRESULT* pResult)/ TODO: Add your control notification handler code here POSITION pos = m_cList.GetFirstSelectedItemPosition();int r = m_cList.GetNextSelectedItem(p
36、os);show(r+1);*pResult = 0;void Modify:OnKeydownList3(NMHDR* pNMHDR, LRESULT* pResult)LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;/ TODO: Add your control notification handler code here POSITION pos = m_cList.GetFirstSelectedItemPosition();int r = m_cList.GetNextSelectedItem(pos);if(GetKeyState(38)
37、< 0)/ upshow(r);if(GetKeyState(40) < 0)/ downshow(r+2);*pResult = 0;.专业 .整理 .下载可编辑4. 查询信息代码void Search:OnOK()/ TODO: Add extra validation here UpdateData();m_sName = ""m_sMajor = ""m_sGrade = ""m_sBirthday = ""m_cMale.SetCheck(0);m_cFemale.SetCheck(0);Up
38、dateData(false); / 清空上次查找记录,只保留现在输入的学号 if(m_sNum = "") MessageBox(" 学号为空,无法查询!", "错误 ");return;ifstream in("record.txt");string temp, str;int flag = 0;while(in >> temp) str = m_sNum;if(temp = str) flag = 1;/说明找到了in >> temp;m_sName = temp.c_str();/类
39、型转换in >> temp;if(temp = "男")m_cMale.SetCheck(1);elsem_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(!flag) MessageBox(" 该学生信息不存在!&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国乘用车车联网行业发展前景预测及投资战略咨询报告
- 油气储运行业发展分析与前景展望研究报告(2025年)
- 质量控制风险评价报告书
- 2025年出租车电召系统项目投资可行性研究分析报告
- 精神病申请低保申请书
- 年产10万吨冶金辅料生产线备案申请可行性研究报告
- 工作申请书论文
- 热垫行业市场发展及发展趋势与投资战略研究报告
- 2025年防盗卸螺母项目投资可行性研究分析报告
- 医院绩效申请书
- 新版药品管理法培训完整版本课件
- 医院信息系统HIS知识培训教学课件-HIS的主要内容
- 硝苯地平控释片
- 合成聚氨酯原料及助剂生产项目
- 四川省泸州市2019年中考物理考试真题与答案解析
- 部编版语文六年级下册全套单元基础常考测试卷含答案
- 2023年保险养老地产行业分析报告
- 保险公司防火应急预案
- 动物检疫技术-动物检疫的分类(动物防疫与检疫技术)
- 2024医师资格考试考生诚信考试承诺书
- 煤矿职业卫生培训课件2023
评论
0/150
提交评论