学生信息管理系统设计Word文档下载推荐.docx
《学生信息管理系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统设计Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
externintModify_project();
intFace()//主界面
cout<
<
"
***********欢迎使用学生信息管理系统************"
endl<
endl;
◇录入(I),"
◇查询(S),"
◇删除(D),"
endl
<
◇修改(M),"
◇退出(E),"
☆请输入您的选择(I,S,D,E):
;
cin>
>
choose;
switch(choose)
{case'
I'
:
case'
i'
system("
cls"
);
Input_project();
break;
S'
s'
Search_project();
D'
d'
Delete_project();
M'
m'
Modify_project();
E'
e'
return-1;
default:
输入错误!
}
return0;
}
intInput_project()//输入功能
choose='
C'
while(choose=='
||choose=='
c'
)
{
num++;
请输入学号:
students[num].no;
请输入姓名:
students[num].name;
请输入年龄:
students[num].age;
请输入性别:
students[num].sex;
请输入出生年月:
students[num].bonetime;
请输入地址:
students[num].address;
请输入电话号码:
students[num].phone;
请输入E-mail:
students[num].mail;
☆继续或返回主菜单(C/E):
if(choose=='
)break;
num+=1;
inti=num;
//以下是按no冒泡排序
boolexchange;
while(i>
1)
{exchange=false;
for(intk=0;
k<
i-1;
k++)
{if(students[k].no>
students[k+1].no)
{Studenttemp=students[k];
students[k]=students[k+1];
students[k+1]=temp;
exchange=true;
if(!
exchange)break;
i--;
for(intt=0;
t<
num;
t++)//结构体数组各项一一复制
{name_students[t].no=students[t].no;
*strcpy(name_students[t].name,students[t].name);
name_students[t].age=students[t].age;
*strcpy(name_students[t].sex,students[t].sex);
*strcpy(name_students[t].bonetime,students[t].bonetime);
*strcpy(name_students[t].address,students[t].address);
name_students[t].phone=students[t].phone;
*strcpy(name_students[t].mail,students[t].mail);
1)//以下是按name冒泡排序
{if(strcmp(name_students[k].name,name_students[k+1].name)>
0)
{Studenttemp=name_students[k];
name_students[k]=name_students[k+1];
name_students[k+1]=temp;
FILE*fp=fopen("
c:
\\name.txt"
"
a+"
//存储两结构体数组
FILE*fp1=fopen("
\\number.txt"
if(fp==NULL||fp1==NULL)//判断文件打开是否成功
打开文件失败!
return-1;
for(i=0;
i<
i++)
fwrite(&
students[i],sizeof(Student),1,fp);
name_students[i],sizeof(Student),1,fp1);
fclose(fp);
fclose(fp1);
return0;
intSearch_project()//查询功能
FILE*fp=fopen("
r"
FILE*fp1=fopen("
num=0;
fread(&
students[num],sizeof(Student),1,fp);
name_students[num],sizeof(Student),1,fp1);
while((!
feof(fp))&
&
(!
feof(fp1)))
//计算已存储的资料的人数num
'
\t'
按学号查询(A)"
按姓名查询(B)"
返回主菜单(E)"
Ο请选择:
charinput;
input;
switch(input)
A'
a'
intnumber;
number;
//以下是折半查询:
intlow=0;
inthigh=num-1;
while(low<
=high)
intmid=(low+high)/2;
if(students[mid].no==number)
学号:
students[mid].no<
姓名:
students[mid].name<
年龄:
"
students[mid].age<
性别:
students[mid].sex<
出生年月:
students[mid].bonetime<
地址:
students[mid].address<
电话号码:
students[mid].phone<
E-mail:
students[mid].mail<
break;
elseif(number>
students[mid].no)
low=mid+1;
elsehigh=mid-1;
if(low>
high)cout<
无相关资料!
B'
b'
charname[20];
name;
if(strcmp(name_students[mid].name,name)==0)
name_students[mid].no<
name_students[mid].name<
name_students[mid].age<
name_students[mid].sex<
出生年月:
name_students[mid].bonetime<
name_students[mid].address<
电话号码:
name_students[mid].phone<
name_students[mid].mail<
elseif(strcmp(name_students[mid].name,name)<
Search_project();
else
intDelete_project()
按学号删除(A)"
按姓名删除(B)"
请选择:
需删除的学生的学号是:
for(inti=0;
if(students[i].no==number)
for(intj=i;
j<
j++)//将要删除的学生调至数组最后一位,前num-1位仍按no排列
{
Studenttemp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
需删除的学生的姓名是:
for(intt=0;
t++)
if(strcmp(name_students[t].name,name)==0)
for(intj=t;
j++)//将要删除的学生调至数组最后一位,前num-1位仍按name排列
Studenttemp=name_students[j];
name_students[j]=name_students[j+1];
name_students[j+1]=temp;
num-=1;
//总人数减一,即删除最后一位
w"
boolp=true;
//以下查找并判断删除是否成功
if(students[mid].no==number||name_students[mid].no==number)
删除失败!
p=false;
if(p)
删除成功!
intModify_project()
需修改的学生的学号是:
intt,math,english,physics,computer;
输入修改结果:
姓名:
age;
sex;
bonetime;
address;
phone;
mail;
students[i].name=name;
students[i].age=age;
students[i].sex=sex;
students[i].bonetime=bonetime;
students[i].address=address;
students[i].phone=phone;
students[i].mail=mail;
i=num;
boolexchange;
while(i>
exchange=false;
if(students[k].no>
Studenttemp=students[k];
for(t=0;
name_students[t].no=students[t].no;
name_students[t].sex=students[t].sex;
name_students[t].bonetime=students[t].bonetime;
name_students[t].address=students[t].address;
name_students[t].mail=students[t].mail;
if(strcmp(name_students[k].name,name_students[k+1].name)>
Studenttemp=name_students[k];
fp=fopen("
w+"
//存储两结构体数组,w+表示清空已有文件的内容
fp1=fopen("
fcl