数据结构程序设计学生信息管理系统设计资料.docx

上传人:b****2 文档编号:23117994 上传时间:2023-04-30 格式:DOCX 页数:30 大小:502.95KB
下载 相关 举报
数据结构程序设计学生信息管理系统设计资料.docx_第1页
第1页 / 共30页
数据结构程序设计学生信息管理系统设计资料.docx_第2页
第2页 / 共30页
数据结构程序设计学生信息管理系统设计资料.docx_第3页
第3页 / 共30页
数据结构程序设计学生信息管理系统设计资料.docx_第4页
第4页 / 共30页
数据结构程序设计学生信息管理系统设计资料.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

数据结构程序设计学生信息管理系统设计资料.docx

《数据结构程序设计学生信息管理系统设计资料.docx》由会员分享,可在线阅读,更多相关《数据结构程序设计学生信息管理系统设计资料.docx(30页珍藏版)》请在冰豆网上搜索。

数据结构程序设计学生信息管理系统设计资料.docx

数据结构程序设计学生信息管理系统设计资料

课程论文题目

——学生信息管理系统设计

程序设计思路

学生信息管理系统设计

学生信息包括:

学号,姓名,年龄,性别,出生年月,地址,电话,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,进入学生信息管理功能选项

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1