学生管理系统C语言编程.docx

上传人:b****4 文档编号:12106967 上传时间:2023-04-17 格式:DOCX 页数:44 大小:23.60KB
下载 相关 举报
学生管理系统C语言编程.docx_第1页
第1页 / 共44页
学生管理系统C语言编程.docx_第2页
第2页 / 共44页
学生管理系统C语言编程.docx_第3页
第3页 / 共44页
学生管理系统C语言编程.docx_第4页
第4页 / 共44页
学生管理系统C语言编程.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

学生管理系统C语言编程.docx

《学生管理系统C语言编程.docx》由会员分享,可在线阅读,更多相关《学生管理系统C语言编程.docx(44页珍藏版)》请在冰豆网上搜索。

学生管理系统C语言编程.docx

学生管理系统C语言编程

/******头文件*******/

#include

#include

#include

#defineLENstuInforsizeof(structstuInfor)

#defineLENstuMarksizeof(structstuMark)

/******a函数声明********/

structstuInfor

{

charname[10];

longstunum;

charsex;

charschool[30];

charbirthday[10];

charstuclass[20];

structstuInfor*next;

};

voidstuManage();

voidfileSave(structstuInfor*head);

voidfindStudentMessage(structstuInfor*head);

voidfindOneStuInfor(structstuInfor*head);

voidfindclassStuInfor(structstuInfor*head);

voidfindSchoolStuInfor(structstuInfor*head);

voidfindAllStuInfor(structstuInfor*head);

voidstuMarkManage();

structstuInfor*insertStudentMessage(structstuInfor*head);

structstuInfor*changeStudentMessage(structstuInfor*head);

structstuInfor*changeOneStuMessage(structstuInfor*p);

structstuInfor*deleteStudentMessage(structstuInfor*head);

structstuInfor*deleteOneStuInfor(structstuInfor*head);

structstuInfor*deleteClassStuInfor(structstuInfor*head);

structstuInfro*deleteSchoolStuInfor(structstuInfor*head);

structstuInfor*readFile();

/*********b函数声明********/

structstuMark

{

longintstunumb;

charnameb[10];

floatchinese;

floatmath;

floatenglish;

floataverage;

structstuMark*nextb;

};

voidstuMarkManage();

voidfileSaveMark(structstuMark*headb);

voidfindStudentMark(structstuMark*headb);

voidfindOneStuMark(structstuMark*headb);

voidfindAllStuMark(structstuMark*headb);

structstuMark*insertStudentMark(structstuMark*headb);

structstuMark*changeStudentMark(structstuMark*headb);

structstuMark*changeOneStuMark(structstuMark*q);

structstuMark*deleteStudentMark(structstuMark*headb);

structstuMark*deleteOneStuMark(structstuMark*headb);

structstuMark*deleteSchoolStuMark(structstuMark*headb);

structstuMark*readFileMark();

/*******主函数******/

voidmain()

{

chari;/*用户选择的菜单*/

system("cls");

printf("****************************************\n");

printf("*学生信息管理系统*\n");

printf("*1学生基本信息管理*\n");

printf("*2学生成绩信息管理*\n");

printf("*3退出*\n");

printf("****************************************\n");

printf("请选择:

\n");

while(i=getchar())

{

switch(i)

{

case'1':

system("cls");stuManage();break;/*如果用户选择1,则跳到学生基本信息管理的页面*/

case'2':

system("cls");stuMarkManage();break;/*如果用户选择2,则跳到学生成绩信息管理页面*/

case'3':

exit(0);/*如果用户选择3,则推出程序*/

}

}

}

/*********子函数a*******/

voidstuManage()

{

charc;/*定义变量*/

structstuInfor*head;

head=readFile();/*链表*/

getchar();

while

(1)

{

system("cls");

printf("**************************************\n");

printf("*1录入学生信息*\n");

printf("*2更改学生信息*\n");

printf("*3查找学生信息*\n");

printf("*4删除学生信息*\n");

printf("*5退出*\n");

printf("**************************************\n");

printf("请选择:

(r/R返回主界面)\n");

c=getchar();

switch(c)

{

case'1':

head=insertStudentMessage(head);break;/*添加学生信息*/

case'2':

head=changeStudentMessage(head);break;/*更改学生信息*/

case'3':

findStudentMessage(head);break;/*查找学生信息*/

case'4':

head=deleteStudentMessage(head);break;/*删除学生信息*/

case'5':

exit(0);/*退出*/

case'r':

case'R':

main();

}

}

}

/*********a1********/

structstuInfor*insertStudentMessage(structstuInfor*head)

{

structstuInfor*p1,*p2,*p0;/*p0为存储输入的结构体,p1为移动链表指针p2为当前链表位置指针*/

charc;/*用于判断是否返回*/

p1=p2=NULL;

while

(1)

{

system("cls");

p0=(structstuInfor*)malloc(LENstuInfor);

printf("提示:

性别男输入m,女输入w\n\t生日格式19900425\n");

printf("\n请输入该学生的信息:

\n学号\t姓名\t性别\t出生日期\t班级\t学院(系)\n");

scanf("%ld\t%s\t%c\t%s\t%s\t%s",&p0->stunum,p0->name,&p0->sex,p0->birthday,p0->stuclass,p0->school);

getchar();

if(head==NULL)/*如果头结点为空*/

{

head=p0;/*把输入的节点赋给头结点*/

head->next=NULL;/*头结点的下一个节点为空*/

}

else/*如果头结点不为空*/

{

p2=p1=head;/*把头结点赋给移动的指针*/

while(p0->stunum>=p2->stunum&&p2->next!

=NULL)/*当插入的学生学号比现在的大时就向后移动指针*/

{

p1=p2;

p2=p2->next;/*两个指针均向后移动*/

}

if(p0->stunumstunum)

{

if(head==p2)

{

head=p0;

}

else

{

p1->next=p0;

}

p0->next=p2;/*把p0接在链表上*/

}

else

{

p2->next=p0;

p0->next=NULL;

}

}

printf("是否继续(y/n)?

\t");

c=getchar();

if(c=='y'||c=='Y')

{

;

}

else

{

getchar();/*读取系统缓冲字符*/

printf("是否保存到文件(y/n)?

\n");/*询问是否保存输入的学生信息*/

c=getchar();

if(c=='y'||c=='Y')

{

fileSave(head);

returnhead;

}

else

{

stuManage();

}

}

}

returnhead;

}

/************a11***********/

voidfileSave(structstuInfor*head)

{

structstuInfor*p=head;

FILE*fp;

p=head;

if(head==NULL)

{

printf("学生信息为空,无需保存!

");

}

else

{

if((fp=fopen("studentInfromation.txt","w"))==NULL)

{

printf("打开文件失败");

}

else

{

while(p!

=NULL)

{

if((fwrite(p,LENstuInfor,1,fp))!

=1)

printf("保存学生信息失败");

p=p->next;

}

}

fclose(fp);

}

}

/**************a2***********/

structstuInfor*changeStudentMessage(structstuInfor*head)

{

structstuInfor*p;

charselect;/*记录用户选择*/

longstunum;/*用于存储用户输入得学号*/

p=head;

if(p==NULL)

{

printf("学生基本信息记录为空,无需更改!

!

!

");

returnhead;

}

else

{

while

(1)/*用于判断是否继续更改*/

{

system("cls");

printf("请输入要更改信息的学生的学号:

\n");

getchar();

scanf("%ld",&stunum);/*输入用户要更改学生的学生的学号*/

while(p!

=NULL&&stunum!

=p->stunum)

{

p=p->next;

}

if(stunum==p->stunum)

{

p=changeOneStuMessage(p);/*调用函数changeOneStuMessage()更改一个学生的信息,未保存*/

}

else

{

printf("您输入的学号有误!

!

!

\n");

}

printf("是否继续?

(y/n)\n");

printf("请选择:

\n");

getchar();

select=getchar();

if(select=='y'||select=='Y')

{

;

}

else

{

fileSave(head);

break;

}

}

}

returnhead;

}

/***********a21**********/

structstuInfor*changeOneStuMessage(structstuInfor*p)

{

charselect;/*记录用户选择*/

printf("学号姓名性别出生日期班级\t\t学校(系)\n");

if(p->sex=='m')

{

printf("%-10ld%-10s男%-10s%-20s%-20s\n",p->stunum,p->name,p->birthday,p->stuclass,p->school);

}

else

{

printf("%-10ld%-10s女%-10s%-20s%-20s\n",p->stunum,p->name,p->birthday,p->stuclass,p->school);

}

system("pause");

printf("请输入您要更改的选项:

\n");

printf("1、姓名\t2、性别\t3、出生日期\t4、班级\t5、学院(系)\n");

printf("R/r返回\n");

printf("`````````````````````\n");

printf("请选择:

");

getchar();

select=getchar();

system("cls");/*清屏*/

getchar();

switch(select)

{

case'1':

{

printf("请输入更正后的姓名:

\n");

scanf("%s",p->name);

break;

}

case'2':

{

printf("请输入更正后的性别(男(请输入m)/女(请输入w):

\n");

scanf("%c",&p->sex);

break;

}

case'3':

{

printf("请输入更正后的出生年月:

(如19900425)\n");

scanf("%s",p->birthday);

break;

}

case'4':

{

printf("请输入更正后的班级:

\n");

scanf("%s",p->stuclass);

break;

}

case'5':

{

printf("请输入更正后的学院(系):

\n");

scanf("%s",p->school);

break;

}

case'r':

case'R':

{

returnp;

}

}

returnp;

}

/**********a3*********/

voidfindStudentMessage(structstuInfor*head)/*用于查找学生的信息*/

{

intselect;/*用于用户输入选择的功能*/

while

(1)

{

getchar();

system("cls");

printf("1查找一个学生的信息\n");

printf("2查找一个班学生的信息\n");

printf("3查找一个学院(系)的学生的信息\n");

printf("4查找所有学生的记录\n");

printf("5返回\n");

printf("6退出\n");

printf("``````````````````````````````````````\n");

printf("请输入您的选择:

\n");

scanf("%d",&select);

switch(select)

{

case1:

findOneStuInfor(head);break;/*调用函数查找一个学生的信息*/

case2:

findclassStuInfor(head);break;/*调用函数查找班学生的信息*/

case3:

findSchoolStuInfor(head);break;/*调用函数查一个学院(系)的所有学生信息*/

case4:

findAllStuInfor(head);break;/*查找所有学生的记录*/

case5:

return;/*返回查找的函数*/

case6:

exit(0);/*退出系统*/

}

}

}

/*************a31*********/

voidfindOneStuInfor(structstuInfor*head)

{

structstuInfor*p=head;/*定义移动链表指针*/

longstunum;/*用于记录学号*/

system("cls");

printf("请输入您要查询的学生的学号:

\n");

scanf("%ld",&stunum);

printf("学号姓名性别出生年月班级学校(系)\n");

while(p!

=NULL)/*当学生记录不为空时*/

{

if(stunum==p->stunum)

{

if(p->sex=='m')

{

printf("%-10ld%-10s男%-10s%-20s%-20s\n",p->stunum,p->name,p->birthday,p->stuclass,p->school);

}

else

{

printf("%-10ld%-10s女%-10s%-20s%-20s\n",p->stunum,p->name,p->birthday,p->stuclass,p->school);

}

}

p=p->next;

}

system("pause");

}

/***********a32*********/

voidfindclassStuInfor(structstuInfor*head)

{

structstuInfor*p=head;/*定义移动链表指针*/

charstuclass[20];/*用于记录学号*/

system("cls");

printf("请输入您要查询的班级:

\n");

getchar();

gets(stuclass);

system("cls");

printf("学号姓名性别出生年月班级学校(系)\n");

while(p!

=NULL)/*当学生记录不为空时*/

{

if(strcmp(stuclass,p->stuclass)==0)

{

if(p->sex=='m')

{

printf("%-10ld%-10s男%-10s%-20s%-20s\n",p->stunum,p->name,p->birthday,p->stuclass,p->school);

}

else

{

printf("%-10ld%-10s女%-10s%-20s%-20s\n",p->stunum,p->name,p->birthday,p->stuclass,p->school);

}

}

p=p->next;

}

system("pause");

}

/***************a33*********/

voidfindSchoolStuInfor(structstuInfor*head)

{

structstuInfor*p=head;/*定义移动链表指针*/

charschool[30];/*用于记录学号*/

system("cls");

printf("请输入您要查询的学院(系):

\n");

getchar();

gets(school);

printf("学号姓名性别出生年月班级学校(系)\n");

while(p!

=NULL)/*当学生记录不为空时*/

{

if(strcmp(school,p->stuclass)==0)

{

if(p->sex=='m')

{

printf("%-10ld%-10s男%-10s%-20s%-20s\n",p->stunum,p->name,p->birthday,p->stuclass,p->school);

}

else

{

printf("%-10ld%-10s女%-10s%-20s%-20s\n",p->stunum,p->name,p->birthday,p->stuclass,p->school);

}

}

p=p->next;

}

system("pause");

}

/************a34********/

voidfindAllStuInfor(structstuInfor*head)

{

structstuInfor*p=head;/*定义移动链表指针*/

system("cls");

printf("学号姓名性别出生年月班级学校(系)\n");

while(p!

=NULL)/*当学生记录不为空时*/

{

if(p->sex=='m')

{

printf("%-10ld%-10s男%-10s%-

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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