数据结构程序设计学生信息管理系统设计资料.docx
《数据结构程序设计学生信息管理系统设计资料.docx》由会员分享,可在线阅读,更多相关《数据结构程序设计学生信息管理系统设计资料.docx(30页珍藏版)》请在冰豆网上搜索。
数据结构程序设计学生信息管理系统设计资料
课程论文题目
——学生信息管理系统设计
程序设计思路
学生信息管理系统设计
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:
系统以文本菜单方式工作,
学生信息录入功能(学生信息最好用文件保存)---输入
学生信息浏览功能---输出
显示高考一本考生信息
查询、排序功能---算法
按学号查询
按姓名查询
学生信息的删除与修改(可选项)
根据以上要求,设计程序时需要用到多个调用函数来实现各个功能,因此在main函数中将学生信息录入过后,通过switch语句来实现进入并运行各个功能模块。
在程序功能设计之前,将学生信息以结构体的形式存入;在各功能模块中,通过if、for语句来实现判断、循环功能,实现信息浏览、查询、排序等功能。
功能模块图
数据结构设计
题目中学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等,在程序中可以通过设计学生信息的结构体来实现学生信息的录用;再考虑到学生数量的大小,我通过建立一个数组来表示各个学生。
算法设计
1.main函数(功能界面)
voidmain()
{
intchange,n;
printf("============================学生信息管理系统===================================\n");
printf("\t\t\t请输入学生信息\n");
shuru();
do{
system("cls");
printf("============================学生信息管理系统===================================\n");
printf("\t\t\t一:
输入学生信息\n");
printf("\t\t\t二:
显示学生信息\n");
printf("\t\t\t三:
查找学生信息\n");
printf("\t\t\t四:
删除学生信息\n");
printf("\t\t\t五:
按学号排序信息\n");
printf("\t\t\t六:
退出程序\n");
fflush(stdin);
printf("\t\t\t请输入功能选项:
");
scanf("%d",&change);
switch(change)
{
case1:
shuru();break;
case2:
xianshi();break;
case3:
printf("请输入您的学号或姓名,输入姓名请按1,输入学号请按2。
(输入后按enter键)\n");
printf("输入选择:
");
scanf("%d",&n);
getchar();
switch(n)
{
case1:
chaxingming();break;
case2:
chaxuehao();break;
};break;
case4:
shanchu();break;
case5:
paixu();break;
case6:
break;
}
getch();
}while(change!
=6);
}
2.输入学生信息
voidshuru()//输入学生信息
{
chara;
do{
printf("\n请输入学号:
");
scanf("%d",&st[i].id);
fflush(stdin);
printf("\n请输入姓名:
");
gets(st[i].name);
printf("\n请输入年龄:
");
scanf("%d",&st[i].age);
printf("\n请输入性别:
");
scanf("%s",&st[i].sex);
fflush(stdin);
printf("\n请输入出生年,月:
");
scanf("%d,%d",&st[i].birthday);
printf("\n请输入电话号码:
");
scanf("%d",&st[i].phone);
fflush(stdin);
printf("\n请输入地址:
");
scanf("%s",&st[i].address);
printf("\n请输入email:
");
scanf("%s",&st[i].email);
printf("\n是否继续输入另外一个学生信息?
(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y'&&i<=50);
}
3.先是学生信息
voidxianshi()//显示学生信息
{
intj;
for(j=0;j
printf("学号\t%d\n\n姓名\t%s\n\n年龄\t%d\n\n性别\t%s\n\n出生年月\t%d\n\n电话号码\t%d\n\n地址\t%s\n\nemail\t%s\n\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthday,st[j].phone,st[j].address,st[j].email);
}
4.查找信息
voidchaxuehao()//按学号查找学生的信息
{
inta,num;
charc;
do
{
printf("\n请输入想查找的学生学号:
");
fflush(stdin);
scanf("%d",&num);
for(a=0;a
{
if(num==st[a].id)
{
printf("\n\t\t您查找的学生在第%d个位置找到了!
!
!
\n",a+1);
break;
}
}
if(a>=50)
printf("\n\t\t没有找到这个学生!
!
!
\n");
else
{
printf("学号\t%d\n姓名\t%s\n年龄\t%d\n性别\t%s\n出生年月\t%d\n电话号码\t%d\n地址\t%s\nemail\t%s\n",st[a].id,st[a].name,st[a].age,st[a].sex,st[a].birthday,st[a].phone,st[a].address,st[a].email);
}
printf("\n是否查找另一个学生的信息?
(y/n)");
fflush(stdin);
c=getchar();
}while(c=='y');
}
voidchaxingming()//根据姓名查询
{
intm,k;
k=0;//用K来反映该生姓名是否重名
charname[20],b;
do
{
printf("请输入姓名:
");
scanf("%s",&name);
for(m=0;m<50;m++)
if(strcmp(st[m].name,name)==0)//检索该姓名人数
{
k++;
}
if(k>1)//k>1,重名{
printf("因您与某同学重名,请输入考号查询\n");
chaxuehao();//调用学号查询函数
}
else//不重名情况
for(m=0;m<50;m++)
if(strcmp(st[m].name,name)==0)
{
printf("\n\t\t您查找的学生在第%d个位置找到了!
!
!
\n",m+1);break;
}
if(k==0)printf("\n没有找到该学生\n");
if(m>50)
printf("\n\t\t没有找到这个学生!
!
!
\n");
else
{
printf("学生\t%d\n姓名\t%s\n年龄\t%d\n性别\t%s\n出生年月\t%d\n电话号码\t%d\n地址\t%s\nemail\t%s\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthday,st[m].phone,st[m].address,st[m].email);
}
printf("\n是否查找另一个学生的信息?
(y/n)");
fflush(stdin);
b=getchar();
}while(b=='y');
}
5.删除
voidshanchu()//删除学生信息
{
intp,number;
charc;
do
{
printf("\n请输入要删除的学生学号:
\n");
fflush(stdin);
scanf("%d",&number);
for(p=0;p
{
if(st[p].id==number)
break;
}
for(number=p;number
st[number]=st[number+1];
if(p>i)
printf("\t\t没有找到这个学生!
!
!
\n");
else
{
i--;
xianshi();
}
printf("\n是否继续删除另一个学员信息?
(y/n)");
fflush(stdin);
c=getchar();
}while(c=='y');
}
6.排序
voidpaixu()//按学号从大到小排序
{
intj,k,id1,age1,birthday1,phone1;
charname1[10],sex1[3],address1[100],email1[100];
for(j=0;j
{
for(k=0;k{
if(st[k].id>st[k+1].id)
{
id1=st[k].id;
st[k].id=st[k+1].id;
st[k+1].id=id1;
strcpy(name1,st[k].name);//name1=st[k].name;strcpy()
strcpy(st[k].name,st[k+1].name);
strcpy(st[k+1].name,name1);
strcpy(sex1,st[k].sex);
strcpy(st[k].sex,st[k+1].sex);
strcpy(st[k+1].sex,sex1);
age1=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=age1;
birthday1=st[k].birthday;
st[k].birthday=st[k+1].birthday;
st[k+1].birthday=birthday1;
phone1=st[k].phone;
st[k].phone=st[k+1].phone;
st[k+1].phone=phone1;
strcpy(address1,st[k].address);
strcpy(st[k].address,st[k+1].address);
strcpy(st[k+1].address,address1);
strcpy(email1,st[k].email);
strcpy(st[k].email,st[k+1].email);
strcpy(st[k+1].email,email1);
}
}
}
xianshi();
}
程序代码
#include
#include
#include
#include
structstudent{
intid;
charname[10];
intage;
charsex[3];
intbirthday;
intphone;
charaddress[100];
charemail[100];
}st[50];
inti=0;
voidshuru()//输入学生信息
{
chara;
do{
printf("\n请输入学号:
");
scanf("%d",&st[i].id);
fflush(stdin);
printf("\n请输入姓名:
");
gets(st[i].name);
printf("\n请输入年龄:
");
scanf("%d",&st[i].age);
printf("\n请输入性别:
");
scanf("%s",&st[i].sex);
fflush(stdin);
printf("\n请输入出生年,月:
");
scanf("%d,%d",&st[i].birthday);
printf("\n请输入电话号码:
");
scanf("%d",&st[i].phone);
fflush(stdin);
printf("\n请输入地址:
");
scanf("%s",&st[i].address);
printf("\n请输入email:
");
scanf("%s",&st[i].email);
printf("\n是否继续输入另外一个学生信息?
(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y'&&i<=50);
}
voidxianshi()//显示学生信息
{
intj;
for(j=0;j
printf("学号\t%d\n\n姓名\t%s\n\n年龄\t%d\n\n性别\t%s\n\n出生年月\t%d\n\n电话号码\t%d\n\n地址\t%s\n\nemail\t%s\n\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthday,st[j].phone,st[j].address,st[j].email);
}
voidpaixu()//按学号从大到小排序
{
intj,k,id1,age1,birthday1,phone1;
charname1[10],sex1[3],address1[100],email1[100];
for(j=0;j
{
for(k=0;k{
if(st[k].id>st[k+1].id)
{
id1=st[k].id;
st[k].id=st[k+1].id;
st[k+1].id=id1;
strcpy(name1,st[k].name);//name1=st[k].name;strcpy()
strcpy(st[k].name,st[k+1].name);
strcpy(st[k+1].name,name1);
strcpy(sex1,st[k].sex);
strcpy(st[k].sex,st[k+1].sex);
strcpy(st[k+1].sex,sex1);
age1=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=age1;
birthday1=st[k].birthday;
st[k].birthday=st[k+1].birthday;
st[k+1].birthday=birthday1;
phone1=st[k].phone;
st[k].phone=st[k+1].phone;
st[k+1].phone=phone1;
strcpy(address1,st[k].address);
strcpy(st[k].address,st[k+1].address);
strcpy(st[k+1].address,address1);
strcpy(email1,st[k].email);
strcpy(st[k].email,st[k+1].email);
strcpy(st[k+1].email,email1);
}
}
}
xianshi();
}
voidchaxuehao()//按学号查找学生的信息
{
inta,num;
charc;
do
{
printf("\n请输入想查找的学生学号:
");
fflush(stdin);
scanf("%d",&num);
for(a=0;a
{
if(num==st[a].id)
{
printf("\n\t\t您查找的学生在第%d个位置找到了!
!
!
\n",a+1);
break;
}
}
if(a>=50)
printf("\n\t\t没有找到这个学生!
!
!
\n");
else
{
printf("学号\t%d\n姓名\t%s\n年龄\t%d\n性别\t%s\n出生年月\t%d\n电话号码\t%d\n地址\t%s\nemail\t%s\n",st[a].id,st[a].name,st[a].age,st[a].sex,st[a].birthday,st[a].phone,st[a].address,st[a].email);
}
printf("\n是否查找另一个学生的信息?
(y/n)");
fflush(stdin);
c=getchar();
}while(c=='y');
}
voidchaxingming()//根据姓名查询
{
intm,k;
k=0;//用K来反映该生姓名是否重名
charname[20],b;
do
{
printf("请输入姓名:
");
scanf("%s",&name);
for(m=0;m<50;m++)
if(strcmp(st[m].name,name)==0)//检索该姓名人数
{
k++;
}
if(k>1)//k>1,重名
{
printf("因您与某同学重名,请输入考号查询\n");
chaxuehao();//调用学号查询函数
}
else//不重名情况
for(m=0;m<50;m++)
if(strcmp(st[m].name,name)==0)
{
printf("\n\t\t您查找的学生在第%d个位置找到了!
!
!
\n",m+1);break;
}
if(k==0)printf("\n没有找到该学生\n");
if(m>50)
printf("\n\t\t没有找到这个学生!
!
!
\n");
else
{
printf("学生\t%d\n姓名\t%s\n年龄\t%d\n性别\t%s\n出生年月\t%d\n电话号码\t%d\n地址\t%s\nemail\t%s\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthday,st[m].phone,st[m].address,st[m].email);
}
printf("\n是否查找另一个学生的信息?
(y/n)");
fflush(stdin);
b=getchar();
}while(b=='y');
}
voidshanchu()//删除学生信息
{
intp,number;
charc;
do
{
printf("\n请输入要删除的学生学号:
\n");
fflush(stdin);
scanf("%d",&number);
for(p=0;p
{
if(st[p].id==number)
break;
}
for(number=p;number
st[number]=st[number+1];
if(p>i)
printf("\t\t没有找到这个学生!
!
!
\n");
else
{
i--;
xianshi();
}
printf("\n是否继续删除另一个学员信息?
(y/n)");
fflush(stdin);
c=getchar();
}while(c=='y');
}
voidmain()
{
intchange,n;
printf("============================学生信息管理系统===================================\n");
printf("\t\t\t请输入学生信息\n");
shuru();
do{
system("cls");
printf("============================学生信息管理系统===================================\n");
printf("\t\t\t一:
输入学生信息\n");
printf("\t\t\t二:
显示学生信息\n");
printf("\t\t\t三:
查找学生信息\n");
printf("\t\t\t四:
删除学生信息\n");
printf("\t\t\t五:
按学号排序信息\n");
printf("\t\t\t六:
退出程序\n");
fflush(stdin);
//shuru();
printf("\t\t\t请输入功能选项:
");
scanf("%d",&change);
switch(change)
{
case1:
shuru();break;
case2:
xianshi();break;
case3:
printf("请输入您的学号或姓名,输入姓名请按1,输入学号请按2。
(输入后按enter键)\n");
printf("输入选择:
");
scanf("%d",&n);
getchar();
switch(n)
{
case1:
chaxingming();break;
case2:
chaxuehao();break;
};break;
case4:
shanchu();break;
case5:
paixu();break;
case6:
break;
}
getch();
}while(change!
=6);
}
程序运行结果
进入界面:
先输入学生信息
输入一个学生的信息后,界面出现“是否继续输入另一学生的信息”的判断
将学生信息输入完毕后,enter,进入学生信息管理功能选项