数据结构程序设计学生信息管理系统设计资料.docx
- 文档编号:23117994
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:30
- 大小:502.95KB
数据结构程序设计学生信息管理系统设计资料.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,进入学生信息管理功能选项
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 程序设计 学生 信息管理 系统 设计 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)