学生信息管理系统软件的修改与感想

我对老师给的学生管理系统进行了一些修改,改为了学生公寓信息管理系统,程序如下:

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"conio.h"

#define PAGE 3

#define MAX 1000

#define N 5

int k=0;

/*结构体类型*/

typedef struct

{   int num;/*身份证号*/

char name[20];/*姓名*/

char sex[5];/*性别*/

int age;/*年龄*/

char studentclass[20];/*门牌号*/

int score;/*物业管理费*/

}STUDENTS;

int read_file(STUDENTS stu[])

{ FILE *fp;

int i=0;

if((fp=fopen("stu.txt","rt"))==NULL)

{printf("\n\n*****库存文件不存在!请创");

return 0;

}

while(feof(fp)!=1)

{

fread(&stu[i],sizeof(STUDENTS),1,fp);

if(stu[i].num==0)

break;

else

i++;

}

fclose(fp);

return i;

}

void save_file(STUDENTS stu[],int sum)

{FILE*fp;

int i;

if((fp=fopen("stu.txt","wb"))==NULL)

{printf("写文件错误!\n");

return;

}

for(i=0;i<sum;i++)

if(fwrite(&stu[i],sizeof(STUDENTS),1,fp)!=1)

printf("写文件错误!\n");

fclose(fp);

}

/*创建个人信息*/

int input(STUDENTS stu[])

{  int i,x;

for(i=0;i<1000;i++)

{

system("cls");

printf("\n\n                 录入个人信息  (最多%d个)\n",MAX);

printf("               ----------------------------\n");

printf("\n                     第%d位户主",k+1);

printf("\n 请输入个人的账号:");     (利用scanf录入信息)

scanf("%d",&stu[k].num);

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

scanf("%s",stu[k].name);

printf("\n 请输入个人的性别:");

scanf("%s",stu[k].sex);

printf("\n 请输入个人的年龄:");

scanf("%d",&stu[k].age);

printf("\n 请输入个人的门牌号:");

scanf("%s",stu[k].studentclass);

printf("\n 请输入个人的物业管理费:");

scanf("%d",&stu[k++].score);

printf("\n 请按1键返回菜单或按0键继续创建");

scanf("%d",&x);

if(x)

break;

}

return k;

}

/*删除学生信息*/

void deletel(STUDENTS stu[])

{ system("cls");

char Stuname2[20];

int i,j;

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

scanf("%s",Stuname2);

printf("\n");

for(i=0;i<k;i++)

if(strcmp(stu[i].name,Stuname2)==0)

for(j=0;j<20;j++)

stu[i].name[j]=stu[i+1].name[j];

k--;

printf("删除成功\n");

printf("按任意键加回车返回主菜单!");

scanf("%d",&i);

getchar();

}

/*打印学生信息*/

void output(STUDENTS stu[])

{  system("cls");

int i;

for(i=0;i<k;i++)

printf("帐号:%d\n姓名:%s\n性别:%s\n年龄:%d\n门牌号:%s\n物业管理费: %d\n",stu[i].num,stu[i].name,

stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

printf("按任意键加回车返回主菜单!");

scanf("%d",&i); (原来这些信息在一行中显得不太美观,通过加\n修改成一列,显得更加美观)

getchar();

}

/*查询学生信息*/

void inquire(STUDENTS stu[])

{ int i;

int num;

system("cls");

printf("     \n\n请输入您要查找的个人的帐号");

scanf("%d",&num);

for(i=0;i<k;i++)

if(num==stu[i].num)

printf("\n\n\n帐号:%d\n姓名:%s\n性别:%s\n年龄:%d\n门牌号:%s\n物业管理费: %d\n",stu[i].num,stu[i].name,

stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

printf("按任意键加回车返回主菜单!");

scanf("%d",&i);

getchar();

}

/*修改学生信息*/

void change(STUDENTS stu[])

{  int num,i,choice;

system("cls");

printf("\n\n\n      请输入您要修改的个人的帐号");

scanf("%d",&num);

for(i=0;i<k;i++)

{ if(num==stu[i].num)

printf("\n帐号:%d\n姓名:%s\n性别:%s\n年龄:%d\n门牌号:%s\n物业管理费: %d\n",stu[i].num,stu[i].name,

stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

printf("\n\n\n     ********请输入您想要修改的数据********\n\n");

printf("                1. 帐号\n\n");

printf("                2. 姓名\n\n");

printf("                3. 性别\n\n");

printf("                4. 年龄\n\n");

printf("                5. 门牌号\n\n");

printf("                6. 物业管理费\n\n");

printf("                 请选择(1-6):");

scanf("%d",&choice);     (运用switch来修改信息)

switch(choice)

{case 1:{

printf("\n   请输入你改的新帐号");

scanf("%d",&stu[i].num);

break;

}

case 2:{

printf("\n   请输入你改的新姓名");

scanf("%s",stu[i].name);

break;

}

case 3:{

printf("\n   请输入你改的新性别");

scanf("%s",stu[i].sex);

break;

}

case 4:{

printf("\n   请输入你改的新年龄");

scanf("%d",&stu[i].age);

break;

}

case 5:{

printf("\n   请输入你改的新门牌号");

scanf("%s",stu[i].studentclass);

break;

}

case 6:{

printf("\n   请输入你改的新物业管理费");

scanf("%d",&stu[i].score);

break;

}

}

printf("帐号:%d\n姓名:%s\n性别:%s\n年龄:%d\n门牌号:%s\n物业管理费: %d\n",stu[i].num,stu[i].name,

stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

printf("按任意键加回车返回主菜单!");

scanf("%d",&i);

break;

}

}

/*学生成绩信息排名*/

void sort(STUDENTS stu[])

{  int i,j,n=1,x;

system("cls");

int t;

for(i=0;i<k-1;i++)

for(j=i+1;j<k;j++)

if(stu[i].score<stu[j].score)

{ t=stu[i].score;

stu[i].score=stu[j].score;

stu[j].score=t;

t=stu[i].num;

stu[i].num=stu[j].num;

stu[j].num=t;

}

for(i=0;i<k;i++)

printf("排名    帐号    物业管理费\n %d       %d       %d\n",n++,stu[i].num,stu[i].score);

printf("按任意键加回车返回主菜单!");

scanf("%d",&x);

getchar();

}

void pagedis()

{

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

printf("                   *                                *\n");

printf("                   *                                *\n");

printf("                   *                                *\n");

printf("                   *     欢迎进入个人公寓管理系统   *\n");

printf("                   *                                *\n");

printf("                   *                                *\n");

printf("                   *                                *\n");

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

}

void check()

{

char userName[5];/*用户名*/

char userPWD[5];/*密码*/

int i,sum;

system("color 3F");             (修改主界面的颜色)

for(i = 1; i < 4; i++)

{

/*用户名和密码均为abcde;*/

printf("   用户名为abcde,密码为12345\n\n");

printf("\n       请输入您的用户名:");

gets(userName);

printf("\n       请输入您的密码:");

gets(userPWD);

if ((strcmp(userName,"abcde")==0) && (strcmp(userPWD,"12345")==0))/*验证用户名和密码*/

{

printf("用户名和密码正确,显示主菜单");

return;

}

else

{

if (i < 3)   (利用if语句,提醒3次输入密码错误的情况,并推出系统)

{

printf("用户名或密码错误,提示用户重新输入");

printf("用户名或密码错误,请重新输入!");

}

else

{

printf("连续3次输错用户名或密码,退出系统。");

printf("您已连续3次将用户名或密码输错,系统将退出!");

exit(1);

}

}

}

}

void menu()

{

STUDENTS stu[20];

int choice,k,sum;

sum=read_file(stu);

if(sum==0)

{  printf("首先录入基本库存信息!按回车后进入*****\n");

getch();

sum=input(stu);

}

do

{  system("cls");

printf("\n\n\n               ********个人公寓管理系统********\n\n");

printf("                      1. 创建个人信息\n\n");

printf("                      2. 打印个人信息\n\n");

printf("                      3. 查询个人信息\n\n");

printf("                      4. 修改个人信息\n\n");

printf("                      5. 删除个人信息\n\n");

printf("                      6. 个人物业管理费信息排名\n\n");

printf("                      0. 退出系统\n\n");

printf("                       请选择(0-6):");

scanf("%d",&choice);

switch(choice)

{

case 1: k=input(stu); break;/*创建学生信息*/

case 2: output( stu) ; break;/*打印学生信息*/

case 3: inquire(stu); break;/*查询学生信息*/

case 4: change(stu); break;/*修改学生信息*/

case 5: deletel(stu); break;/*删除学生信息*/

case 6: sort(stu); break;/*学生成绩信息排名*/

case 0: break;

}

}while(choice!=0);

save_file(stu,sum);

}

int main()

{

int i,sum;

pagedis();

check();

menu();

}

整个程序通过if,switch等基本的语句来实现了一个简单的程序,给我提供了一些编辑程序的思路。

时间: 2024-10-21 13:18:49

学生信息管理系统软件的修改与感想的相关文章

通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?

1 从文件操作角度分析. 文件的概念以及文件类型指针 在c语言中,文件被看成是由一个一个的字符或字节组成的.根据数据的组织形式,文件可分为文本文件和二进制文件两种. 文本文件又被称为ASCII文件,文本文件在磁盘中存放时每个字符对应一个字节,用于放其对应的ASCII码.文本文件可在屏幕上按字符显示. 二进制文件时将数据转换成二进制形式然后存储起来的文件.二进制文件虽然也可在屏幕上显示,但其内容无法读懂. 文件指针是一中结构体类型变量,c编译系统已将结构定义好,并命名为FILE,我们直接用定义就好

第二节 学生系统管理讨论与修改 150206118

通过学习学生信息管理系统软件,我了解到了基于函数的结构化大型程序的编写方法:了解到C语言管理软件的设计方法和编程思路.大概知道了编写的流程.要点还有一些基本命令. 首先,要明确编写的题目,也就是编写的内容主题.然后根据主题将现实中的要用到的东西抽象化(就是将一些实际的东西定义一下,写进程序里).接着,就开始构建一个整体的框架,内容的具体功能划分,功能之间的联系等.例如学生信息管理系统中,需要同时保存一个学生的姓名,性别,年龄等信息. 而这些需要录入的信息都是归于一个学生之下的资料,所以学生又是一

学生信息管理(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

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

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

实践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&

【mfc】学生信息管理,实现List控件节点的增删改查

之前在mfc这个专栏里面,写了很多关于win32的程序, 其实也没什么的,win32是mfc的基础, mfc只是win32的扩展,系统自带的扩展,新建一个mfc如同新建一个win32程序,不过这个win32程序一开始就带了很多空函数框架. 一.基本目标 要建立如下图所示的学生信息管理mfc程序,当然这个程序以后应该考虑连接数据库,access,sql server都可以, 同时连同<[mfc]用对话框分页实现用户登录>(点击打开链接),让用户登录之后才能够管理信息,当然这是后话. 1.这个程序

ibatis之——学生信息管理实例

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47107647 iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了. 官网为:http://www.mybatis.org/ 搭建iBatis 开发

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