c语言学生管理系统简单版,一个简单学生信息管理系统的编程

这周刚刚学完了线性表,现在就动手实践我很久就想做的事了(怎么感觉到自己懒懒的呢 额, 好像似的,因为这个系统也不算难嘛  重点在于对结构体的操作)  嗯,话不多说,现在就把代码贴出来!

/********************************************************************

文件名:stu_info_mana.cpp

描述: 这个程序用于统计学生的学号,姓名,年龄,性别,专业,班级,

绩点,证书信息,并实现对其的浏览,查找,排序,增加,删除等

基本功能

作者: Anka9080

版本: 1.0

完成日期: 2014/3/22

********************************************************************/

#include

#include

#include

#define MAXSIZE 1000

/* 结构体Datatype用来存放每个学生的各种信息 */

typedef struct

{

int num;

char name[10];

int age;

char sex[3];

char course[15];

char cla[5];

float point;

char cert[20];

} Datatype;

/* 结构体List可看作一张存放许多学生信息的表,后面主要对这张表进行操作 */

typedef struct

{

Datatype data[MAXSIZE];

int len; /* 记录学生人数 */

}List;

/*录入学生信息*/

void input_stu(List *L)

{

int i;

printf("请输入学生人数:");

scanf("%d",&L->len);

printf("请依次输入\n\n");

printf("学号 姓名 年龄 性别 专业 班级 绩点 证书\n");

for(i=0;ilen;i++)

{

scanf("%d%s%d%s%s%s%f%s",&L->data[i].num,L->data[i].name,

&L->data[i].age,L->data[i].sex,L->data[i].course,

L->data[i].cla,&L->data[i].point,L->data[i].cert);

}

}

/* 打印学生信息 */

void print_stu(List *L,int i)

{

printf("%8d%8s%10d%10s%8s%8s%8.2f %s\n",L->data[i].num,L->data[i].name,

L->data[i].age,L->data[i].sex,L->data[i].course,

L->data[i].cla,L->data[i].point,L->data[i].cert);

}

/* 报错显示 */

void err_stu(void)

{

printf("\n操作不合法,请重新操作!\n\n");

}

/* 浏览学生信息 */

void display_stu(List *L)

{

int i;

printf("学号 姓名 年龄 性别 专业 班级 绩点 证书\n");

for(i=0;ilen;i++)

{

print_stu(L,i);

}

}

/* 查找学生信息 */

void search_stu(List *L)

{

int sech,num;

char name[20];

printf("按学号查找请输入1,按姓名查找请输入2:");

scanf("%d",&sech);

if(sech==1)

{

printf("\n请输入学号:");

scanf("%d",&num);

for(int i=0;ilen;i++)

{

if(num==L->data[i].num)

{

print_stu(L,i);

}

}

}

if(sech==2)

{

printf("\n请输入姓名:");

scanf("%s",name);

for(int j=0;jlen;j++)

{

if(strcmp(name,L->data[j].name)==0)

{

print_stu(L,j);

}

}

}

if(sech!=1&&sech!=2)

{

err_stu();

}

}

/* 排序 */

void sort_stu(List *L)

{

int ran;

printf("按学号绩点请输入1,按学号删除请输入2:");

scanf("%d",&ran);

if(ran==1)

{

printf("按绩点从高到低排序如下:\n\n");

Datatype temp;

for(int i=0;ilen-1;i++) /* 冒泡法对元素point进行排序 */

{

for(int j=0;jlen-1)-i;j++)

{

if(L->data[j].point < L->data[j+1].point)

{

temp=L->data[j];

L->data[j]=L->data[j+1];

L->data[j+1]=temp;

}

}

}

display_stu(L); /* 调用浏览函数对整张表打印输出 */

}

if(ran==2)

{

printf("按学号从低到高排序如下:\n\n");

Datatype temp;

for(int i=0;ilen-1;i++) /* 冒泡法对元素point进行排序 */

{

for(int j=0;jlen-1)-i;j++)

{

if(L->data[j].num > L->data[j+1].num)

{

temp=L->data[j];

L->data[j]=L->data[j+1];

L->data[j+1]=temp;

}

}

}

display_stu(L); /* 调用浏览函数对整张表打印输出 */

}

if(ran!=1&&ran!=2)

{

err_stu();

}

}

/* 插入学生信息 */

void add_stu(List *L)

{

Datatype temp;

int temp_num,t=-1;

printf("请输入该学生各项信息:\n");

printf("学号 姓名 年龄 性别 专业 班级 绩点 证书\n");

scanf("%d%s%d%s%s%s%f%s",&temp.num,temp.name,

&temp.age,temp.sex,temp.course,

temp.cla,&temp.point,temp.cert);

printf("若插入A同学前面,请输入A同学的学号:");

scanf("%d",&temp_num);

for(int i=0;ilen;i++)

{

if(temp_num==L->data[i].num)

{

t=i;

}

}

if(t==-1)

{

err_stu();

}

for(int j=L->len-1;j>=t;j--)

{

L->data[j+1]=L->data[j];

}

L->data[t]=temp;

L->len++;

}

/* 删除学生信息 */

void del_stu(List *L)

{

int del,num,t=-1;

char name[20];

printf("按学号删除请输入1,按姓名删除请输入2:");

scanf("%d",&del);

if(del==1)

{

printf("请输入学号:");

scanf("%d",&num);

for(int i=0;ilen;i++)

{

if(num==L->data[i].num)

{

t=i;

}

}

}

if(del==2)

{

printf("请输入姓名:");

scanf("%s",name);

for(int j=0;jlen;j++)

{

if(strcmp(name,L->data[j].name)==0);

{

t=j;

}

}

}

if(del!=1&&del!=2)

{

err_stu();

}

if(t==-1)

{

err_stu();

}

for(int k=t;klen-1;k++)

{

L->data[k]=L->data[k+1];

}

L->len--;

}

/* 菜单 */

void menu_stu()

{

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

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

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

printf("*2------------------------------------浏览学生信息*\n");

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

printf("*4--------------------------------------------排序*\n");

printf("*5------------------------------------插入学生信息*\n");

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

printf("*0------------------------------------退出管理系统*\n");

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

}

int main()

{

List *L;

int choice;

L=(List *)malloc(sizeof(List));

L->len=0;

printf(" 欢迎使用大学生信息查询系统 \n");

do

{

menu_stu();

printf("\n请输入你的选择:");

scanf("%d",&choice);

switch(choice)

{

case 1:printf("\n你选择了录入学生信息\n\n");

input_stu(L); break;

case 2:printf("\n你选择了浏览学生信息:\n\n");

display_stu(L); break;

case 3:printf("\n你选择了查找学生信息\n\n");

search_stu(L); break;

case 4:printf("\n你选择了对学生进行排序:\n\n");

sort_stu(L); break;

case 5:printf("\n你选择了插入学生信息\n\n");

add_stu(L); break;

case 6:printf("\n你选择了删除学生信息\n\n");

del_stu(L); break;

default: err_stu();

}

}

while(choice!=0);

free(L);

printf("感谢你的使用,祝你生活愉快!o(^▽^)o ~~\n");

return 0;

}

下面截张 程序 起始画面:

2cc91e6fa1502bc4c52870563b364db6.png

总共273行  第一次写到这个长度  作为渣渣的我要继续加油哈!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值