#include <stdio.h>
#include <stdlib.h>
#include <string.h> typedef struct student
{
int id;
char name[];
int age;
char sex;
char birthday[];
char address[];
char phone[];
char email[];
struct student *next;
}student; student *head = NULL;
int length;
void create()
{
student *p1,*p2;
length = ;
p1 = (student *)malloc(sizeof(student));
p1->id = -;
if(head == NULL)
{
head = p1;
}
printf("请输入学生的学号、姓名、年龄、性别、出生年月、地址、电话、电子邮箱:\n");
while()
{
p2 = (student *)malloc(sizeof(student));
scanf("%d %s %d %c %s %s %s %s",&p2->id,p2->name,&p2->age,&p2->sex,&p2->birthday,&p2->address,p2->phone,p2->email);
if(p2->id == )
{
printf("链表创建完成!\n");
break;
}
length ++;
p1->next = p2;
p2->next = NULL;
p1 = p1->next;
}
return ;
} void LoadStudentInFromFile()
{
student *p,*q;
int c;
FILE* f;
f = fopen("input.txt","rb");
if(f == NULL)
{
return ;
}
fseek(f,,SEEK_SET);
p = (student *)malloc(sizeof(student));
p->next = NULL;
head = p;
while(!feof(f))
{
c = fgetc(f);
if(c != -)
{
fseek(f,-,SEEK_CUR);
}
else
{
return ;
}
q = (student *)malloc(sizeof(student));
fscanf(f,"%d",&q->id);
fscanf(f,"%s",q->name);
fscanf(f,"%d",&q->age);
fscanf(f,"%c",&q->sex);
fscanf(f,"%s",q->birthday);
fscanf(f,"%s",q->address);
fscanf(f,"%s",q->phone);
fscanf(f,"%s",q->email);
q->next = NULL;
p->next = q;
p = p->next;
length ++;//链表长度
}
} void ModifyStudentInfo()
{
student *p = head->next;
int num;
printf("请输入要修改的学生的学号:");
scanf("%d",&num);
while(p != NULL)
{
if(p->id == num)
{
printf("修改前,学号为%d的学生信息如下:\n",num);
printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);
printf("请输入学生的新电话:");
getchar();
gets(p->phone);
printf("请输入学生的新地址:");
gets(p->address);
printf("修改后,学号为%d的学生信息如下:\n",num);
printf("%d %s %d %c %s %s %s %s",&p->id,p->name,&p->age,p->sex,p->birthday,p->address,p->phone,p->email);
return ;
}
p = p->next;
}
if(p == NULL)
{
printf("该学号不存在!\n");
return ;
}
}
void display()
{
student *p = head->next;
printf("链表中所有的学生信息如下:\n");
while(p != NULL)
{
printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);
printf("\n");
p = p->next;
}
return ;
} void search()
{
int num,x;
char name[];
student *p = head->next;
printf("请选择查询方式:\n");
printf("1、按学号查询\t2、按姓名查询\n");
scanf("%d",&x);
if(x == )
{
printf("需要查找的学生学号为:");
scanf("%d",num);
while(p != NULL)
{
if(p->id == num)
{
printf("学号为%d的学生信息如下:\n",num);
printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);
return ;
}
p = p->next;
}
if(p == NULL)
{
printf("无此记录!\n");
}
}
else if(x == )
{
printf("需要查找的学生姓名为:");
getchar();
gets(name);
p = head->next;
while(p != NULL)
{
if(strcmp(p->name,name) == )
{
printf("学生姓名为%s的学生信息如下:\n",name);
printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);
return ;
}
p = p->next;
}
if(p == NULL)
{
printf("无此记录!\n");
}
}
return ;
} void insert()
{
int num,i;
student *p,*q;
p = head; printf("请输入你要插入的位置:");
scanf("%d",&num);
if(num > length)
{
printf("找不到插入的位置\n");
return ;
}
else
{
printf("请输入你要插入的学生的信息:\n");
q = (student *)malloc(sizeof(student));
scanf("%d %s %d %c %s %s %s %s",&q->id,q->name,&q->age,&q->sex,q->birthday,q->address,q->phone,q->email);
while(p != NULL)
{
if(p->id == q->id)
{
printf("该学号已经存在,无法插入!\n");
return ;
}
p = p->next;
}
p = head;
for(i=; i<num; ++i)
{
p = p->next;
}
q->next = p->next;
p->next = q;
length ++;
printf("插入成功!\n");
return ;
}
} void Delete()
{
int num;
student *p,*q;
q = head;
p = head->next;
printf("请输入要删除的学生的学号:\n");
scanf("%d",&num); while(p != NULL)
{
if(p->id == num)
{
q->next = p->next;
free(p);
length --;
printf("删除成功!\n");
return ;
}
p = p->next;
q = q->next;
}
if(p == NULL)
{
printf("找不到要删除的编号!\n");
return ;
}
} void menu()
{
printf("___________________________________________________\n");
printf("| 学生信息管理系统 |\n");
printf("| 0、退出系统 |\n");
printf("| 1、录入学生信息 |\n");
printf("| 2、建立链表 |\n");
printf("| 3、显示链表 |\n");
printf("| 4、查找链表中的某个元素 |\n");
printf("| 5、删除链表中指定学号的结点 |\n");
printf("| 6、指定位置上插入一个新结点 |\n");
printf("| 7、修改学生信息 |\n");
printf("__________________________________________________\n");
return ;
} int main(void)
{
int a;
menu();
while()
{
printf("请输入相应的功能:");
scanf("%d",&a);
switch(a)
{
case :
return ;
case :
LoadStudentInFromFile();
menu();
break;
case :
create();
menu();
break;
case :
if(head)
{
display();
menu();
}
else
{
printf("链表为空,请先建立链表!\n");
menu();
}
break;
case :
if(head)
{
search();
menu();
}
else
{
printf("链表为空,请先建立链表!\n");
menu();
}
break;
case :
if(head)
{
Delete();
menu();
}
else
{
printf("链表为空,请先建立链表!\n");
menu();
}
break;
case :
if(head)
{
insert();
menu();
}
else
{
printf("链表为空,请先建立链表!\n");
menu();
}
break;
case :
if(head)
{
ModifyStudentInfo();
menu();
}
else
{
printf("链表为空,请先建立链表!\n");
menu();
}
break;
default:
break;
}
}
system("pause");
return ;
}

学生信息管理系统(C语言)的更多相关文章

  1. 学生信息管理系统(c语言)

    ①注意: 程序中使用了sleep()函数.system()函数 关于 sleep() 函数 sleep() 函数的头文件和用法会因环境的不同而有所不同. 具体见-sleep()函数功能及用法 关于sy ...

  2. C语言练习-学生信息管理系统

    题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...

  3. 【转载】C语言综合实验1—学生信息管理系统

    http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...

  4. C语言小练习之学生信息管理系统

    C语言小练习之学生信息管理系统 main.c文件   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  5. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  6. 基于数组或链表的学生信息管理系统(小学期C语言程序实训)

    1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...

  7. 【Python3.6+Django2.0+Xadmin2.0系列教程之二】学生信息管理系统(入门篇)

    上一篇我们已经创建好了一个Xadmin的基础项目,现在我们将在此基础上构建一个同样很基础的学生信息管理系统. 一.创建模型 模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段, ...

  8. 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...

  9. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

随机推荐

  1. 安装和使用ZFS

    一.安装和使用ZFS Centos7上安装和使用ZFS:https://blog.csdn.net/linuxnews/article/details/51286358

  2. 【Assembly】NO.70.EBook.7.Assembly.1.001-【汇编语言 第3版 张爽】- 基础知识

    1.0.0 Summary Tittle:[Assembly]NO.70.EBook.7.Assembly.1.001-[汇编语言 第3版 张爽]- 基础知识 Style:Assembly Serie ...

  3. 二、认识Xcode(第一个工程:Hello world)

    到一个未知的世界去冒险,怎么可以不熟悉自己的武器装备呢?况且我们现在也就Xcode这一样装备,攻击防御全靠它,要是关键时刻使不出技能,那不gg了? 所以接下来我们会大致介绍Xcode的常用界面,并在最 ...

  4. i++与++i区别

    ++i:先执行i加1,再执行语句; i++:先执行语句,再i加1; 后置自操作:先把自己所保存的值留下来,然后改变自己,自己给别人的值是原来的值: 前置自操作:先把自己改变,然后把改变后的值给别人. ...

  5. 查看容器IP地址

    我们可以通过以下命令查看容器运行的各种数据 docker inspect 容器名称(容器ID)  也可以直接执行下面的命令直接输出IP地址 docker inspect --format='{{.Ne ...

  6. Java数据库连接技术

    使用mysql作为开发数据库,创建user表.创表语句如下: create database learn; use learn; CREATE TABLE user(id INT PRIMARY KE ...

  7. K8S学习笔记之ETCD启动失败注意事项

    最近搭建K8S集群遇到ETCD的报错,报错信息如下,一定要关闭防火墙.iptables和SELINUX,三个都要关闭!! Mar 26 20:39:24 k8s-m1 etcd[6437]: heal ...

  8. 搭建一个Web Server站点

    题:搭建一个Web Server站点.安装web服务,并在本地创建index.html测试 1.安装http服务 yum -y install httpd 2.进入网站目录 cd /var/www/h ...

  9. NOIP 2017 列队 - Splay - 树状数组

    题目传送门 传送点I 传送点II 题目大意 (家喻户晓的题目应该不需要大意) (我之前咋把NOIP 2017打成了NOIP 2018,好绝望) Solution 1 Splay 每行一颗Splay,没 ...

  10. container(容器),injection(注入)

    1.container为什么会出现? 在书写程序的时候,我们常常需要对大量的对象引用进行管理.为了实现有效的归类管理,我们常常将同类的引用放置在同一数据容器中.由于数据容器中存放了我们随时可能需要使用 ...