学生信息管理系统程序设计.docx
《学生信息管理系统程序设计.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统程序设计.docx(22页珍藏版)》请在冰点文库上搜索。
学生信息管理系统程序设计
学生信息管理系统程序设计
学生信息管理系统程序设计
1、软件开发目的
该软件主要是实现对学生基本信息进行系统化的管理,首先可以对学生基本信息进行录入和存取,其次可以浏览学生的相关信息,然后可以删除和插入学生的相关信息,还有就是可按学号或按学生姓名查询此学生的相关信息。
由此来系统化管理学生基本信息,并达到简易操作的目的。
2、功能分析说明图
3、各项功能说明
(1)学生基本信息的录入和保存:
在链表中的适当位置插入一个学生信息节点,一次添加一条学生信息(添加内容包含学号、姓名、年龄),如果添加的学号已经在文件中存在,则不能添加到文件中去,应显示错误提示语;如果添加成功,则显示成功提示语。
添加操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(2)显示学生信息:
此功能是显示一个学生信息节点中的信息,并在屏幕上显示出来。
(3)删除学生信息:
进入该项功能界面后,删除学生信息,一次删除一条学生信息。
(4)按学号查找学生信息:
按学号查询学生信息,要求显示文件中与用户输入的学号相匹配的学生信息,要求显示学号、姓名、年龄等字段,如果文件中没有学生信息,则显示提示语。
查询操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(5)按姓名查找学生信息:
按姓名查询学生信息,要求显示文件中与用户输入的学号相匹配的学生信息,要求显示学号、姓名、年龄等字段,如果文件中没有学生信息,则显示提示语。
查询操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(6)修改学生信息
修改学生信息中的某一项信息,一次更新一条学生信息(更新内容包含学号、姓名、年龄等字段值),如果更新的学号在文件中不存在,则不能更新,应该显示错误提示语;如果更新成功,则显示成功提示语。
更新操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(7)退出系统,结束任务。
4、软件功能的验收标准
1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
2.有严密正确的数据验证功能和数据处理功能,能够查询、插入、修改和删除学生信息。
3.系统要有一定的可靠性。
问题补充:
不方便贴出来,发到我邮箱也可!
slr1130@
最佳答案
#include
#include
#include
#include
#defineNULL0
#defineLENsizeof(structstudent)
#defineFILE_DATA_PATH"c:
\student.txt"
structstudent
{
longintnum;
charname[20];
intage;
charsex[4];
charbirthday[10];
charaddress[30];
longinttele_num;
charE_mail[20];
structstudent*next;
};
intTOTAL_NUM=0;
structstudent*head=NULL;
voidwelcome();
voidmainmenu();
voidrecord();
voidinsert(structstudent*stu);
voiddisplay(structstudent*stu);
voiddisplayAll();
voidquery();
voidquery_by_num();
voidquery_by_name();
voidreadData();
voidwriteData();
voidfreeAll();
voiddel();
voidchange();
voiddevise(structstudent*p);
intmain()
{
charuserName[9];
charuserPWD[7];
inti;
welcome();
for(i=0;i<3;i++)
{
printf("\n管理员初始用户名和密码均为admin\n");
printf("请输入您的用户名:
");
scanf("%s",userName);
printf("\n请输入您的密码:
");
scanf("%s",userPWD);
if((strcmp(userName,"admin")==0)&&(strcmp(userPWD,"admin")==0))
{
//用户名和密码正确,显示主菜单
mainmenu();
break;
}
else
{
if(i<2)
{
//用户名或密码错误,提示用户重新输入
printf("用户名或密码错误,请重新输入!
");
}
else
{
//连续3次输错用户名或密码,退出系统。
printf("您已连续3次将用户名或密码输错,系统将退出!
");
}
}
}
return0;
}
//显示欢迎信息
voidwelcome()
{
printf("+---------------------------+\n");
printf("||\n");
printf("|欢迎使用学生信息管理系统|\n");
printf("||\n");
printf("+---------------------------+\n");
}
//系统主菜单
voidmainmenu()
{
intchoice;
choice=-1;
readData();
printf("\n温馨提示:
为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
do
{
printf("\n\n\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t+学生信息管理系统|\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t+[1]----录入学生信息|\n");
printf("\t\t\t+[2]----浏览学生信息|\n");
printf("\t\t\t+[3]----查询学生信息|\n");
printf("\t\t\t+[4]----删除学生信息|\n");
printf("\t\t\t+[5]----修改学生信息|\n");
printf("\t\t\t+[0]----退出系统|\n");
printf("\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n");
printf("\t\t\t--------------------------------\n");
printf("请输入您的选择:
");
scanf("%d",&choice);
switch(choice)
{
case0:
writeData();
freeAll();
exit(0);
case1:
record();
break;
case2:
displayAll();
break;
case3:
query();
break;
case4:
del();
break;
case5:
change();
break;
default:
printf("\n无效选项!
");
break;
}
}
while(choice!
=0);
}
//录入学生信息
voidrecord()
{
structstudent*p0;
p0=(structstudent*)malloc(LEN);
printf("请输入学生的学号:
");
scanf("%ld",&p0->num);
printf("请输入学生的姓名:
");
scanf("%s",p0->name);
printf("请输入学生的年龄:
");
scanf("%d",&p0->age);
printf("请输入学生的性别:
");
scanf("%s",p0->sex);
printf("请输入学生的出生年月:
");
scanf("%s",p0->birthday);
printf("请输入学生的地址:
");
scanf("%s",p0->address);
printf("请输入学生的电话:
");
scanf("%ld",&p0->tele_num);
printf("请输入学生的E-mail:
");
scanf("%s",p0->E_mail);
insert(p0);
printf("该学生的信息为:
\n");
printf("-------------------------------------------------------------------------------");
printf("学号\t姓名\t年龄\t性别\t出生年月\t\t地址\t电话\tE-mail\n");
display(p0);
}
voidinsert(structstudent*stu)
{
structstudent*p0,*p1,*p2;
p1=head;
p0=stu;
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
else
{
while((p0->num>p1->num)&&(p1->next!
=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(head==p1)
head=p0;
else
p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
TOTAL_NUM++;
}
voiddisplay(structstudent*p)
{
printf("%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",p->num,p->name,p->age,p->sex,p->birthday,p->address,p->tele_num,p->E_mail);
}
//浏览学生信息
voiddisplayAll()
{
structstudent*p;
printf("学生总数:
%d\n",TOTAL_NUM);
p=head;
if(head!
=NULL)
{
printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
printf("-------------------------------------------------------------------------------");
do
{
display(p);
p=p->next;
}
while(p!
=NULL);
}
printf("\n");
}
//查询学生信息
voidquery()
{
intchoice;
choice=-1;
do
{
printf("\n");
printf("+--------------------+\n");
printf("|按学号查询请按1|\n");
printf("|按姓名查询请按2|\n");
printf("|取消请按0|\n");
printf("+--------------------+\n");
printf("请输入您的选择:
");
scanf("%d",&choice);
switch(choice)
{
case0:
return;
case1:
query_by_num();
break;
case2:
query_by_name();
break;
default:
printf("\n无效选项!
");
break;
}
}
while(choice!
=0);
}
//按学号查询学生信息
voidquery_by_num()
{
intnum;
structstudent*p1;
printf("请输入学生的学号:
");
scanf("%ld",&num);
if(head==NULL)
{
printf("无学生记录!
\n");
return;
}
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
p1=p1->next;
if(num==p1->num)
{
printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
printf("-------------------------------------------------------------------------------");
display(p1);
}
else
printf("没有该学生记录,请核对!
");
}
//按姓名查询学生信息
voidquery_by_name()
{
charname[20];
structstudent*p1;
printf("请输入学生的姓名:
");
scanf("%s",name);
if(head==NULL)
{
printf("无学生记录!
\n");
return;
}
p1=head;
while(strcmp(name,p1->name)&&p1->next!
=NULL)
p1=p1->next;
if(!
strcmp(name,p1->name))
{
printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
printf("-------------------------------------------------------------------------------");
display(p1);
}
else
printf("没有该学生记录,请核对!
");
}
//写入文件
voidwriteData()
{
FILE*fp;//文件指针
structstudent*p;
fp=fopen(FILE_DATA_PATH,"w");
if(!
fp)
{
printf("文件打开错误!
");
return;
}
fprintf(fp,"%d\n",TOTAL_NUM);
for(p=head;p!
=NULL;p=p->next)
{
fprintf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",
p->num,p->name,p->age,p->sex,p->birthday,p->address,p->tele_num,p->E_mail);
}
fclose(fp);
}
voidfreeAll()
{
structstudent*p1,*p2;
p1=p2=head;
while(p1)
{
p2=p1->next;
free(p1);
p1=p2;
}
}
//读取文件
voidreadData()
{
FILE*fp;//文件指针
structstudent*p1,*p2;
fp=fopen(FILE_DATA_PATH,"r");
if(!
fp)
{
printf("文件打开错误!
");
return0;
}
fscanf(fp,"%d\n",&TOTAL_NUM);
head=p1=p2=(structstudent*)malloc(LEN);
fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",
&p1->num,p1->name,&p1->age,p1->sex,p1->birthday,p1->address,&p1->tele_num,p1->E_mail);
while(!
feof(fp))
{
p1=(structstudent*)malloc(LEN);
fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",
&p1->num,p1->name,&p1->age,p1->sex,p1->birthday,p1->address,&p1->tele_num,p1->E_mail);
p2->next=p1;
p2=p1;
}
p2->next=NULL;
fclose(fp);
}
//删除学生信息
voiddel()
{
structstudent*p1,*p2;
longintnum;
if(head==NULL)
{
printf("无学生记录!
\n");
return;
}
printf("请输入您要删除的学生的学号:
");
scanf("%ld",&num);
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(p1==head)
head=p1->next;
elsep2->next=p1->next;
free(p1);
TOTAL_NUM--;
}
else
printf("没有该学生记录,请核对!
\n");
}
//修改学生信息
voidchange()
{
structstudent*p1,*p2;
longintnum;
if(head==NULL)
{
printf("无学生记录!
\n");
return;
}
printf("请输入您要修改的学生的学号:
");
scanf("%ld",&num);
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
devise(p1);
else
printf("没有该学生记录,请核对!
\n");
}
voiddevise(structstudent*p)
{
intchoice;
choice=-1;
do
{
printf("请选择您要修改的学生的信息内容:
\n");
printf("+----------------------+\n");
printf("|姓名请按1|\n");
printf("|年龄请按2|\n");
printf("|性别请按3|\n");
printf("|出生年月请按4|\n");
printf("|地址请按5|\n");
printf("|电话请按6|\n");
printf("|E-mail请按7|\n");
printf("|取消请按0|\n");
printf("+----------------------+\n");
printf("请输入您的选择:
");
scanf("%d",&choice);
switch(choice)
{
case0:
return;
case1:
printf("请输入新姓名:
");
scanf("%s",p->name);
break;
case2:
printf("请输入新年龄:
");
scanf("%d",&p->age);
break;
case3:
printf("请输入新性别:
");
scanf("%s",p->sex);
break;
case4:
printf("请输入新出生年月:
");
scanf("%s",p->birthday);
break;
case5:
printf("请输入新地址:
");
scanf("%s",p->address);
break;
case6:
printf("请输入新电话:
");
scanf("%ld",&p->tele_num);
break;
case7:
printf("请输入新E-mail:
");
scanf("%s",p->E_mail);
break;
default:
printf("\n无效选项!
");
break;
}
}
while(choice!
=0);