C语言课程设计及任务学生信息管理系统.docx

上传人:b****7 文档编号:23821592 上传时间:2023-05-21 格式:DOCX 页数:18 大小:19.30KB
下载 相关 举报
C语言课程设计及任务学生信息管理系统.docx_第1页
第1页 / 共18页
C语言课程设计及任务学生信息管理系统.docx_第2页
第2页 / 共18页
C语言课程设计及任务学生信息管理系统.docx_第3页
第3页 / 共18页
C语言课程设计及任务学生信息管理系统.docx_第4页
第4页 / 共18页
C语言课程设计及任务学生信息管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言课程设计及任务学生信息管理系统.docx

《C语言课程设计及任务学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计及任务学生信息管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

C语言课程设计及任务学生信息管理系统.docx

C语言课程设计及任务学生信息管理系统

#include

#include〈stdlib。

h>

#include〈string。

h〉

#definePFprintf

#defineLENsizeof(structstudent)

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆定义结构体◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

structstudent

{

charNO[20];

charname[20];

intage;

charsex[3];/*’F'表示性别男,'M'表示性别女*/

charbirthday[10];

charaddress[30];

charphone[20];

chare_mail[20];

structstudent*next;//下个结点

};

typedefstructstudentSTU;

STU*head=NULL;//全局指针

intn,i=0;//全局变量

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆自定义函数◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidshow_menu();//显示菜单

voidmenu();//执行菜单

voidcreat_stu();//建立链表

voidinsert_stu();//学生信息录入

voidprint_stu();//学生信浏览

voidsearch_NO();//以学号方式查询信息

voidsearch_name();//以姓名方式查询信息

voidarrage_stu();//排序

voiddel_stu();//删除学生信息

voidrevise_stu();//修改学生信息

voidsave();//保存信息

voidmain()

creat_stu();

menu();

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆创建链表◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidcreat_stu(){

FILE*fp;

longsize;

STU*p1,*p2;

head=(STU*)malloc(sizeof(STU));

head—〉next=NULL;

if((fp=fopen(”fname。

txt","r”))==NULL)

printf("这是新表\n”);

return;

fseek(fp,0L,2);

size=ftell(fp);

if(!

size)

printf(”这是空表\n");

return;

}//开始创建链表

rewind(fp);//移动到文件首

p2=head—〉next;//找到但前位置

while(!

feof(fp))

p1=(STU*)malloc(sizeof(STU));

fscanf(fp,"%s%s%d%s%s%s%s%s\n”,p1-〉NO,p1—>name,&p1—〉age,\

p1-〉sex,p1—〉birthday,p1—〉address,p1->phone,p1->e_mail);

p1->next=NULL;

//创建节点完

if(head—>next==NULL)

head—>next=p1;

else

p2—〉next=p1;

p2=p1;

n++;

p2-〉next=NULL;

fclose(fp);

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆执行菜单◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidmenu()

intc;

show_menu();

while

(1)

{

scanf("%d",&c);

switch(c)

getchar();

case1:

insert_stu();break;

case2:

print_stu();break;

case3:

search_NO();break;

case4:

search_name();break;

case5:

del_stu();break;

case6:

revise_stu();break;

case7:

arrage_stu();break;

case0:

exit(0);

}//执行菜单选项

show_menu();

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆显示菜单◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidshow_menu()

PF(”\n”);

PF("\n※※※※※※※※※※※※※※※※※※菜单※※※※※※※※※※※※※※※※※※\n");

PF(”\t\t◆1。

输入学生信息◆\n”);

PF(”\t\t★2。

浏览学生信息★\n");

PF("\t\t◆3.以学号方式查询信息◆\n”);

PF(”\t\t★4。

以姓名方式查询信息★\n");

PF(”\t\t◆5.删除学生信息◆\n”);

PF(”\t\t★6。

修改学生信息★\n");

PF("\t\t◆7排序◆\n");

PF(”\t\t★0。

退出★\n");

PF(”※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

PF(”\n请选择\n”);

}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生信息录入◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidinsert_stu()//学生信息录入

n=0;

STU*p1=NULL,*p2=NULL;

p1=(STU*)malloc(sizeof(STU));

PF("\n※※※※※※※※※※※※※※※※※※录入学生信息※※※※※※※※※※※※※※※※※※\n");//录入学生信息

PF(”\t\t输入学生学号:

\t");

scanf("%s”,p1—〉NO);//学号

PF("\t\t输入学生姓名:

\t");

scanf(”%s",p1—>name);//姓名

PF(”\t\t输入学生年龄:

\t");

scanf(”%d",&p1-〉age);//年龄

PF(”\t\t输入学生性别:

\t”);

scanf(”%s”,p1->sex);//性别

PF(”\t\t输入学生出生年月:

\t”);

scanf("%s",p1->birthday);//出生年月

PF("\t\t输入学生地址:

\t”);

scanf("%s”,p1—>address);//地址

PF("\t\t输入学生电话:

\t”);

scanf(”%s”,p1—>phone);//电话

PF(”\t\t输入学生E-mail:

\t");

scanf(”%s",p1->e_mail);//E—mail

n++;

if(head—〉next==NULL)

head=(STU*)malloc(LEN);

head—〉next=p1;

}

else

for(p2=head;p2-〉next!

=NULL;p2=p2->next);/*找到最后的结点,然后

将增加的结点挂在它上面*/

p2-〉next=p1;

p1—〉next=NULL;

save();//保存到文件

}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生信息浏览◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidprint_stu()//学生信浏览

STU*p=NULL;

if(head==NULL)//判断链表是否为空

PF("文档中无记录!

\n”);

return;

for(p=head-〉next;p!

=NULL;p=p-〉next)//读出信息

PF("※※※※※※※※※※※※※※※※※※学生信息浏览※※※※※※※※※※※※※※※※※※\n");

PF(”\t\t学生学号:

\t%s\n",p-〉NO);

PF("\t\t学生姓名:

\t%s\n”,p->name);

PF(”\t\t学生年龄:

\t%d\n”,p-〉age);

PF(”\t\t学生性别:

\t%s\n”,p-〉sex);

PF(”\t\t学生出生年月:

\t%s\n”,p—〉birthday);

PF(”\t\t学生地址:

\t%s\n”,p—〉address);

PF(”\t\t学生电话:

\t%s\n",p->phone);

PF("\t\t学生E-mail:

\t%s\n",p—>e_mail);

PF(”\n”);}//输出信息

}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生姓名信息查找◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidsearch_name()//学生姓名信息查找

{

STU*p=NULL;

charname[20];

if(head==NULL)//判断链表是否为空

PF(”文档中无记录!

\n");

return;

}

PF(”输入学生姓名:

”);

scanf(”%s",name);

for(p=head—>next;p!

=NULL;p=p—>next)//读出信息

if(!

strcmp(p—〉name,name))

{PF(”※※※※※※※※※※※※※※※※※※您查找的学生是※※※※※※※※※※※※※※※※※※\n”);

PF("\t\t学生学号:

\t%s\n”,p—〉NO);

PF(”\t\t学生姓名:

\t%s\n”,p—〉name);

PF("\t\t学生年龄:

\t%d\n”,p—〉age);

PF(”\t\t学生性别:

\t%s\n",p—〉sex);

PF(”\t\t学生出生年月:

\t%s\n”,p—>birthday);

PF(”\t\t学生地址:

\t%s\n”,p->address);

PF("\t\t学生电话:

\t%s\n",p—>phone);

PF("\t\t学生E—mail:

\t%s\n”,p—〉e_mail);

PF(”\n”);

i=1;}

}//输出信息

if(!

i)

{PF(”无该生信息!

请查证:

");}//没找到信息时的处理

}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生学号信息查找◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidsearch_NO()//学生学号信息查找

STU*p=NULL;

charNO[20];

if(head==NULL)//判断链表是否为空

PF(”文档中无记录!

\n”);

return;

PF("请输入学生学号:

”);

scanf("%s",NO);

for(p=head->next;p!

=NULL;p=p—>next)//读出信息

{

if(!

strcmp(p—>NO,NO))

{PF(”※※※※※※※※※※※※※※※※※※您查找的学生是※※※※※※※※※※※※※※※※※※\n");

PF(”\t\t学生学号:

\t%s\n”,p—〉NO);

PF("\t\t学生姓名:

\t%s\n",p-〉name);

PF(”\t\t学生年龄:

\t%d\n",p->age);

PF(”\t\t学生性别:

\t%s\n”,p—〉sex);

PF(”\t\t学生出生年月:

\t%s\n",p—〉birthday);

PF(”\t\t学生地址:

\t%s\n",p—〉address);

PF("\t\t学生电话:

\t%s\n”,p—〉phone);

PF(”\t\t学生E-mail:

\t%s\n",p->e_mail);

PF(”\n”);

i=1;}

}//输出信息

if(!

i)

{PF("无该生信息!

请查证:

”);}//没找到信息时的处理

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆修改学生信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidrevise_stu()

{

STU*p=NULL;

if(head==NULL)//判断链表是否为空

{

PF(”文档中无记录!

\n”);

return;

charNO[20];

PF("请输入学生的学号:

\t”);

scanf(”%s”,NO);

for(p=head—〉next;p!

=NULL;p=p—〉next)

if(!

strcmp(p—〉NO,NO))//验证信息是否正确

PF(”※※※※※※※※※※※※※※※※※※您要修改的学生是※※※※※※※※※※※※※※※※※※\n”);

PF(”\t\t学生学号:

\t%s\n",p->NO);

PF(”\t\t学生姓名:

\t%s\n”,p-〉name);

PF(”\t\t学生年龄:

\t%d\n",p-〉age);

PF("\t\t学生性别:

\t%s\n”,p—>sex);

PF(”\t\t学生出生年月:

\t%s\n”,p—〉birthday);

PF(”\t\t学生地址:

\t%s\n",p—〉address);

PF("\t\t学生电话:

\t%s\n",p—〉phone);

PF(”\t\t学生E—mail:

\t%s\n”,p—>e_mail);

PF(”\n");//输出要修改信息

i=1;

PF(”※※※※※※※※※※※※※※※※※※修改学号为%s的学生※※※※※※※※※※※※※※※※※※\n”,NO);

strcpy(p-〉NO,NO);

PF("\t\t输入修改学生姓名:

\t");

scanf("%s”,p—>name);

PF(”\t\t输入修改学生年龄:

\t”);

scanf(”%d”,&p—>age);

PF(”\t\t输入修改学生性别:

\t”);

scanf(”%s",p—>sex);

PF(”\t\t输入修改学生出生年月:

\t");

scanf(”%s”,p—>birthday);

PF(”\t\t输入修改学生地址:

\t”);

scanf("%s",p-〉address);

PF(”\t\t输入修改学生电话:

\t");

scanf("%s",p—〉phone);

PF("\t\t输入修改学生E—mail:

\t”);

scanf(”%s”,p—>e_mail);

PF("\n");//输入修改信息

save();

}if(!

i)

{PF("无该生信息!

请查证:

”);}/*没找到信息时的处理*/

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆删除学生信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voiddel_stu()

STU*p=NULL;

if(head==NULL)//判断链表是否为空

PF(”文档中无记录!

\n”);

return;

else

charNO[20];

PF(”请输入学生的学号:

\t");

scanf(”%s”,NO);

for(p=head;p!

=NULL;p=p—〉next)

if(!

strcmp(p-〉next—〉NO,NO))//验证信息是否正确

{

PF(”※※※※※※※※※※※※※※※※※※您要删除的学生是※※※※※※※※※※※※※※※※※※\n”);

PF(”\t\t学生学号:

\t%s\n”,p-〉next—〉NO);

PF(”\t\t学生姓名:

\t%s\n",p—〉next—〉name);

PF(”\t\t学生年龄:

\t%d\n",p—>next->age);

PF(”\t\t学生性别:

\t%s\n”,p—〉next—>sex);

PF(”\t\t学生出生年月:

\t%s\n",p—〉next—〉birthday);

PF("\t\t学生地址:

\t%s\n",p—>next-〉address);

PF("\t\t学生电话:

\t%s\n”,p->next—〉phone);

PF(”\t\t学生E—mail:

\t%s\n”,p—>next—〉e_mail);

PF("\n”);//输出要删除的信息

i=1;

if(p-〉next—〉next)

printf("第一个\n”);

p—〉next=p—>next—〉next;

else

p—〉next=NULL;

n-—;

save();

return;

}if(!

i)

{PF(”无该生信息!

请查证:

”);//没找到信息时的处理

return;}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆按学号排序◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidarrage_stu()

STU*p1,*p2;

intin=0,j;

if(head—〉next==NULL)//首先判断

{

printf(”你还没有记录,无法排序\n”);

return;

}

printf("n=%d”,n);

p1=head—〉next;

for(in=0;in

for(j=0,p1=head—>next;j<=n-in—3;p1=p1-〉next,j++)

if(j==0)//第一次比较第一个和第二个节点信息

{

if(strcmp(p1-〉NO,p1—>next->NO))//比较p1本身和p1下一个节点

{

p2=p1—〉next;

p1—〉next=p1-〉next—〉next;

p2-〉next=p1;

head—〉next=p2;

p1=head->next;//从新给CUR赋值

/*

p1=head—〉next;

p1=p2;

错误:

如果一个变量=他前一个节点的NEXT那么不可以说把另外一个变量赋给它就可以改变它

前一个节点的NEXT他只能操作后节点!

*/

}

if(strcmp(p1—>next->NO,p1->next—>next-〉NO))//比较p1下一个和p1下两个节点

p2=p1—>next;

p1—>next=p1—>next-〉next;

p2—〉next=p1—>next—>next;

p1-〉next—〉next=p2;

if(strcmp(head-〉next-〉NO,head-〉next—>next—〉NO))//只有两个节点信息时直接比较他们两个

p1=head-〉next;

head-〉next=p1—〉next;

p1—>next=p1—〉next—〉next;

head—>next->next=p1;

if(n==2)//只有两个节点信息时把第二个节点的next赋为空

head—>next-〉next->next=NULL;

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆保存信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

voidsave()

printf("※※※※※※※※※※※※※※※※※※保存信息并结束※※※※※※※※※※※※※※※※※※\n”);

STU*p=NULL;

FILE*fp;

char*filename=”fname。

txt”;

if((fp=fopen(”fname。

txt”,”w”))==NULL)//出错检测

printf("\n打不开文件!

\n”);

return;

if(head—>next==NULL)

printf("\n信息为空!

\n");

return;

else

p=head—〉next;

while(p!

=NULL)

fprintf(fp,”%s%s%d%s%s%s%s%s\n”,p-〉NO,p-〉name,p—〉age,

p-〉sex,p-〉birthday,p—>address,p—>phone,p-〉e_mail);//存入文件

p=p—>next;

printf(”保存完毕!

\n”);

fclose(fp);

}

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

当前位置:首页 > PPT模板 > 其它模板

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

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