c语言简单的学生管理系统
A. 怎样用c语言写学生成绩管理系统
程序如下: #include
B. c语言学生信息管理系统代码
代码如下:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
typedef struct examinee //考生信息结构
{ char examno[20]; //准考证号
char name[10]; //姓名
char sex[4]; //性别
short age; //年龄
char examtype[10]; //报考科目
}ElemType;
typedef struct Node //定义链表结点
{
ElemType data; //数据域
struct Node *next; //指针域
}Node,*List,*position;
List make_empty( List L ); //创建一个带头结点的空表
int is_empty( List L ); //测试链表是否是空表
int is_last( position p, List L ); //测试当前位置是否是表尾
position make_node( position p,int n ); //创建结点并输入考生信息
void put_information( position p ); //是否输出该考生信息
void put_name_information( List L ); //输出姓名为xx的考生信息
int put_pos_information( position p ); //输出该地址考生信息
void link_to_tail( List L, position p ); //将结点连接到表尾
int ciculation_make(); //循环创建考生信息
int judge_put_all(); //是否输出所有考生信息
void put_all(List L); //输出所有考生信息。
position find( List L ); //查找第一个姓名为xx的元素并返回位置
position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置
//int judge_delete_val(); //询问是否删除考生数据
int delete_val( List L ); //删除指定考生信息并输出其信息
void menu(List L); //菜单函数
List L;
//position p;
int
main( void )
{
List L = NULL; //定义头结点指针
position p = NULL; //定义表工作指针
L = make_empty( L ); //创建空表
printf(" ★★考生报名管理程序★★
----------------------------------------
");
menu(L);
return 0;
}
//创建一个带头结点的空表
List
make_empty( List L)
{
L = ( List ) malloc (sizeof( Node ));
if(NULL == L)
{
printf("内存分配失败");
exit( 1 );
}
L->next = NULL;
//printf("空表创建成功。
");
return L;
}
//创建结点并输入考生信息
position
make_node( position p ,int n)
{
if(n) //n为1是创建结点并输入,n为0是修改
{
p = ( position ) malloc ( sizeof ( Node ));
p->next = NULL ;
}
printf("请输入考生准考证号:");
gets(p->data.examno);
printf("请输入考生姓名:");
gets(p->data.name);
do
{
printf("请输入考生性别,只能输入“男”或者“女”:");
gets(p->data.sex);
}
while( 0 != strcmp( p->data.sex, "男" ) && 0 != strcmp( p->data.sex, "女" )); //判断性别是否有误
printf("请输入考生年龄:");
scanf("%hd",&p->data.age);
getchar(); //如果把这句删掉,就“无法执行”下面的报考类别
/*下面的do while用来判断报考类别是否输入有误*/
do
{
printf("请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:");
gets(p->data.examtype);
}
while( 0 != strcmp( "英语", p->data.examtype ) && 0 != strcmp( "数学", p->data.examtype ) && 0 != strcmp( "数据结构", p->data.examtype ));
if(n)
{
printf("报名成功
");
}
else
{
printf("修改成功
");
}
return p;
}
//前插法;
void
link_to_tail( List L, position p)
{
p->next = L->next;
L->next = p;
}
//查找第一个姓名为xx的元素并返回位置
position
find( List L )
{
position p = L->next;
char name[10];
printf("请输入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p->data.name , name))
{
p=p->next;
}
return p;
}
//测试链表是否是空表
int
is_empty( List L )
{
return L->next == NULL;
}
//测试当前位置是否是表尾
int
is_last( position p, List L )
{
return p->next == NULL;
}
//输出姓名为xx的考生信息
void
put_name_information( List L )
{
position p = find(L);
if(p!=NULL)
{
printf("您要查找的考生信息:
");
printf("准考证号:%s 姓名:%s 性别:%s 年龄:%hd 报考科目:%s
",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
else
{
printf("没有您要找的学生。
");
}
}
//循环创建考生信息
int
ciculation_make()
{
int n = 2;
do
{
printf("是否继续创建考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}
//是否输出考生信息
void
put_information( position p )
{
int n=2;
do
{
printf("是否输出该考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
if(n)
{
printf("准考证号:%s 姓名:%s 性别:%s 年龄:%hd 报考科目:%s
",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
}
//是否输出所有考生信息
int
judge_put_all()
{
int n = 2;
do
{
printf("是否输出所有考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}
//输出所有考生信息
void
put_all(List L)
{
if(L->next == NULL)
{
printf("现无考生报名!
");
}
else
{
position p=L->next;
while( p != NULL )
{
printf("准考证号:%s 姓名:%s 性别:%s 年龄:%hd 报考科目:%s
",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
p=p->next;
}
}
//getchar();
}
//询问是否删除考生数据
int
judge_delete_val()
{
int n = 2;
do
{
printf("是否要删除某个考生数据?是请输入“1”,不是输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}
//查找第一个姓名为xx的元素并返回其直接前驱的位置
position
find_previous( List L )
{
position q = L;
position p = L->next;
char name[10];
printf("请输入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p->data.name , name))
{
q=p;
p=p->next;
}
if( p != NULL )
{
return q;
}
else
return p;
}
//删除指定考生信息并输出其信息
int
delete_val(List L)
{
int n=2;
position q=NULL;
position p=find_previous( L ); //返回考生信息地址
if( NULL == p )
{
printf("你要删除的考生不存在
");
return 0;
}
else
{
q = p->next;
p->next = q->next;
printf("删除成功。
删除的考生信息为:
");
printf("准考证号:%s 姓名:%s 性别:%s 年龄:%hd 报考科目:%s
",q->data.examno,q->data.name,q->data.sex,q->data.age,q->data.examtype);
free(q);
return 1;
}
}
//输出该地址考试信息
int
put_pos_information( position p )
{
if(p != NULL )
{
printf("准考证号:%s 姓名:%s 性别:%s 年龄:%hd 报考科目:%s
",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
return 1;
}
else
{
printf("没有您要查找的学生。");
return 0;
}
}
//菜单函数
void
menu(List L)
{
printf(" a. 考生报名入口
");
printf(" b. 查询考生信息
");
printf(" c. 修改考生信息
");
printf(" d. 删除考生信息
");
printf(" e. 全部考生信息
");
printf(" f. 程序作者信息
");
printf(" g. 退出程序
");
char n='h';
while(n != 'g')
{
do //确定正确输入
{
printf("请通过字母序号选择功能:");
n = getchar();
getchar();
putchar('
');
if( n < 'a' || n > 'g')
{
printf("错误的字母序号。
");
}
}
while( n < 'a' || n > 'g' );
switch (n)
{
case 'a':
{
printf("请输入报名考生信息:
");
position p = make_node( p, 1 ); //创建新结点
link_to_tail( L, p ); //将新结点连接到表上
put_information( p ); //是否输出该考生信息
putchar('
');
}
break;
case 'b':
{
put_name_information( L );
putchar('
');
}
break;
case 'c':
{
int n=0;
position p = NULL;
printf("您正在进行修改操作。
");
p = find(L);
n = put_pos_information( p );
if(n)
{
make_node( p , 0 );
put_information( p ); //是否输出该考生信息
}
putchar('
');
}
break;
case 'd':
{
printf("您正在进行删除操作。
");
delete_val( L );
putchar('
');
}
break;
case 'e':
{
put_all( L );
putchar('
');
}
break;
case 'f':
{
printf(" 修改日期 版本号 修改人 修改内容
");
printf(" --------------------------------------------------------
");
printf(" 2018.6.19 v2.0 陈百川 增加主菜单
");
printf(" 2018.6.23 v3.0 陈百川 增加生成文件功能
");
printf(" 该版本号为v2.0
");
putchar('
');
}
break;
default:
break;
}
}
printf(" 感谢本次使用,祝您生活愉快。");
getch();
}
(2)c语言简单的学生管理系统扩展阅读:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1]目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
参考资料:
网络——C语言
C. 求一个C语言的学生宿舍管理信息系统。简单点的,不用太长
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<process.h>
#include<conio.h>
struct Inf //宿舍信息
{
char I_class[20]; //班级信息
char I_num[20]; //学号
char I_name[20]; //姓名
char I_room[20]; //宿舍号
char I_score[20]; //评分
}A[100];
int N; //宿舍信息数量
void tool() //信息处理函数
{char a[20],s;
int b,i=0,j=1;
system("cls"); //选择要处理信息分类
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf(" 提取信息 \n\n");
printf(" 1.按班 级\n");
printf(" 2.按学 号\n");
printf(" 3.按姓 名\n");
printf(" 4.按宿舍号\n");
printf(" 5.按评 分\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='1'&s<='5')break;
}
b=s-48;
switch(b)
{case 1:printf("请输入(班 级):");scanf("%s",a);break;
case 2:printf("请输入(学 号):");scanf("%s",a);break;
case 3:printf("请输入(姓 名):");scanf("%s",a);break;
case 4:printf("请输入(宿舍号):");scanf("%s",a);break;
case 5:printf("请输入(评 分):");scanf("%s",a);break;
}
while(i<N) //提取检索到得第一个位置的要处理信息
{switch(b)
{case 1:j=strcmp(a,A[i].I_class);break;
case 2:j=strcmp(a,A[i].I_num);break;
case 3:j=strcmp(a,A[i].I_name);break;
case 4:j=strcmp(a,A[i].I_room);break;
case 5:j=strcmp(a,A[i].I_score);break;
}
if(j==0)break;i++;
}
if(j==0)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n班 级:%s",A[i].I_class);
printf("\n学 号:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍号:%s",A[i].I_room);
printf("\n评 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n [1修改] [2删除] [3返回] ");
while(1)
{s=getch();if(s>='1'&&s<='3')break;}
if(s=='1') //修改操作
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n请输入班 级:");scanf("%s",A[i].I_class);getchar();
printf("请输入学 号:");scanf("%s",A[i].I_num);getchar();
printf("请输入姓 名:");scanf("%s",A[i].I_name);getchar();
printf("请输入宿舍号:");scanf("%s",A[i].I_room);getchar();
printf("请输入评 分:");scanf("%s",A[i].I_score);getchar();
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("修改完成,按任意键返回......");
getch();
}
if(s=='2') //删除操作
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n\n\n\n删除完毕,按任意键返回......");
getch();
for(j=i;j<N;j++)
A[j]=A[j+1];
N--;
}
}
else
{printf("无此信息记录,按任意键返回......");getch();}
}
void input() //添加信息函数
{char a;
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n请输入班 级:");scanf("%s",A[N].I_class);getchar();
printf("请输入学 号:");scanf("%s",A[N].I_num);getchar();
printf("请输入姓 名:");scanf("%s",A[N].I_name);getchar();
printf("请输入宿舍号:");scanf("%s",A[N].I_room);getchar();
printf("请输入评 分:");scanf("%s",A[N].I_score);getchar();N++;
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
printf("\n输入完成,是否继续输入[y\\n]");
while(1)
{a=getch();if(a=='n'||a=='y')break;}
if(a=='y')input();
}
void output() //显示信息函数
{int i;
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
for(i=0;i<N;i++)
{
printf("\n班 级:%s",A[i].I_class);
printf("\n学 号:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍号:%s",A[i].I_room);
printf("\n评 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
}
printf("\n按任意键返回......");
getch();
}
void admin() //教师界面
{char a;
while(1)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n");
printf(" @教师界面[信息数量%d]@\n\n\n",N);
printf(" 1.添加信息 \n");
printf(" 2.处理信息 \n");
printf(" 3.显示信息 \n\n");
printf(" 0.退 出 \n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{a=getch();if(a>='0'&&a<='3')break;}
if(a=='0')break;
switch(a-48)
{case 1:input();break;
case 2:tool();break;
case 3:output();break;
}
}
}
void guest()
{char a[20],s;
int b,i,j=1;
while(1)
{i=0;
system("cls"); //选择要处理信息分类
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf(" 学生查询界面 \n\n");
printf(" 1.按班 级\n");
printf(" 2.按学 号\n");
printf(" 3.按姓 名\n");
printf(" 4.按宿舍号\n");
printf(" 5.按评 分\n\n");
printf(" 0.退 出\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='0'&s<='5')break;
}
b=s-48;
if(b==0)break;
switch(b)
{case 1:printf("请输入(班 级):");scanf("%s",a);break;
case 2:printf("请输入(学 号):");scanf("%s",a);break;
case 3:printf("请输入(姓 名):");scanf("%s",a);break;
case 4:printf("请输入(宿舍号):");scanf("%s",a);break;
case 5:printf("请输入(评 分):");scanf("%s",a);break;
}
while(i<N) //提取检索到得第一个位置的要处理信息
{switch(b)
{case 1:j=strcmp(a,A[i].I_class);break;
case 2:j=strcmp(a,A[i].I_num);break;
case 3:j=strcmp(a,A[i].I_name);break;
case 4:j=strcmp(a,A[i].I_room);break;
case 5:j=strcmp(a,A[i].I_score);break;
}
if(j==0)break;i++;
}
if(j==0)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n班 级:%s",A[i].I_class);
printf("\n学 号:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍号:%s",A[i].I_room);
printf("\n评 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n按任意键返回......");
getch();
}
else
{printf("\n要查询的信息不存在!");
printf("\n按任意键返回......");
getch();
}
}
}
int user() //用户登录菜单(返回1为教师,返回2为学生)
{char s;
int i;
FILE *fp;
char pw[5];
char pwi[5];
while(1)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n");
printf(" 宿舍管理系统 \n\n\n");
printf(" --1.教师登陆-- \n");
printf(" --2.学生登陆-- \n");
printf(" --3.修改密码-- \n\n\n");
printf(" --0.退 出-- \n\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='0'&&s<='3')break;
}
s-=48;
if(s==0){system("cls");printf("\n\n\n\n\n @谢谢使用@");getch();exit(0);}
if(s==2)return 2; //进入学生界面点
if(s==1||s==3)
{if((fp=fopen("key.dat","r"))==NULL)
{system("cls");printf("\n\n\n 文件读取错误!程序终止!");getch();exit(0);}
fread(pw,5,1,fp);
pw[4]=0;
fclose(fp);
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n\n\n\n");
printf("请输入4位管理员密码:");
for(i=0;i<4;i++)
{pwi[i]=getch();putchar('*');
}
pwi[4]=0;
if(strcmp(pwi,pw))
{printf("\n密码错误!按任意键返回......");getch();}
else
if(s==3) //密码修改执行处
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n\n\n\n");
printf("请输入4位新密码:");
for(i=0;i<4;i++)
{pwi[i]=getch();putchar('*');
}
pwi[4]=0;
if((fp=fopen("key.dat","w"))==NULL)
{system("cls");printf("\n\n\n 文件写入错误!程序终止!");getch();exit(0);}
fwrite(pwi,5,1,fp);
fclose(fp);
printf("\n密码修改成功,按任意键返回......");
getch();
}
else return 1; //进入教师界面点
}
}
}
void main() //主函数
{FILE *fp;
if((fp=fopen("ss.dat","r"))==NULL) //读取文件中的数据
{system("cls");printf("\n\n\n 文件读取错误!程序终止!");getch();exit(0);}
fread(&N,sizeof(int),1,fp);
fread(A,sizeof(struct Inf),100,fp);
fclose(fp);
if(user()==1)admin(); //调用用户操作函数
else guest();
if((fp=fopen("ss.dat","w"))==NULL) //存储数据到文件
{system("cls");printf("\n\n\n 文件写入错误!程序终止!");getch();exit(0);}
fwrite(&N,sizeof(int),1,fp);
fwrite(A,sizeof(struct Inf),100,fp);
fclose(fp);
system("cls");
printf("\n\n\n\n\n @谢谢使用@");
getch();
}
D. 如何用c语言制作一个学生信息管理系统,要求以文件形式保存
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//链表结点结构体声明
typedef struct subjects
{
char name[20];
float score;
}sub;
typedef struct student
{
int num;
char name[20];
sub subject[3];
struct student* next;
}stu,*pstu;
#define SIZE sizeof(stu)
//函数申明
pstu LoadInfo();
void PrintMenu();
pstu AddStu(pstu );
pstu DeleStu(pstu );
pstu RwrStu(pstu );
void FindStu(pstu , char );
void Count(pstu ,char * ,float ,float );
void Rank(pstu ,char * );
void SaveQuit(pstu );
//创建菜单,进入选择循环
while(1)
{
PrintMenu();
printf("请输入您的选择编号:");
scanf("%d",&n);
getchar();
switch(n)
{
case 1:
{
system("cls");
j=0;
while(4!=j)
{
printf("欢迎进入信息管理版块! ");
printf("