首页 《学生信息管理系统》c++程序设计

《学生信息管理系统》c++程序设计

举报
开通vip

《学生信息管理系统》c++程序设计《学生信息管理系统》c++程序设计 目录 一、课程设计目的-----------------------------------------------------------------------P2 二、课程设计时间和实施方式--------------------------------------------------------P2 三、设计思路---------------------------------------------------------------------------...

《学生信息管理系统》c++程序设计
《学生信息管理系统》c++程序设计 目录 一、课程设计目的-----------------------------------------------------------------------P2 二、课程设计时间和实施方式--------------------------------------------------------P2 三、设计思路-----------------------------------------------------------------------------P2 《学生信息管理系统》系统简介 ------------------------------------------------------------P2 《学生信息管理系统》结构图 ---------------------------------------------------------------P7 《学生信息管理系统》流程图 ---------------------------------------------------------------P8 四、用户使用指南-----------------------------------------------------------------------P9 五、编程过程中的问题与解决方法--------------------------------------------------P12 六、实训心得体会-----------------------------------------------------------------------P14 附录1———————————————————————————P15 ----------------------------------------------------------------------------------------------------- ------------------------------ 1 附件:c++与c语言综合实训源程序---《学生信息管理系统》 使用软件:Microsoft visual c++ 2008中文版 本实验涉及相关知识点: 结构数组:一个结构变量只能表示一个实体的信息,如果想表示许多相同类型 的实体,这就是我们使用的结构数组。结构数组是结构与数组的结合,与普通数 组不同之处就是在于每个数组元素都是一个结构类型的数据 函数调用:函数调用是将函数的实参传递到函数的形参,并执行函数定义中所 规定的程序过程,以实现相应功能,注意实参和形参必须一一对应,数量、类型 都必须要一致,函数传递只能从实参传递到形参。 复合语句:切换的下一个选项的循环语句goto loop,swtich选择语句,if条件 语句的用法。 一、课程设计目的: 通过课程设计,让我们加强对这两门语言的学习,在实践中运用更加娴熟方便。 1.进一步强化对结构数组的应用,包括结构数组的定义、初始化、以及对结构 数组里面的相关成员进行应用访问,注意普通数据成员和字符数组访问的区别。 2.理解和掌握函数的调用。 3.熟悉goto loop语句的使用,是一种很好承接下一步的循环。 4.掌握switch语句的使用 5.掌握if语句在不同情况下的使用。 二、课程设计时间和实施方式: 本次课程设计安排在2012年5月14号至2010年6月10号(共18天)进行。 本次课程设计在指定的课程设计时间段name[30](姓名)、 I DNo[20] (身份证号码)、 house[30] (家庭住址)、age (年龄)、 profession[30](专业),对于每一个学生都对应此六项基本学生信息。 2..以提示加数字选择的方式来实现一级菜单和二级菜单。 1创建学生信息 (输入学生具体信息) 2.查看学生信息 (输入学号查看学生信息) 3.主函数创建一级菜单 3.修改学生信息 (可以修改地址、成绩和电话) 4.删除学生信息 (根据学号删除学生信息) 5.退出程序 (1)主函数的主要代码:通过主函数创建一级菜单,用户可以自行输入数字 对其进行录入、查找、修改、删除、以及退出。 2 ------------------------------------------------------------------------------------------------------- ---------------------------- int main() { loop: //循环 cout<<"***************************************\n"; // 显示菜单 cout<<" 请选择服务 \n"; cout<<" 1 - 录入学生信息 \n"; cout<<" 2 - 查找学生信息 \n"; cout<<" 3 - 修改学生信息 \n"; cout<<" 4 - 删除学生信息 \n"; cout<<" 0 - 退出 \n"; cout<<"***************************************\n"; int menu,num,tem; cin>>menu; system("cls"); switch (menu) { case 1: //录入学生信息 { setup(); //录入学生信息调用 system("cls"); //清除屏幕 goto loop; //继续循环 break; } case 2: { cout<<"请输入您想查询的学号:"; //查找学生信息 cin>>num; tem=lookfor(num); //查找函数调用 if (tem!=-1) //命题为真,学号存在 { cout<<"学号 姓名 身份证号码 家庭住址 年龄 专业\n"; cout<<stu[tem].no<<" "<<stu[tem].name<<" "<<stu[tem].IDNo<<" "<<stu[tem].house<<" "<<stu[tem].age<<" "<<stu[tem].profession<<endl; } 信息输出 // else cout<<"对不起,该学号不存在!\n"; //学号不存在 system("pause"); system("cls"); goto loop; break; } ----------------------------------------------------------------------------------------------------- ------------------------------ 3 case 3: //修改信息 { edit(); //修改信息函数调用 system("cls"); goto loop; break; } case 4: // 删除某项信息 { Delete(); //删除函数调用 system("cls"); goto loop; break; } case 5: //退出 { cout<<"谢谢使用!\n"; break; } default: //错误输入 { cout<<"错误的请求!\n"; system("cls"); goto loop; break; } } return 0; } (2)结构数组的定义与初始化代码:包含学生的基本信息,注意int类型初始 化为0、字符数组类型初始化为“0”字符串。 struct student //定义结构数组 { int no; //学号 char name[30]; //姓名 char IDNo[20]; //身份证号码 char house[30]; //家庭住址 int age; //年龄 char profession[30]; //专业 }stu[100]={0,"0",0,"0",0,"0"}; //结构数 组的初始化 (3)函数调用原型声明代码: void setup(); //函数申明 4 ------------------------------------------------------------------------------------------------------- ---------------------------- int lookfor(int m); void edit(); void Delete(); ( 4)录入学生基本信息代码: void setup() // 录入学生信息函数 { char str; for(int i=0;i<100;i++) //循环录入学生信息 { cout<<"请输入学生学号、姓名、身份证号码、家庭住址、年龄、专业:\n"; cin>>stu[i].no>>stu[i].name>>stu[i].IDNo>>stu[i].house\ >>stu[i].age>>stu[i].profession; cout<<"继续(y/n)\n"; //判断是否录入下一个学生信息 cin>>str; if(str==„n?) break; } } ( 6 )查找学生信息基本代码: int lookfor(int m) //查找学生信息函数 { for(int i=0;i<100;i++) //循环查找学生信息 { if(m==stu[i].no) return i; } return -1; } ( 7 )修改学生信息基本代码: void edit() //修改学生信息函数 { char ch[30],ch1[30],ch2[30],ch3[20]; int s3; int t,m,temp; cout<<"请选择学号:"<<endl; cin>>m; temp=lookfor(m); if(m!=-1) //命题为真,则输入修改学生信息的选项 ------------------------------------------------------------------------------------------------------- ---------------------------- 5 { cout<<"******************************\n"; cout<<" 请选择: \n"; cout<<" 1 - 修改姓名 \n"; cout<<" 2 - 修改身份证号码 \n"; cout<<" 3 - 修改家庭住址 \n"; cout<<" 4 - 修改年龄 \n"; cout<<" 5 - 修改专业 \n"; cout<<"******************************\n"; cin>>t; switch (t) //输入修改后学生某一项的信息 { case 1: cout<<"请输入学生的名字\n"; cin>>ch; strcpy(stu[temp].name,ch); //字符数组赋值 break; case 2: cout<<"请输入学生新的身份证号码\n"; cin>>ch3; strcpy(stu[temp].IDNo,ch3); //字符数组赋值 break; case 3: cout<<"请输入学生新的家庭住址\n"; cin>>ch1; strcpy(stu[temp].house,ch1); //字符数组赋值 break; case 4: cout<<"请输入学生新的年龄\n"; cin>>s3; stu[temp].age=s3; break; case 5: cout<<"请输入学生新的专业\n"; cin>>ch2; strcpy(stu[temp].profession,ch2); break; } } else cout<<"此学号不存在!\n"; } (7)删除学生某一项基本信息代码: 6 ------------------------------------------------------------------------------------------------------- ---------------------------- void Delete() //删除函数 { int temp,m; cout<<"请选择学号:"<<endl; //输入删除学生学号 cin>>m; temp=lookfor(m); if(m!=-1) //命题为真,则删除学生的某一项信息 { stu[temp].no=0; stu[temp].name[0]=„0?; stu[temp].IDNo[0]=„0?; stu[temp].house[0]=„0?; stu[temp].age=0; stu[temp].profession[0]=„0?; } else cout<<"此学号不存在!\n"; } 《学生信息管理系统》结构图 ----------------------------------------------------------------------------------------------------- ------------------------------ 7 《学生信息管理系统》流程图 8 ------------------------------------------------------------------------------------------------------- ---------------------------- 四(用户使用指南 1、第一步 进入菜单 用户可以执行的操作的: 1、录入学生信息 2、查找学生信息 3、修改学生信息 4、删除学生信息 0、退出程序 2、第二步 录入学生信息 选择1: (IDNo)、家庭地址、年 用户按提示输入学生的学号、姓名(Name)、身份证号码 龄、专业。然后选择y,则可以继续输入下一学生信息,选择n,则为录入完毕。 当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。 ----------------------------------------------------------------------------------------------------- ------------------------------ 9 3.第三步 查看学生信息 选择2: 用户可以通过输入学号查看该学生的信息。如:学号、姓名、身份证号码、家庭地址、年龄、专业。 当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。 4.第四步 修改学生信息 选择3: 用户可以根据提示,选择修改的属性。学生的学号、姓名、身份证号码、家庭 地址、年龄、专业。再根据提示,修改其属性。 当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。 10 ------------------------------------------------------------------------------------------------------- ---------------------------- 删除学生信息 5、第五步 选择4: 用户根据提示,输入要删除的学生的学号,程序会根据输入的学号查找用户的信息,并且提出该学生的信息,执行删除的操作。 当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。 ----------------------------------------------------------------------------------------------------- ------------------------------ 11 6、第六步 退出学生信息管理系统 选择0: 当系统程序执行完这一操作,然后跳回主菜单,执行下一操作。 五、编程过程中的问题与解决方法 问题一:结构数组的初始化 在开始只对结构体很熟悉,而结构数组只是了解,通过看书后知道结构数组可 以表示一类事物的共同特性,因此我们两人想到用它来表示学生的基本信息,可 对于字符型一维数组却不知道如何初始化,通过上网了解到直接将其初始化为 “0”的字符串即可。 程序: struct student //定义结构数组 { int no; //学号 char name[30]; //姓名 char IDNo[20]; //身份证号码 char house[30]; //家庭住址 int age; //年龄 char profession[30]; //专业 }stu[100]={0,"0",0,"0",0,"0"}; //结构数 组的初始化 问题二:身份证号码输入 12 ------------------------------------------------------------------------------------------------------- ---------------------------- 错误源代码: struct student //定义结构数组 { int no; //学号 char name[30]; //姓名 int IDNo; //身份证号码 char house[30]; //家庭住址 int age; //年龄 char profession[30]; //专业 }stu[100]={0,"0",0,"0",0,"0"}; //结构数 组的初始化 更改后代码: struct student //定义结构数组 { int no; //学号 char name[30]; //姓名 char IDNo[20]; //身份证号码 char house[30]; //家庭住址 int age; //年龄 char profession[30]; //专业 }stu[100]={0,"0",0,"0",0,"0"}; //结构数组的初始化 由于身份证号码位数超过16位,则不能用int来表示,需要用字符数组表示,才能完整输入身份证号码。 问题三:system(“cls”) 这是用户使用界面的显示问题,为了是得界面清晰明了、更加美观,程序中大量运用system("cls")语句,它的主要功能是用来清除屏幕,也可以说是切换屏幕界面。 如: switch (menu) { case 1: //录入学生信息 { setup(); //录入学生信息调用 system("cls"); //清除屏幕 goto loop; //继续循环 break; } 问题四:字符数组赋值 字符数组赋值应使用strcpy,不能直接用赋值符号,不能犯语法错误 如:修改学生身份证号码源代码 case 2: cout<<"请输入学生新的身份证号码\n"; cin>>ch3; strcpy(stu[temp].IDNo,ch3); //字符数组赋值 break; 问题五:实验中多次用到lookfor(m)查找函数的赋值、 ----------------------------------------------------------------------------------------------------- ------------------------------ 13 不论是修改还是删除,首先都要输入学号,通过学号这一桥梁找到学生的基本信息,然后进行处理,如: void edit() //修改学生信息函数 { char ch[30],ch1[30],ch2[30],ch3[20]; int s3; int t,m,temp; cout<<"请选择学号:"<<endl; cin>>m; temp=lookfor(m); 问题五:if(m~=—1)的含义 开始我们两人都想找到一个表达式能够表示命题是真,则输入学号、修改或者删除学生信息,于是无助之下在网上找到相关资料,就使用了m~=—1这个表 达式,还是比较方便。如: if(m!=-1) //命题为真,则删除学生的某一项信息 { stu[temp].no=0; stu[temp].name[0]=„0?; stu[temp].IDNo[0]=„0?; stu[temp].house[0]=„0?; stu[temp].age=0; stu[temp].profession[0]=„0?; } else cout<<"此学号不存在!\n"; } 六、实训心得体会 通过本次课程设计,十几天的实训,让我学会了很多,不仅有大的知识点,还有编程过程中的一些实际细节问题,都有了更深刻的理解。在我们两个人的共同合作下,将学生信息管理系统程序源代码编译出来。在此过程,我们查找相当多的网络资源,学习了loop,goto loop,system(“cls”)的用法,也熟练掌握了结构数组、函数调用和声明、switch语句、if语句的使用方法以及使用中应该注意的相关问题,在编译过程中不断地修改,锻炼了我们的毅力和兴趣,也对本专业的学习有了浓厚的兴趣。 在此,也意识到将理论联系实际的重要性,不断在实践中探索真理,为下学期更好的学习汇编语言打下坚定扎实的基础,相信此次短短十几天的编程实训对我们收获意义是非常大的,感触颇多。 14 ------------------------------------------------------------------------------------------------------- ---------------------------- 附录1 源代码 #include <iostream> #include <cstring> using namespace std; struct student //定义结构数组 { int no; //学号 char name[30]; //姓名 char IDNo[20]; //身份证号码 char house[30]; //家庭住址 int age; //年龄 char profession[30]; //专业 }stu[100]={0,"0",0,"0",0,"0"}; //结构数 组的初始化 void setup(); //函数申明 int lookfor(int m); void edit(); void Delete(); int main() { loop: //循环 cout<<"***************************************\n"; //显示菜单 cout<<" 请选择服务 \n"; cout<<" 1 - 录入学生信息 \n"; cout<<" 2 - 查找学生信息 \n"; cout<<" 3 - 修改学生信息 \n"; cout<<" 4 - 删除学生信息 \n"; cout<<" 0 - 退出 \n"; cout<<"***************************************\n"; int menu,num,tem; cin>>menu; system("cls"); switch (menu) { case 1: //录入学生信息 ----------------------------------------------------------------------------------------------------- ------------------------------ 15 { setup(); //录入学生信息调用 system("cls"); //清除屏幕 goto loop; //继续循环 break; } case 2: { cout<<"请输入您想查询的学号:"; //查找学生信息 cin>>num; tem=lookfor(num); //查找函数调用 if (tem!=-1) //命题为真,学号存在 { cout<<"学号 姓名 身份证号码 家庭住址 年龄 专业 \n"; cout<<stu[tem].no<<" "<<stu[tem].name<<" "<<stu[tem].IDNo<<" "\ <<stu[tem].house<<" "<<stu[tem].age<<" "<<stu[tem].profession<<endl; } //信息输出 else cout<<"对不起,该学号不存在!\n"; //学号不存在 system("pause"); system("cls"); goto loop; break; } case 3: //修改信息 { edit(); //修改信息函数调用 system("cls"); goto loop; break; } case 4: // 删除某项信息 { Delete(); //删除函数调用 system("cls"); goto loop; break; } case 5: //退出 { cout<<"谢谢使用!\n"; 16 ------------------------------------------------------------------------------------------------------- ---------------------------- break; } default: //错误输入 { cout<<"错误的请求!\n"; system("cls"); goto loop; break; } } return 0; } void setup() // 录入学生信息函数 { char str; for(int i=0;i<100;i++) //循环录入学生信息 { cout<<"请输入学生学号、姓名、身份证号码、家庭住址、年龄、专业:\n"; cin>>stu[i].no>>stu[i].name>>stu[i].IDNo>>stu[i].house\ >>stu[i].age>>stu[i].profession; cout<<"继续(y/n)\n"; //判断是否录入下一个学生信息 cin>>str; if(str==„n?) break; } } int lookfor(int m) //查找学生信息函数 { for(int i=0;i<100;i++) //循环查找学生信息 { if(m==stu[i].no) return i; } return -1; } void edit() //修改学生信息函数 ----------------------------------------------------------------------------------------------------- ------------------------------ 17 { char ch[30],ch1[30],ch2[30],ch3[20]; int s3; int t,m,temp; cout<<"请选择学号:"<<endl; cin>>m; temp=lookfor(m); if(m!=-1) //命题为真,则输入修改学生信息的选项 { cout<<"******************************\n"; cout<<" 请选择: \n"; cout<<" 1 - 修改姓名 \n"; cout<<" 2 - 修改身份证号码 \n"; cout<<" 3 - 修改家庭住址 \n"; cout<<" 4 - 修改年龄 \n"; cout<<" 5 - 修改专业 \n"; cout<<"******************************\n"; cin>>t; switch (t) //输入修改后学生某一项的信息 { case 1: cout<<"请输入学生的名字\n"; cin>>ch; strcpy(stu[temp].name,ch); //字符数组赋值 break; case 2: cout<<"请输入学生新的身份证号码\n"; cin>>ch3; strcpy(stu[temp].IDNo,ch3); //字符数组赋值 break; case 3: cout<<"请输入学生新的家庭住址\n"; cin>>ch1; strcpy(stu[temp].house,ch1); //字符数组赋值 break; case 4: cout<<"请输入学生新的年龄\n"; cin>>s3; stu[temp].age=s3; break; case 5: cout<<"请输入学生新的专业\n"; cin>>ch2; 18 ------------------------------------------------------------------------------------------------------- ---------------------------- strcpy(stu[temp].profession,ch2); break; } } else cout<<"此学号不存在!\n"; } void Delete() //删除函数 { int temp,m; cout<<"请选择学号:"<<endl; //输入删除学生学号 cin>>m; temp=lookfor(m); if(m!=-1) //命题为真,则删除学生的某一项信息 { stu[temp].no=0; stu[temp].name[0]=„0?; stu[temp].IDNo[0]=„0?; stu[temp].house[0]=„0?; stu[temp].age=0; stu[temp].profession[0]=„0?; } else cout<<"此学号不存在!\n"; } ----------------------------------------------------------------------------------------------------- ------------------------------ 19
本文档为【《学生信息管理系统》c++程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_842972
暂无简介~
格式:doc
大小:56KB
软件:Word
页数:27
分类:企业经营
上传时间:2017-10-06
浏览量:52