C语言实践——学生信息管理

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


同时因为没有学习 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

时间: 2024-10-02 10:54:09

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

实践hibernate的应用——struts2+hibernate的简单学生信息管理

struts2+hibernate的简单学生信息管理,没有用很好的界面,目的主要是为了实践一下hibernate框架的学习,深入了解hibernate框架. 下面是项目的目录: 配置文件hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN&

Qt-实现简单的学生信息管理_初识QT

项目介绍:利用Qt实现简单的学生信息管理 实现功能:实现对信息的添加,删除,查询,修改 废话不多说,直接进入主题:(刚刚学,界面做的不是太美观,请多包涵) 主界面 -  mainWindow && login 一.添加学生 - 1.使用组件有:Dialog 窗口,Label标签,Line Edit,Spin Box,radio button,check Box,push button. 2.实现思路: 1. 获取面板上的信息 2.将获得的信息写入一个.txt文件中去 3.实现步骤: 1.

《C语言编写 学生成绩管理系统》

/* (程序头部凝视開始)* 程序的版权和版本号声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名: 学生成绩管理系统 * 作 者: 刘江波 * 完毕日期: 2012 年 6 月 23 日* 版 本 号: v.623 * 对任务及求解方法的描写叙述部分 * 程序头部的凝视结束 */ #include "stdio.h" #include"string" /*定义学生结构体*/ struc

学生信息管理(mvc模式)

简单的学生信息管理: student类封装属性,一个构造方法 package com.hanqi.dao; import java.util.Date; //映射student表的实体类 //类名映射表名 public class Student { //属性名映射字段名 private String sno; private String sname; private String ssex; private Date sbirthday; private String sclass; pub

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

laravel框架写的简易版的学生信息管理平台,贯穿了laravel的控制器.视图.模板.模型.中间件.路由规则的使用. 页面是使用BootStrap前端框架搭建 使用laravel实现了增删改查的功能. //这是路由文件的关键代码 Route::group(['middleware' => ['web']], function () { Route::get('student/index',['uses'=>'[email protected]']); Route::any('student

Ubuntu下wxWidgets学生信息管理sqlite3(C++)

main.cxx #include <sqlite3.h> #include <cstdlib> #include <iostream> #include <iomanip> using namespace std; int main() { sqlite3* file; int flag; flag = sqlite3_open("./stu.db", &file); if(SQLITE_OK != flag) { cout&l

[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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

Ubuntu下wxWidgets学生信息管理soci

main.cxx #include "soci.h" #include "soci-sqlite3.h" using namespace soci; #include <iostream> using namespace std; int main() { session sql; sql.open(sqlite3, "./stu.db"); /*method1*/ /*rowset<row> rs = (sql.prep

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

R语言H2o包的几个应用案例 笔者寄语:受启发想了解H2o平台的一些R语言实现,网上已有一篇H2o的demo文件.笔者在这多贴一些案例,并且把自己实践的一些小例子贴出来. 关于H2o平台长啥样,可以看H2o的官网,关于深度学习长啥样,可以看一些教程,比如ParallelR博客之中的解析. 下面主要是贴几个案例,让大家看看. ------------------------------------------------------------ Matt︱R语言调用深度学习架构系列引文 R语言︱H