这是本人做的第一个实践项目,用的知识都是书上有的,没有很多很复杂的知识

同时因为没有学习 C语言 图形方面的知识,所以界面做得很丑,暂时先这样吧


源文件:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "student.h" void main()
{
int num_order;
char c; num_order = msg();//输出相关信息,获取相关操作 while( num_order!=1 && num_order!=2 && num_order!=3)
{
printf("请重新输入正确参数:\n");
scanf("%d",&num_order);
} switch( num_order )
{
case 1: from_file(0); break;//查询
case 2: input_(); break;//录入
case 3: from_file(1); break;//修改
} c = getchar();//用于接受上一个回车符
printf("\n是否执行其他操作?\n是/Y、否/N\n");
c = getchar();
while( c == 89 || c == 121 )
{
printf("请输入相关参数\n");
scanf("%d",&num_order);
switch( num_order )
{
case 1: from_file(0); break;//查询
case 2: input_(); break;//录入
case 3: from_file(1); break;//修改
}
c = getchar();
printf("\n是否执行其他操作?\n是/Y、否/N\n");
c = getchar();
} }

Student.h 头文件:

#include <stdio.h>
#include <string.h>
#include <stdlib.h> int msg();//信息提示窗口
void input_();//录入相关信息
void save_files( struct Student_info *p );//保存内容至文件
void print_( struct Student_info *p, int n );//输出内容到屏幕
void from_file( int flag );//读取文件内容
void change_info( struct Student_info *p, int loop );//修改相关内容
void sort_info(struct Student_info *p);//排序 struct Student_info
{
char name[10];
int id;
int age;
char adress[30];
}; int num_stud; int msg()//信息提示窗口
{
int n; printf("\t\t\t\t学生管理系统\n\n");
printf("\t\t 请输入你想执行的操作:\n");
printf("\t\t ╭════════════════╮ \n");
printf("\t\t║1.学生信息查询 ║\n");
printf("\t\t║2.学生信息录入 ║\n");
printf("\t\t║3.学生信息修改 ║\n");
printf("\t\t╰═════════════════╯\n"); scanf("%d",&n);
return(n);
} void input_()//录入相关信息
{
int i;
struct Student_info *p,*into_save; system("cls"); printf("学生信息录入系统:\n");
printf("请输入想要录入信息的学生人数\n"); scanf("%d",&num_stud);
if((into_save = p = ( struct Student_info *)malloc( num_stud * sizeof( struct Student_info ))) == NULL )
printf("创建空间失败!\n");
else
printf("依次输入学生学号 姓名 年龄 地址\n");
for( i = 0; i < num_stud ; i++, p++ )
{
scanf( "%d %s %d %s", &p->id, p->name, &p->age, p->adress);
} save_files( into_save );
} void save_files( struct Student_info *p )//内容保存
{
int i;
FILE *fp;
if( (fp = fopen( "stud.dat", "ab" )) != NULL )
{
for( i = 0; i < num_stud; i++, p++ )
{
fwrite( p , sizeof(struct Student_info), 1, fp);
}
fclose( fp );
printf( "信息录入完成!\n" );
}
else if( (fp = fopen( "stud.dat", "wb" )) == NULL )
{
printf( "文件创建失败!\n");
exit(0);
}
else
{
for( i = 0; i < num_stud; i++, p++ )
{
fwrite( p , sizeof(struct Student_info), 1, fp);
}
fclose( fp );
printf( "信息录入完成!\n" );
}
} void print_( struct Student_info *p, int n )//输出屏幕
{
int i;
printf( "学号\t姓名\t年龄\t地址\n\n");
for( i = 0; i < n ; i++, p++ )
{
printf( "%-4d %7s %6d %8s\n", p->id, p->name, p->age, p->adress);
}
printf("\n");
} void from_file( int flag )//读取文件内容
{
FILE *fp;
struct Student_info temp;
struct Student_info *p,*into_print,*first;
int i = 0;
int loop = 0; system("cls");
printf("\t学生信息查询 \n"); if((fp = fopen("stud.dat","rb")) == NULL)
{
printf( "文件信息不存在\n" );
exit(0);
} while( !feof(fp) )
{
fread( &temp, sizeof(struct Student_info), 1, fp);
loop++;
}
loop-=1;//获取文件中内容个数 rewind(fp);
first = into_print = p = (struct Student_info *)malloc(loop*sizeof(struct Student_info));
for( i = 0; i < loop; i++, p++ )
{
fread( p, sizeof(struct Student_info), 1 ,fp);
} print_( into_print, loop ); if( flag == 0 )
{
free( first );
first = into_print = p = NULL;
}
else
{
change_info( first, loop );
}
fclose(fp);
} void change_info( struct Student_info *p, int loop )
{
int n,i;
struct Student_info *t1,*t2;
FILE *fp; printf("请输入要修改学生信息的学号:\n");
scanf("%d",&n);
t2 = t1 = p; for( i = 0; i < loop; i ++, t1++ )
{
if( t1->id == n)
break;
}
scanf( "%d %s %d %s", &t1->id, t1->name, &t1->age, t1->adress); if( ( fp = fopen( "stud.dat", "wb") ) == NULL )
{
printf("文件写入错误!\n");
}
else
{
for( i = 0; i < loop; i ++, p++ )
{
fwrite( p, sizeof(struct Student_info), 1, fp );
}
}
fclose(fp);
printf("修改成功!\n");
free(t2);
}

运行界面:

1.首页

2.录入界面

3.查询界面

4.修改界面

注意看学号 102 的信息 已经改变

附上文件的链接:

链接:http://pan.baidu.com/s/1sjjSpy9 密码:kowr

C语言实践——学生信息管理的更多相关文章

  1. 《程序设计语言——实践之路(英文第三版)》【PDF】下载

    <程序设计语言--实践之路(英文第三版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382234 内容简介 <程序设计语 ...

  2. 《程序设计语言——实践之路【PDF】下载

    <程序设计语言--实践之路[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 <程序设计语言--实践之路(第3版 ...

  3. 【学员管理系统】0x02 学生信息管理功能

    [学员管理系统]0x02 学生信息管理功能 写在前面 项目详细需求参见:Django项目之[学员管理系统] Django框架大致处理流程 捋一下Django框架相关的内容: 浏览器输入URL到页面展示 ...

  4. 《程序设计语言——实践之路》【PDF】下载

    程序设计语言--实践之路>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 本书在美国大学已有使用了十余年,目前被欧 ...

  5. R语言︱H2o深度学习的一些R语言实践——H2o包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...

  6. Problem X: C语言习题 学生成绩输入和输出

    Problem X: C语言习题 学生成绩输入和输出 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 4722  Solved: 2284[Submit] ...

  7. Laravel之简单的学生信息管理平台

    laravel框架写的简易版的学生信息管理平台,贯穿了laravel的控制器.视图.模板.模型.中间件.路由规则的使用. 页面是使用BootStrap前端框架搭建 使用laravel实现了增删改查的功 ...

  8. YTU 2429: C语言习题 学生成绩输入和输出

    2429: C语言习题 学生成绩输入和输出 时间限制: 1 Sec  内存限制: 128 MB 提交: 1897  解决: 812 题目描述 编写一个函数print,打印一个学生的成绩数组,该数组中有 ...

  9. vue实现简单学生信息管理案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. The executable was signed with invalid entitlements新设备run出现这个问题

    出现这个问题一般是新手不熟悉开发者发布流程造成地 一定要安开发者流程一步一步走 这样就不会出错了 注意这几个地方地设置 1.

  2. 利用sql里的xpath生成表格

    SELECT (SELECT * from Common.Common_Setup_CityData FOR XML PATH('tr'), TYPE).query('      for $item ...

  3. Permutations,Permutations II,Combinations

    这是使用DFS来解数组类题的典型题目,像求子集,和为sum的k个数也是一个类型 解题步骤: 1:有哪些起点,例如,数组中的每个元素都有可能作为起点,那么用个for循环就可以了. 2:是否允许重复组合 ...

  4. 安装MYSQL出现的问题

    安装MYSQL接近三天了还是没有安装好,原因1:我觉得错误日志产生的原因是因为 计算机的名称是中文名 :小石头 瓦卡卡,果然是这个原因,折腾了三四天,最后换了系统!!!!把计算机名命名成了英文,果然一 ...

  5. linux自旋锁

    一.前言 在linux kernel的实现中,经常会遇到这样的场景:共享数据被中断上下文和进程上下文访问,该如何保护呢?如果只有进程上下文的访问,那么可以考虑使用semaphore或者mutex的锁机 ...

  6. Django模板-模板标签

    接着Django模板-基础知识继续写模板相关知识. if标签 {% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ). 但是不允许在同一个 ...

  7. COMET技术具体实现 结合PHP和JQUERY

    具体看代码,费话不说 PHP服务端 $mem = new RTMEM(); if(!$mem->conn()) exit('no mem server'); if(!$mem->getst ...

  8. 自定义HTTP错误页太小,导致显示默认友好错误页问题

    一 . 问题描述: chrome 向服务器发送构造字符串,返回错误页面如下 <html> <head> <title>404 Not Found</title ...

  9. Database.SetInitializer的几种参数

    一:数据库不存在时重新创建数据库 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testCon ...

  10. oracle面试

    1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...