求一个学生证管理系统源代码,以下是题目? 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班,...