首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

c语言兑现的学生信息管理系统

2012-11-10 
c语言实现的学生信息管理系统代码:#include stdio.h#include stdlib.h//用于下面的exit(0);退出程序。#

c语言实现的学生信息管理系统
c语言兑现的学生信息管理系统


代码:


#include <stdio.h>#include <stdlib.h>                    //用于下面的  exit(0);退出程序。#include <string.h>                    //用于  判断是否有某个学生   利用 字符串的大小比较。struct student                             //定义结构体 {                 char name[10];                 int number;                 char sex;                 float score;};                                                //莫忘“   ;   ”void sort(struct student s[],int m)               //定义函数    按照分数排序   {                 int i,j,k;                 struct student t;
                 for(i = 0;i < m - 1;i ++)                    //选择法                  {                                k = i;                                 for(j = i +1;j < m;j++)                                                 if(s[j].score > s[k].score)                                                                k = j;                                t = s[i];                                s[i] = s[k];                                s[k] = t;                }}void copyFile(FILE *source,FILE *intention)                              //定义函数  文件复制  {                 int ch;
                 while((ch = fgetc(source)) != EOF)               //不能是while(!(ch = fgetc(source)))因为它是表示    ch != 0。而EOF 是符号常量  ,值等于 -1,......!=EOF  就是表示文件没结束。                                fputc(ch,intention);}void fun0();void fun1(struct student s[]);void fun2(struct student s[]);void fun3(struct student s[],int m);void fun4();void fun5();void fun6();FILE *fp;int N;struct student s[10000];int main(){                 int choice;
                printf( "菜单选择:\n" );                printf( "   0.初始化所有条目\n" );                printf( "   1.增加学生信息\n" );                printf( "   2.删除学生信息\n" );                printf( "   3.查找学生信息\n" );                printf( "   4.学生信息备份\n" );                printf( "   5.删除所有信息\n" );                printf( "   6.退出学生信息管理程序\n" );                printf( "请输入你的选择:\n" );                scanf( "%d",&choice);                 switch(choice)                {                                 case 0:  fun0();break ;                                 case 1:  fun1(s);break ;                                 case 2:  fun2(s);break ;                                 case 3:  fun3(s,N);break ;                                 case 4:  fun4();break ;                                 case 5:  fun5();break ;                                 case 6:  fun6();break ;                                 default :printf("选择错误,请输入正确的选择\n" );                }}void fun0(){                 int i;
                printf( "输入要输学生个数N:\n" );                scanf( "%d",&N);                printf( "请输出各学生信息:\n" );                 if(!( fp = fopen("c:\\stu.txt" ,"w")))               //注意“w”                {                                printf( "创建文件错误\n" );                                exit(1);                }                 for(i = 0;i < N ;i++)                                scanf( "%s %d %c %f",&s[i].name,&s[i].number,&s[i].sex,&s[i].score);                sort(s,N);                                                //不能是s【N】什么的。因为它是个结构体数组。                 for(i = 0;i < N ;i++)                                fprintf(fp, "%s %d %c %.2f\n",s[i].name,s[i].number,s[i].sex,s[i].score);                fclose(fp);}void fun1(struct student s[]){                 struct student addstu;                 int i,j;
                printf( "请输入要增加学生的信息\n" );                 if(!( fp = fopen("c:\\stu.txt" ,"a+")))                    //注意是 “ a +”。。。不能是“ a ”。。。                {                                printf( "打开文件错误\n" );                                exit(1);                }                scanf( "%s %d %c %f",&addstu.name,&addstu.number,&addstu.sex,&addstu.score);                 int n = 0;                         //注意文件中的数据要想使用  必须先读出来  。。。。可以这样读。。。。                 while(fscanf(fp,"%s" ,&s[n].name) != EOF)                {                                fscanf(fp, "%d %c %f", &s[n].number,&s[n].sex,&s[n].score);                                n++;                }                 for(i = 0;i < n;i++)                                  //为什么不能是m.          if(addstu.score > s[i].score)               break;     for(j = n;j > i; j--)          s[j] = s[j - 1];     s[i] = addstu;                    fp = fopen( "c:\\stu.txt","w" );                 for(i = 0;i < n + 1 ;i++)                                fprintf(fp, "%s %d %c %.2f\n",s[i].name,s[i].number,s[i].sex,s[i].score);                fclose(fp);              }void fun2(struct student s[]){                 char name[10];                 int i,j;
                fp = fopen( "c:\\stu.txt","r+" );                printf( "输入需要删除的学生姓名:\n" );                scanf( "%s",name);                 int n = 0;                 while(fscanf(fp,"%s" ,&s[n].name) != EOF)    //不能是 (!())这样                {                                fscanf(fp, "%d %c %f", &s[n].number,&s[n].sex,&s[n].score);                                n++;                }                 for(i = 0;i < n;i++)                                                  //这里想很久啊。。。                                 if(strcmp(name,s[i].name) == 0)                                                 break;                 if(i == n)                                printf( "无此人\n" );                 else                                 for(j =i ;j < n ;j++)                  //不能是j = n - 1;j <= i;j--                                                s[j] = s[j + 1];                fp = fopen( "c:\\stu.txt","w" );                                 for(i = 0;i < n - 1 ;i++)                                                fprintf(fp, "%s %d %c %.2f\n",s[i].name,s[i].number,s[i].sex,s[i].score);                fclose(fp);              }void fun3(struct student s[],int m){                 char name[10];                 int i;                                fp = fopen( "c:\\stu.txt","r" );                                    printf( "输入需要查找学生的姓名:\n" );                scanf( "%s",name);                 int n = 0;                 while(fscanf(fp,"%s" ,&s[n].name) != EOF)                {                                fscanf(fp, "%d %c %f", &s[n].number,&s[n].sex,&s[n].score);                                n++;                }                 for(i = 0;i < n;i++)                                                  //接下来这里想很久啊。。。                                 if(strcmp(name,s[i].name) == 0)                                                                 break;                 if(i == n)                                printf( "无此人\n" );                 else                                printf( "%s %d %c %.2f\n",s[i].name,s[i].number,s[i].sex,s[i].score);}void fun4(){                FILE *fp1,*fp2;
                fp1 = fopen( "c:\\stu.txt","r" );                fp2 = fopen( "d:\\stu.txt","w" );                copyFile(fp1,fp2);                fclose(fp1);                fclose(fp2);}void fun5(){                FILE *fp;                                 if(!(fp = fopen("c:\\stu.txt" ,"w")))               //需要时“w”或 “w+”                {                                printf( "打开文件错误\n" );                                exit(0);                };                    //打开文件一下   “w”  形式   什么都不需要写入  然后关闭就行了   就相当于清空了                fclose(fp);}void fun6(){                exit(0);}

热点排行