求一个学生证管理系统源代码,以下是题目? c语言程序 学生证管理系统

作者&投稿:犁瞿 (若有异议请与网页底部的电邮联系)
这个网上就有吧,可以上网找一找然后改一下

学生证信息实现文件读写,数量生成链表。

第一次运行会检测文件路径,不存在会先生成空白文件。

输入功能实现向文件添加信息(包含学号重复验证)。

查询功能包含个人查询和所有查询。

修改和删除同步文件(包含基本信息验证)。

统计功能,采用先链表排序,再计算班级个数,最后按班级分组统计。

所有函数都可独立运行,具有单独的创建释放功能。

代码很长,原文件我上传百度网盘,要是看不清,就点这个源文件:


#include<stdio.h>

#include<conio.h>

#include<windows.h>

#include<malloc.h>

#include<string.h>

#define FPATH "C:\est.txt"

#define MXN 10//姓名最大字数

#define MXSN 10//学号最大字数

typedef struct studentCard

{

    char name[MXN];

    int sex; //0 表示男,1 表示女

    char stuNo[MXSN]; //学号

    int classNo; //班号

    //其他信息需要自己补

    struct studentCard *next;//链表指针

} StuCard;

StuCard *scHead=NULL;

void showMenu();

int checkSN(char *stuNo);//检查学生号是否已存在,存在返回0,不存在返回1

StuCard *checkHead();//检查公共头节点指针,如果为NULL,尝试一次从文件加载数据

int showSCList();//打印链表

int freeList();//释放链表地址空间(同时公共链表头节点指针将置NULL),成功返回1,失败返回0

StuCard *outfromFile(char *path);//读取文件,失败返回NULL,成功返回链表头节点

int insert2File(char *path);//向文件中追加新数据(文件不存在则新建),失败返回0,成功返回1

int write2File(char *path);//保存链表数据到文件中,文件已存在将被重建,成功返回1,失败返回0

StuCard *selectBySNO();//输入学号查询学生,查到返回节点,没查到返回NULL

int updateSC(StuCard *scFind);//修改指定学生信息后,更新文件,成功返回1,失败返回0

int deleteSC(StuCard *scFind);//删除指定学生信息后,更新文件,成功返回1,失败返回0

int tj();//按班级统计总人数,女生人数,男生人数。成功返回1,失败返回0

int main()

{

    FILE *fp=NULL;

    fp=fopen(FPATH,"r");

    if(fp==NULL){

        fp=fopen(FPATH,"w");

        fclose(fp);

    }

    showMenu();

    return 0;

}

void showMenu()

{

    int n=0,n2;

    StuCard *scFind=NULL;

    while(1)

    {

        n=0;

        system("cls");

        printf("==学生证信息管理系统==
");

        printf("  ①信息输入
 ②信息查找
 ③信息修改
 ④信息删除
 ⑤信息统计
");

        while(n<1 || n>5)

        printf("请选择功能(1~5):"),scanf("%d",&n);

        switch(n)

        {

            case 1:

                if(insert2File(FPATH)) printf("新增数据成功!!
");

                break;

            case 2:

                n2=0;

                while(n2!=1 && n2!=2)

                    printf("  ①按学号查询输入  ②询所有学生输入
"),scanf("%d",&n2);

                if(n2==2)showSCList();

                if(n2==1 &&(scFind=selectBySNO()))

                {

                    printf("该学生的信息为:
");

                    printf("姓名:%s
性别:%s
",scFind->name,scFind->sex?"女":"男");

                    printf("学号:%s
班级:%d
",scFind->stuNo,scFind->classNo);

                }

                break;

            case 3:

                printf("查找目标学生:
");

                if((scFind=selectBySNO())){

                    if(updateSC(scFind))

                        printf("更新信息成功!
");

                    else

                        printf("异常,更新失败!
");

                }

                break;

            case 4:

                printf("查找目标学生:
");

                if((scFind=selectBySNO())){

                    if(deleteSC(scFind))

                        printf("删除信息成功!
");

                    else

                        printf("异常,删除失败!
");

                }

                break;

            case 5:

                tj();

                break;

        }

        printf("按任意键继续。。。。"),getch();

    }

}

StuCard *checkHead()

{

    if(!scHead)

        scHead=outfromFile(FPATH);

    return scHead;

}

int checkSN(char *stuNo)

{

    StuCard *sc=checkHead();

    if(!sc) return 1;

    if(!stuNo) return 1;

    while(sc->next)

    {

        if(strcmp(sc->next->stuNo,stuNo)==0)

            return 0;

        sc=sc->next;

    }

    return freeList();

}

int tj()

{

    int i,num,cnt=0,*cN=NULL,*sum=NULL,*wn=NULL,*mn=NULL,flag=0;//flag发生交换置1

    StuCard scTemp;

    StuCard *sc0=NULL,*sc1=NULL;//链表迭代中的前一个节点和后一个节点

    if(!checkHead())return 0;//抛出异常

    sc0=scHead->next;

    while(sc0)//升序排序

    {

        sc1=sc0->next;

        while(sc1)

        {

            if(sc0->classNo>sc1->classNo)//节点只交换信息成员值,链表指针不变

            {

                scTemp=*sc0,*sc0=*sc1,sc0->next=scTemp.next,scTemp.next=sc1->next,*sc1=scTemp;

                flag=1;

                break;

            }

            sc1=sc1->next;

        }

        if(flag)

            sc0=scHead,flag=0;

        sc0=sc0->next;

    }

//---------统计班级个数

    sc0=scHead->next;

    if(!sc0) return 0;//抛出异常(无数据可统计)

    num=sc0->classNo,cnt++;


    while(sc0)

    {

        if(sc0->classNo!=num)

            num=sc0->classNo,cnt++;

        sc0=sc0->next;

    }

    printf("共有%d个班级!
",cnt);

    cN=(int *)malloc(sizeof(int)*cnt);

    sum=(int *)malloc(sizeof(int)*cnt);

    wn=(int *)malloc(sizeof(int)*cnt);

    mn=(int *)malloc(sizeof(int)*cnt);

    if(!cN || !sum || !wn || !mn)return 0;//抛出异常

    memset(sum,0,sizeof(int)*cnt);

    memset(wn,0,sizeof(int)*cnt);

    memset(mn,0,sizeof(int)*cnt);

//------生成班级号数组

    i=0,sc0=scHead->next,num=sc0->classNo;

    cN[i]=num;

    while(sc0)

    {

        if(sc0->classNo!=num)

            num=sc0->classNo,cN[++i]=num;

        sc0=sc0->next;

    }

//-------------按班级分组统计男女生人数

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

    {

        sc0=scHead->next;

        while(sc0)

        {

            if(sc0->classNo==cN[i] && sc0->sex==0)

                mn[i]++,sum[i]++;

            if(sc0->classNo==cN[i] && sc0->sex==1)

                wn[i]++,sum[i]++;

            sc0=sc0->next;

        }

    }

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

        printf("班级:%d,总人数:%d,其中男生:%d人,女生:%d人
",cN[i],sum[i],mn[i],wn[i]);

    free(cN);

    free(sum);

    free(mn);

    free(wn);

    return freeList();

    return 1;

}

int deleteSC(StuCard *scFind)

{

    StuCard *sch=scHead;

    if(!scFind)return 0;//抛出异常

    if(!sch)return 0;//抛出异常

    while(sch->next)

    {

        if(sch->next==scFind)

        {

            sch->next=scFind->next;

            break;

        }

        sch=sch->next;

    }

    free(scFind);

    write2File(FPATH);

    return 1;

}

int updateSC(StuCard *scFind)

{

    if(!scHead || !scFind)return 0;//抛出异常

    printf("请输入要更新的学生信息:
");

    printf("请输入学生的姓名:"),scanf("%s",scFind->name);

    scFind->sex=3;

    while(scFind->sex!=0 && scFind->sex!=1)

        printf("请输入学生的性别(男:0,女:1):"),scanf("%d",&scFind->sex);

    printf("请输入学生的班号:"),scanf("%d",&scFind->classNo);

    write2File(FPATH);

    return 1;

}

StuCard *selectBySNO()

{

    StuCard *sch=checkHead();

    char stuNo[MXSN]= {0};

    if(!sch)return NULL;

    printf("请输入要查找的学号:"),scanf("%s",stuNo);

    while(sch->next)

    {

        if(strcmp(sch->next->stuNo,stuNo)==0)

            return sch->next;

        sch=sch->next;

    }

    printf("没有找到该学生!
");

    return NULL;

}

int freeList()

{

    int i,len=0;

    StuCard *sch=scHead;

    StuCard **listP=NULL,**lpSave=NULL;

    listP=(StuCard **)malloc(sizeof(StuCard *));

    if(!listP) return 0;//抛出异常

    if(!sch) return 1;

    while(sch->next)

    {

        len++;

        lpSave=realloc(listP,sizeof(StuCard *)*len);

        if(!lpSave) return 0;//抛出异常

        listP=lpSave;

        listP[len-1]=sch->next;//找出所有节点

        sch=sch->next;

    }

    for(i=len-1; i>=0; i--) free(listP[i]),listP[i]=NULL; //释放所有节点地址

    free(listP);

    free(scHead);

    scHead=NULL;


    return 1;

}

int showSCList()

{

    int cnt=1;

    StuCard *sch=checkHead();

    if(!sch)return 0;

    while(sch->next)

    {

        printf("学生%2d:姓名:%s",cnt++,sch->next->name);

        printf(",性别:%s",sch->next->sex?"女":"男");

        printf(",学号:%s,班号:%d
",sch->next->stuNo,sch->next->classNo);

        sch=sch->next;

    }

    return freeList();

}

int insert2File(char *path)

{

    FILE *fp=NULL;

    StuCard *scNew=NULL;

    scNew=(StuCard *)malloc(sizeof(StuCard));

    if(!scNew) return 0;//抛出异常

    scNew->sex=3;

    printf("请输入学生的姓名:"),scanf("%s",scNew->name);

    while(scNew->sex!=0 && scNew->sex!=1)

        printf("请输入学生的性别(男:0,女:1):"),scanf("%d",&scNew->sex);

    printf("请输入学生的学号:"),scanf("%s",scNew->stuNo);

    while(!checkSN(scNew->stuNo))

        printf("该学号重复!请重新输入学号:"),scanf("%s",scNew->stuNo);

    printf("请输入学生的班号:"),scanf("%d",&scNew->classNo);

    fp=fopen(path,"at");

    if(!path ||(path && !fp)) return 0;//抛出异常(路径NULL或存在路径,但打开或新建失败)

    fseek(fp, 0, SEEK_END);

    fprintf(fp,"%s %d %s %d%s",scNew->name,scNew->sex,scNew->stuNo,scNew->classNo,"
");

    free(scNew);

    fclose(fp);

    return 1;

}

int write2File(char *path)

{

    FILE *fp=NULL;

    StuCard *sch=scHead;

    StuCard *sc=NULL;

    fp=fopen(path,"w");

    if(!fp) return 0;//抛出异常

    fseek(fp, 0, SEEK_SET);

    if(!sch)return 0;//抛出异常

    while(sch->next)

    {

        sc=sch->next;

        fprintf(fp,"%s %d %s %d%s",sc->name,sc->sex,sc->stuNo,sc->classNo,"
");

        sch=sch->next;

    }

    printf("新数据已写入文件!
");

    fclose(fp);

    return freeList();

}

StuCard *outfromFile(char *path)

{

    FILE *fp=NULL;

    StuCard *scHead=NULL,*scTail=NULL,*scNew=NULL;

    if(scHead) freeList();

    if(path==NULL) return NULL;//抛出异常

    fp=fopen(path,"r");

    if(fp==NULL) return NULL;//抛出异常

    scNew=(StuCard *)malloc(sizeof(StuCard));

    if(!scNew) return NULL;//抛出异常

    scNew->next=NULL;

    while(fscanf(fp,"%s%d%s%d",scNew->name,&scNew->sex,scNew->stuNo,&scNew->classNo)!=-1)

    {

        if(!scHead)

        {

            scHead=(StuCard *)malloc(sizeof(StuCard));

            if(!scHead)

                return NULL;//抛出异常

            scHead->next=NULL;

        }

        if(scHead->next==NULL)

            scHead->next=scNew;

        else

            scTail->next=scNew;

        scTail=scNew;

        scNew=(StuCard *)malloc(sizeof(StuCard));

        if(!scNew) return NULL;//抛出异常

        scNew->next=NULL;

    }

    free(scNew);

    fclose(fp);

    return scHead;

}



求 MFC 学生信息管理系统 源代码~

已发到你QQ邮箱,请注意查收

/*************************************************************************
学 生 成 绩 管 理 系 统 (结构版)
开发者:07042T 陈影
开发时间:2007-6-21
Compiler: Microsoft visual C++ 6.0
System Loginpassword:chenying
本系统支持每个学员录入学号、姓名、以及三门课成绩,且计算总分、平均成绩
插入、删除、修改、排序、查询个人成绩 浏览所有学生成绩。
1、使用结构保存每个学员的信息。
2、通过函数实现各个功能模块。
3、使用对文件的写操作记录成绩文件.默认保存在程序所在的目录下
4、不管是用户怎样操作数据都会有文件记录,实现了实时记录数据,但是给用户
看到的文件是用户对数据操作好之后保存下来的数据.

Copyright ? 2007 北大青鸟APTECH重庆足下 Inc. All Rights Reserved ChenYiWan
/*************************************************************************/
#include //标准输入输出
#include //其它操作
#include //windows相关
#include //字符串操作
#include //系统输入输出
#include //时间相关操作
/**********************下面是对用到的全局常量声明*************************/
#define NAME 10 //学生姓名长度
#define PASSWORD " " //系统登陆密码
int input=0; //全局变量标记当前录入学员个数
float ave,sum; //平均成绩和总分
FILE *fp; //声明一个文件指针
/**************************结构体定义************************************/
struct student{ //学生成绩结构
char name[NAME]; //学生姓名
int num; //学生学号
float score1; //记录学生成绩1
float score2; //记录学生成绩2
float score3; //记录学生成绩3
float ave; //平均分
float sum; //总分
}*pp; //声明一个结构指针
/**********************下面是对用到的函数声明*****************************/
void Password(); //密码验证函数
void Save(struct student stu[]); //保存信息函数
void InputStu(struct student stu[]); //录入信息函数
void DelStu(struct student stu[]); //删除信息函数
void ModifyStu(struct student stu[]); //修改信息函数
void FindStu(struct student stu[]); //查找信息函数
void InsertStu(struct student stu[]); //插入信息函数
void SortStu(struct student stu[]); //排 序 函 数
void ListStu(struct student stu[]); //显示学员成绩信息
//**************************程序主体**************************************
void main() //程序入口
{
system("color 02"); //设置当前窗口的背景色和前景色
struct student stu[50]; //最大学员人数
struct student *p; //声明一个结构指针
p=stu; //指针指向结构变量stu
int in; //接收用户的选择
char ch; //用于判断是否继续
Password(); //调用密码验函数
do
{
system("cls");
printf("

");
printf(" ╭————————————————————╮
");
printf(" | 学 生 个 人 成 绩 管 理 |
");
printf(" |————————————————————|
");
printf(" | 1. 录入学生个人成绩 |
");
printf(" | |
");
printf(" | 2. 修改学生个人成绩 |
");
printf(" | |
");
printf(" | 3. 查询学生个人成绩 |
");
printf(" | |
");
printf(" | 4. 浏览所有学生成绩 |
");
printf(" | |
");
printf(" | 5. 删 除 学 生 成绩 |
");
printf(" | |
");
printf(" | 6. 插 入 学 生 成绩 |
");
printf(" | |
");
printf(" | 7. 学 员 成 绩 排序 |
");
printf(" | |
");
printf(" | 8. 学 员 成 绩 保存 |
");
printf(" | |
");
printf(" | 9. 退出成绩管理系统 |
");
printf(" ╰————————————————————╯
");
printf(" 请您正确选择: ");
if(!(scanf("%d",&in)==1))
{
while((ch=getchar())!='
')
putchar(ch);
printf(" 没有此选项,请正确选择!");
getch();
continue;
}
fflush(stdin);
switch(in)
{
case 1:
InputStu(stu); //调用录入成绩函数
break;
case 2:
ModifyStu(stu); //调用修改成绩函数
break;
case 3:
FindStu(stu); //调用查询个人成绩函数
break;
case 4:
ListStu(stu); //调用浏览所有学生成绩函数
break;
case 5:
DelStu(stu); //调用删除学生成绩函数
break;
case 6:
InsertStu(stu); //插入学员成绩信息
break;
case 7:
SortStu(stu); //调用排序函数
break;
case 8:
Save(stu); //保存学员成绩函数
break;
case 9: //退出系统
return;
default:
printf("没有此选项,请正确选择!");
getch();
break;
}
}while(1);
}

void InputStu(struct student stu[]) //录入学员成绩函数原形
{
pp=stu; //指针指向结构
system("cls"); //清屏
int i;
printf("请问你要输入几个学生的信息:");
scanf("%d",&input);
if((fp=fopen("inputdata.sys","wb+"))==NULL) //当前目录下是否存在inputdata.sys文件
{ //"wb+":读写打开或建立一个二进制文件,允许读和写
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
fprintf(fp,"学号 姓名 计算机应用 Java C语言 A v eS u m
");

for(i=0;i<input;i++)
{
printf("输入学生学号:"); //输入学号
fflush(stdin);
scanf("%d",&stu[i].num);
printf("输入学生姓名:"); //输入姓名
fflush(stdin);
gets(stu[i].name);
printf("输入学生3科成绩
");
printf("——————————————————————————————
");
printf("
计算机应用: "); //第一科成绩
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("
Java 语言: "); //第二科成绩
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("
C 语言: "); //第三科成绩
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("——————————————————————————————
");
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
//下面这句代码的意思是写文件操作,后面遇到这样的代码是一样的意思
fprintf(fp," %d %s %.1f %.1f %.1f %.1f %.1f
",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave,stu[i].sum);
}
}
void ModifyStu(struct student stu[])
{
pp=stu;
int id,i=0; //id为接收用户输入的学号
if((fp=fopen("modifydata.sys","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
fprintf(fp,"学号 姓名 计算机应用 Java C语言 A v eS u m
");
printf("
请输入你要修改的学生的学号:");
scanf("%d",&id);
Sleep(500);
printf("
查找相关数据.");
for(i=0;i<=15;i++)
{
Sleep(250);
printf(".");
}
for(i=0;i<input;i++)
{
if(stu[i].num==id) //如果找到了就执行下面语句 ,找不到直接回主界面
{
printf("
输入学生新学号:"); //输入学号
fflush(stdin);
scanf("%d",&stu[i].num);
printf("
输入学生新姓名:"); //输入姓名
fflush(stdin);
gets(stu[i].name);
printf("输入学生3科新成绩
");
printf("——————————————————————————————
");
printf("
计算机应用: ");
scanf("%f",&stu[i].score1);
fflush(stdin);
printf("
Java 语言: ");
scanf("%f",&stu[i].score2);
fflush(stdin);
printf("
C 语言: ");
scanf("%f",&stu[i].score3);
printf("——————————————————————————————
");
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp," %d %s %.1f %.1f %.1f %.1f %.1f
",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave,stu[i].sum);
}
}
}
void FindStu(struct student stu[]) //查询个人成绩信息
{
int i=0,id; //循环变量和用于接收学号
printf("请输入你要查询的学生学号:");
scanf("%d",&id);
for(i=0;i<input;i++)
{
if (stu[i].num==id) //如果找到你查询的数据就执行下面语句
{ //如果找不到。直接回程序主界面
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
printf("
学号 姓名 计算机应用 java语言 C 语言 总 分 平均成绩
");
printf("
%d %s %.1f %.1f %.1f %.1f %.1f

",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);
system("pause");
}
}
}
void InsertStu(struct student stu[]) //插入学员成绩信息
{
int flag=1;
pp=stu;
int i,id;
if((fp=fopen("insertdata.sys","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
fprintf(fp,"学号 姓名 计算机应用 Java C语言 A v eS u m
");
printf("输入你插入的学号:");
scanf("%d",&id);
for(i=0;i<input;i++)
{
if(stu[i].num==id) //判断学员的学号信息否存在?
{
printf("学号信息已经存在!
");
flag=0;
getch();
break;
}
}
if (flag!=0)
{
input++; //插入一个,原来的总数增加1
printf("请确认输入要插入学生的学号:");
scanf("%d",&stu[input-1].num); //如果不存在..那么就把插入的信息放到结构数组最后
printf("输入学生姓名:");
fflush(stdin);
gets(stu[input-1].name);
printf("输入学生3科成绩
");
printf("——————————————————————————————
");
printf("
计算机应用: ");
fflush(stdin);
scanf("%f",&stu[input-1].score1);
printf("
Java 语言: ");
fflush(stdin);
scanf("%f",&stu[input-1].score2);
printf("
C 语言: ");
fflush(stdin);
scanf("%f",&stu[input-1].score3);
printf("——————————————————————————————
");
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp," %d %s %.1f %.1f %.1f %.1f %.1f
",stu[input-1].num,stu[input-1].name,stu[input-1].score1,stu[input-1].score2,stu[input-1].score3,stu[input-1].ave,stu[input-1].sum);
Sleep(500);
printf("插入数据成功!
");
getch();
}
}
void ListStu(struct student stu[]) //浏览所有学生成绩
{
int i=0;
for(i=0;i<input;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
}

printf("
学号 姓名 计算机应用 java语言 C 语言 平均成绩 总 分
");
for(i=0;i<input;i++)
{
printf("
%d %s %.1f %.1f %.1f %.1f %.1f",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave, stu[i].sum);
}
getch();
}
void DelStu(struct student stu[]) //删除学员信息函数
{
pp=stu;
struct student temp;
int delnum;
char ask;
int i,j;
if((fp=fopen("Deldata.sys","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
fprintf(fp,"学号 姓名 计算机应用 Java C语言 A v eS u m
");
system("cls");
printf("

请输入你要删除的学员的学号:");
fflush(stdin);
scanf("%d",&delnum);
printf("
是否确认删除学员%d的信息(y/n)",delnum);
fflush(stdin);
ask = getchar();
if(ask != 'n')
{
for(i=0;i<input;i++)
{
if(stu[i].num == delnum)
break;
}
if(i > input)
printf("
没有你要删除的学员!
");
else
{
for(j=i;j<input;j++)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
input--; //删掉一个学员信息后学员总数相应-1
system("cls");
printf("

删除成功!
");
}
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp," %d %s %.1f %.1f %.1f %.1f %.1f
",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave,stu[i].sum);
getch();
}
}
void SortStu(struct student stu[]) //排序函数
{
int i,j,chose; //i,j为循环变量 chose为接收用户输入的排序方式
struct student temp;
printf("排序前的数据为
");
printf("
学号 姓名 计算机应用 java语言 C语言 平均成绩 总 分
");
for(i=0;i<input;i++)
{
printf("
%d %s %.1f %.1f %.1f %.1f %.1f
",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave,stu[i].sum);
}
printf("
1.按学号排序2.按总分(高→低)排序
");
printf("
请您正确选择:");
fflush(stdin);
scanf("%d",&chose);
if(chose==1)
{
for(i=0;i<input-1;i++)
{
for(j=i+1;j<input;j++)
{
if(stu[i].num>stu[j].num)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
printf("
学号 姓名 计算机应用 java语言 C语言 平均成绩 总 分
");
for(i=0;i<input;i++)
{
printf("
%d %s %.1f %.1f %.1f %.1f %.1f
",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave,stu[i].sum);
}
system("pause");
}
else if(chose==2)
{
for(i=0;i<input-1;i++)
{
for(j=i+1;j<input;j++)
{
if(stu[i].ave<stu[j].ave)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
printf("
学号 姓名 计算机应用 java语言 C语言 平均成绩 总 分
");
for(i=0;i<input;i++)
{
printf("
%d %s %.1f %.1f %.1f %.1f %.1f
",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave,stu[i].sum);
}
system("pause");
}
}
void Password() //密码验证函数
{
char *pass=NULL; //初始化指针
int i,count;
time_t start,end; //时间函数
pass=(char *)malloc(255*sizeof(char)); //分配内存
while(1)
{
count=0;
printf("




学 生 成 绩 管 理 系 统
");
printf("
UserName:ChenYiWan
");
printf("
PassWord:");
while((count>=0)&&(pass[count++]=getch())!=13) //密码输入
{
if(pass[0]=='\b')
{
count=0;
continue;
}
else if(pass[count-1]=='\b')
{
printf("%c%c%c",'\b','\0','\b');
count-=2;
}
else
putchar('*');
}
pass[--count]='\0';
if(!strcmp(pass,PASSWORD)) //开始验证
{
printf("

Loading");
for(i=0;i<=25;i++)
{
Sleep(250);
printf(".");
}
system("cls");
printf("








");
printf(" 欢 迎 登 陆 学 生 成 绩 管 理 系 统 !");
start=time(NULL);
end=time(NULL);
while(end-start<2) //延时2秒执行以下程序
{
end=time(NULL);
}
system("cls");
free(pass); //释放储存密码的内存
return ;
}
free(pass); //释放密码错误的那块内存
pass=(char *)malloc(255*sizeof(char)); //重新分配储存密码内存
system("cls");
printf("\a







密 码 错 误 !");
getch();
system("cls");
}
}
void Save(struct student stu[]) //成绩保存函数
{
int i,j;
pp=stu; //指针指向结构
system("cls");
printf("



Saving");
for(j=0;j<20;j++)
{
Sleep(300);
printf(".");
}
if((fp=fopen("stu_list2.doc","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
fprintf(fp,"学号 姓名 计算机应用Java C语言 A v eS u m
");
for(i=0;i<input;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp," %d %s %.1f %.1f %.1f %.1f %.1f
",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave,stu[i].sum);
}
}

求一个学生证管理系统源代码,以下是题目?
答:这个网上就有吧,可以上网找一找然后改一下

跪求C语言程序设计 仓库管理系统 源程序
答:int flag=1;system("cls");printf("\n");printf("\t\t\t\t 欢迎\n");printf("\n\n\t尊敬的用户, 非常感谢您使用本系统 , 您的完美体验将是我们前进的方向 !\n\n\n");printf("\t系统功能简介:\n\n\n");printf("\t\t①:通过键盘输入某位学生的学生证信息。\n\n");prin...

学生信息管理系统
答:如果一个学生想要注册,管理员必须首先添加学生证号码,然后该生才能注册。因为学生证号在注册表中是学生注册的认证码。④用户管理用户管理包含普通用户管理(即学生管理),教师管理和管理员管理。普通用户管理主要是管理一些学生由于误注册了他人的学生证号,这时就可以通过普通用户管理将其删除或者其它的操作。在普通用户管理...

学生证号怎么查
答:1、打开浏览器输入学信网,打开学信网网站进行查询;2、导航处点击学籍查询;3、点击登录学信档案;4、输入账号密码,进行登录;5、如果没有账号点击下面的注册,填写真实信息提交注册;6、登录成功后,进入学信档案页面,找到高等教育信息,学历;7、证书就出来了,这个和毕业证书一样的效果。未经省级招生...

学生证上学号是什么意思啊?
答:学生编号简称“学号”,是指学校为每一位学生分配的一个编号,为方便对学生的管理,一般每个人的学号不会重复,号码中一般会包含年份,班级等信息。很多学校将学号用做学生上机实验课登录电脑,许多课上回答问题等使用学号为点名依据,学号在学生中应用广泛,体育测试也使用学号作为依据来决定学生先后顺序。...

帮我编写一个中国农业大学的学生证号吧!!要一个07年大一的编号,希望标 ...
答:前两位“03”代表03级,三四位代表所在学院,“01” 是农学与生物技术学院,五六位是专业代码“01”为农学,第七位为班号,第八九位就是个人独有学号了“01”一定是北京的 这位同学是农学院农学031班的,生源北京 现在来解释一下你的04 11 25 4 03 “04”代表04级,“11”代表经济管理学院,“...

学生证号是什么啊
答:1、学生证号是学生证上面的“学生证号”,也就是学号;2、学生证,就是刚入校时由学校签发给该校已获得学籍的学生的身份证明证件,用以证明学生在该校就读并证明学生身份;3、学生证和校徽限本人使用,不得转借他人使用。

毕业证书编号与学生证编号是同一个吗?
答:都不是。毕(结)业证书编号即为注册号,使用阿拉伯数字,统一规范为18位。13位数字是毕业证书编号,20位数字是学生统编号码。从2001年起,我国开始对高等教育学历证书实行电子注册制度。毕业证编号也叫电子注册号,一般来说,只要在网上能通过姓名、毕业证编号查到毕业证信息,就能证明存在其学历。不同的...

c语言程序设计 麻烦大神们了 992932600@qq.com
答:是图书管理系统的,你要求实现的功能也都有 include <iostream.h> include <iomanip.h> include <string.h> include <fstream.h> const int Maxr=100; //读者上限 const int Maxb=100; //图书上限 const int Maxbor=5; //每个读者最多借借5本 class Reader //读者类 { int tag; //删除...

中国农业大学学生证填写方法 完整版填法分享
答:14、学生证管理制度 方法/步骤 发证日期:9月15日,如2009年入学,2009年9月15日 有效期:四年后的7月1日。如09年入学的,则填2013年7月1日 学号:入学年份(两位)+学院代码(两位)+专业代码(两位)+班级号(两位)+班级学号(两位)如:09年入学,经济管理学院代码08,国际贸易系代码07,班级4班,...