《学生信息管理系统》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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。