学生信息管理系统程序设计.docx

上传人:b****1 文档编号:976788 上传时间:2023-04-30 格式:DOCX 页数:20 大小:18.02KB
下载 相关 举报
学生信息管理系统程序设计.docx_第1页
第1页 / 共20页
学生信息管理系统程序设计.docx_第2页
第2页 / 共20页
学生信息管理系统程序设计.docx_第3页
第3页 / 共20页
学生信息管理系统程序设计.docx_第4页
第4页 / 共20页
学生信息管理系统程序设计.docx_第5页
第5页 / 共20页
学生信息管理系统程序设计.docx_第6页
第6页 / 共20页
学生信息管理系统程序设计.docx_第7页
第7页 / 共20页
学生信息管理系统程序设计.docx_第8页
第8页 / 共20页
学生信息管理系统程序设计.docx_第9页
第9页 / 共20页
学生信息管理系统程序设计.docx_第10页
第10页 / 共20页
学生信息管理系统程序设计.docx_第11页
第11页 / 共20页
学生信息管理系统程序设计.docx_第12页
第12页 / 共20页
学生信息管理系统程序设计.docx_第13页
第13页 / 共20页
学生信息管理系统程序设计.docx_第14页
第14页 / 共20页
学生信息管理系统程序设计.docx_第15页
第15页 / 共20页
学生信息管理系统程序设计.docx_第16页
第16页 / 共20页
学生信息管理系统程序设计.docx_第17页
第17页 / 共20页
学生信息管理系统程序设计.docx_第18页
第18页 / 共20页
学生信息管理系统程序设计.docx_第19页
第19页 / 共20页
学生信息管理系统程序设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生信息管理系统程序设计.docx

《学生信息管理系统程序设计.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统程序设计.docx(20页珍藏版)》请在冰点文库上搜索。

学生信息管理系统程序设计.docx

学生信息管理系统程序设计

学生信息管理系统程序设计

1、软件开发目的

该软件主要是实现对学生基本信息进行系统化的管理,首先可以对学生基本信息进行录入和存取,其次可以浏览学生的相关信息,然后可以删除和插入学生的相关信息,还有就是可按学号或按学生姓名查询此学生的相关信息。

由此来系统化管理学生基本信息,并达到简易操作的目的。

2、功能分析说明图

3、各项功能说明

(1)学生基本信息的录入和保存:

在链表中的适当位置插入一个学生信息节点,一次添加一条学生信息(添加内容包含学号、姓名、年龄),如果添加的学号已经在文件中存在,则不能添加到文件中去,应显示错误提示语;如果添加成功,则显示成功提示语。

添加操作完毕后,应该询问用户是否继续执行此操作。

如果用户不继续,则退回到程序初始界面。

(2)显示学生信息:

此功能是显示一个学生信息节点中的信息,并在屏幕上显示出来。

(3)删除学生信息:

进入该项功能界面后,删除学生信息,一次删除一条学生信息。

(4)按学号查找学生信息:

按学号查询学生信息,要求显示文件中与用户输入的学号相匹配的学生信息,要求显示学号、姓名、年龄等字段,如果文件中没有学生信息,则显示提示语。

查询操作完毕后,应该询问用户是否继续执行此操作。

如果用户不继续,则退回到程序初始界面。

(5)按姓名查找学生信息:

按姓名查询学生信息,要求显示文件中与用户输入的学号相匹配的学生信息,要求显示学号、姓名、年龄等字段,如果文件中没有学生信息,则显示提示语。

查询操作完毕后,应该询问用户是否继续执行此操作。

如果用户不继续,则退回到程序初始界面。

(6)修改学生信息

修改学生信息中的某一项信息,一次更新一条学生信息(更新内容包含学号、姓名、年龄等字段值),如果更新的学号在文件中不存在,则不能更新,应该显示错误提示语;如果更新成功,则显示成功提示语。

更新操作完毕后,应该询问用户是否继续执行此操作。

如果用户不继续,则退回到程序初始界面。

(7)退出系统,结束任务。

4、软件功能的验收标准

1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。

2.有严密正确的数据验证功能和数据处理功能,能够查询、插入、修改和删除学生信息。

3.系统要有一定的可靠性。

问题补充:

最佳答案

#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);

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2