学生信息管理系统(C语言)
- #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语言)的更多相关文章
- 学生信息管理系统(c语言)
①注意: 程序中使用了sleep()函数.system()函数 关于 sleep() 函数 sleep() 函数的头文件和用法会因环境的不同而有所不同. 具体见-sleep()函数功能及用法 关于sy ...
- C语言练习-学生信息管理系统
题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...
- 【转载】C语言综合实验1—学生信息管理系统
http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...
- 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 ...
- 大一C语言结课设计之《学生信息管理系统》
第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...
- 基于数组或链表的学生信息管理系统(小学期C语言程序实训)
1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...
- 【Python3.6+Django2.0+Xadmin2.0系列教程之二】学生信息管理系统(入门篇)
上一篇我们已经创建好了一个Xadmin的基础项目,现在我们将在此基础上构建一个同样很基础的学生信息管理系统. 一.创建模型 模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段, ...
- 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】
资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...
- 基于数据库MySQL的简易学生信息管理系统
通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...
随机推荐
- centos----------centos下安装谷歌浏览器
1.首先你已经安装了带有可视化界面的centos系统. 2.打开里面自带的一个浏览器,输入网址 http://chrome.richardlloyd.org.uk/install_chrome.sh ...
- #WEB安全基础 : HTTP协议 | 0x7 学会使用wireshark分析数据包
wireshark是开源,免费,跨平台的抓包分析工具 我们可以通过wireshark学习HTTP报文和进行抓包分析,在CTF中的流量分析需要用到抓包 1.下载和安装 这是wireshark的官网 ht ...
- Java的反射机制的详细应用
package com.at221; import java.io.Serializable; import java.lang.reflect.*; import org.junit.Test; p ...
- tiny6410采用sd卡烧写的问题
今天想用32G的SD卡来烧写tiny6410的uboot但是失败了,换了一张4G的卡就可以了, 还有sd卡启动的uboot使用tftp命令是有问题的
- 缓存淘汰算法---LRU转
1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”. ...
- 【js】深拷贝一文中的几个错误点
原文:https://www.cnblogs.com/wuhairui/p/10370227.html 得到网友反馈,试过后也再查了下资料: 1.JSON.parse(JSON.stringify(o ...
- FractionallySizedBox
import 'package:flutter/material.dart'; void main() { runApp(MaterialApp(home: new MyApp())); } clas ...
- Html Link 标签
Html Link 标签 Link 是 HTML Head 内部标签 <html> <head> <!-- link标签:rel="shortcut icon& ...
- ORA-12805: parallel query server died unexpectedly ORA-04030 (sort subheap,sort key) 原因排查与解决方法
今日,某服务器pga调整为30G,_pga_max_size调整为8G之后(原来是2G,但是one passes语句较多,性能太低),执行出现ORA-12805: parallel query ser ...
- 【Python66--checkbutton&】
一.定义:Checkbutton组件用于实现是否选择的按钮 二.作用:使用Checkbutton,必须创建一个tkinter变量用于存放按钮的状态:v=IntVar() from tkinter im ...