| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3274 人关注过本帖
标题:[转载]学生信息管理系统(C结构体系),供学习~
只看楼主 加入收藏
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
结帖率:100%
收藏
 问题点数:0 回复次数:17 
[转载]学生信息管理系统(C结构体系),供学习~

转载天涯朋友的,供大家共同学习,讨论~

/*****************************************************************/
// 学生学籍管理系统v1.0测试版.
// 开发者:☆ゞ天涯☆ゞ。
// 开发时间:2007-05-15
// 系统登陆密码:521314
// QQ: 214880229
/*****************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>

#define NAME 20
#define SEX 10
#define BIRTH 20
#define ADDDR 30
#define POTO 12
#define DAK 10
#define SCHOOL 30
#define SORC 6
#define STUDENTMAX 1000 //学生最大人数
#define PASSWORD "521314" //系统登陆密码

/************************学生信息结构体**********************/
struct studentinfo //学生个人信息结构
{
char name [NAME]; //学生姓名
char sex [SEX]; //学生性别
char birth [BIRTH]; //出生日期
char adddr [ADDDR]; //学生地址
char poto [POTO]; //联系电话
char dak [DAK]; //邮证编码
char school[SCHOOL]; //所在学校
};
struct studentsorc //学生成绩结构
{
char name[NAME]; //学生姓名
int ID; //学生学号
float sorc[6]; //记录学生成绩
float aver; //平均分
float sum; //总分
};
struct allstudentinfo //学生全部结构
{
struct studentinfo student;
struct studentsorc student1;
};

FILE *infofile=NULL; //存学生个人信息数据文件
FILE *sorcfile=NULL; //存学生成绩数据文件
char filename[]="c:\\学生个人信息登记.dat"; //记录个人信息登记
char filename1[]="c:\\学生成绩.dat"; //记录学生成绩

/************************函数块声明****************************/

void password(); //密码验证
int showmeun(); //系统主菜单显示
int submeun(); //子菜单显示
void sorcmeun(struct allstudentinfo *); //成绩管理子菜单
void submain(struct allstudentinfo *); //子系统
void inputinfo(struct allstudentinfo *); //输入学生个人信息
void modinfo(struct allstudentinfo *); //修改个人信息
void aboutinfo(struct allstudentinfo *); //查询个人信息
void allabout(struct allstudentinfo *); //查询所有信息
void delinfo(struct allstudentinfo *); //删除个人信息
void mofname(struct allstudentinfo *); //修改姓名
void mofsex(struct allstudentinfo *); //修改性别
void mofbirth(struct allstudentinfo *); //修改出生日期
void mofadddr(struct allstudentinfo *); //修改家庭住址
void mofpoto(struct allstudentinfo *); //修改电话号码
void mofdak(struct allstudentinfo *); //修改邮证编码
void mofschool(struct allstudentinfo *); //修改所在院校
int datfile(struct allstudentinfo *); //处理修改个人信息的文件
void inputsorc(struct allstudentinfo *); //个人成绩录入
void mofsorc (struct allstudentinfo *); //修改成绩
void seasorc (struct allstudentinfo *); //查找个人成绩
void seaallsorc(struct allstudentinfo *); //浏览所有成绩
void delsorc (struct allstudentinfo *); //删除成绩
int sorcdatfile(struct allstudentinfo *); //成绩数据文件
void systemhelp(); //系统帮助信息

int main(void)
{
struct allstudentinfo studentmax[STUDENTMAX]; //最大学生人数
struct allstudentinfo *p_student; //指向结构指针
int in;
time_t start,end;

p_student=studentmax; //指向结构体
password(); //获取用户密码验证

do
{
system("cls");
in=showmeun(); //系统主菜单显示
switch(in)
{
case 1 : submain(p_student);
break;
case 2 : sorcmeun(p_student);
break;
case 3 : systemhelp();
break;
case 4 : break;

default: printf("没有此选项,请按任意键返回重新选择!");
getch();
system("cls");
break;
}
}while(in!=4);
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t");
printf("谢 谢 使 用 本 系 统 !");
start=time(NULL);
end=time(NULL);
while(end-start<1.5)
end=time(NULL);
return 0;
}

/************************子系统*******************************/
void submain(struct allstudentinfo *p_student)
{
int in;

do
{
system("cls");
in=submeun(); //子菜单显示
switch(in)
{
case 1 : inputinfo(p_student); //输入个人信息
break;
case 2 : modinfo(p_student); //修改个人信息
break;
case 3 : aboutinfo(p_student); //查询个人信息
break;
case 4 : allabout(p_student); //查询所有信息
break;
case 5 : delinfo(p_student); //删除个人信息
break;
case 6 : break;

default: printf("没有此选项。请您重新输入(1-5)");
getch();
system("cls");
break;
}
}while(in!=6);
system("cls");
return ;
}

/************************密码验证*****************************/
void password()
{
char *pass=NULL; //初始化指针
int count;
time_t start,end; //时间函数

pass=(char *)malloc(255*sizeof(char)); //分配内存
while(1)
{
count=0;
printf("\n\n\n\n\n\t\t 学生信息管理系统Ver1.0测试版 \n");
printf("\n\t\t 用户名:TIANYA \n");
printf("\n\t\t 密 码:");
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)) //开始验证
{
system("cls");
printf("\n\n\n\n\n\n\n\n\n\t\t\t");
printf(" 欢 迎 登 陆 学 生 信 息 管 理 系 统 !");
start=time(NULL);
end=time(NULL);
while(end-start<1) //延时1秒执行以下程序
{
end=time(NULL);
}
system("cls");
free(pass); //释放储存密码的内存
return ;
}
free(pass); //释放密码错误的那块内存
pass=(char *)malloc(255*sizeof(char)); //重新分配储存密码内存
system("cls");
printf("\a\n\n\n\n\n\n\n\n\t\t\t\t密 码 错 误 !");
getch();
system("cls");
}
}

/***********************系统主菜单************************/
int showmeun()
{
int in;
char ch;

printf("\n\n\n\n");
printf("\t ╭────────────────────────────╮\n");
printf("\t ∣ 学生个人信息管理系统v1.0测试版 ∣\n");
printf("\t |————————————————————————————|\n");
printf("\t | \t    1. 学生个人信息管理            |\n");
printf("\t |                            |\n");
printf("\t | \t    2. 学生个人成绩管理            |\n");
printf("\t |                            |\n");
printf("\t | \t    3. 关于本系统帮助             |\n");
printf("\t |                            |\n");
printf("\t | \t    4. 退 出 系 统             |\n");
printf("\t |                            |\n");
printf("\t ╰────────────────────────────╯\n");
printf("\t 请您正确选择:");
while(scanf("%d",&in)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
return in;
}
fflush(stdin);
return in;
}

搜索更多相关主题的帖子: 信息管理系统 结构体系 学生 学习 
2007-11-02 08:26
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
收藏
得分:0 

/***************************修改个人信息子菜单************************/
void modinfo(struct allstudentinfo *p_student)
{
int in;
char ch;

do
{
system("cls");
printf("\n\n\n");
printf("\t\t ————————————————————————\n");
printf("\t\t|        个人信息修改管理       |\n");
printf("\t\t|———————————————————————|\n");
printf("\t\t|       1.修改用户姓名         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       2.修改用户性别         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       3.修改出生日期         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       4.修改家庭住址         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       5.修改联系电话         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       6.修改邮证编码         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       7.修改所在院校         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       8.退出系统           |\n");
printf("\t\t ————————————————————————\n");
printf("\t\t 请您正确选择:");
while(scanf("%d",&in)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" 没有此选项,请重新选择!");
getch();
system("cls");
return ;
}
fflush(stdin);
switch(in)
{
case 1 : mofname(p_student);
break;
case 2 : mofsex(p_student);
break;
case 3 : mofbirth(p_student);
break;
case 4 : mofadddr(p_student);
break;
case 5 : mofpoto(p_student);
break;
case 6 : mofdak(p_student);
break;
case 7 : mofschool(p_student);
break;
case 8 : return ;

default: printf("没有此选项,请重新选择!");
break;
}
}while(1);
}

/*************************个人信息录入*************************/
void inputinfo(struct allstudentinfo *p_student)
{
int count;
char ch;

system("cls");
if((infofile=fopen(filename,"a+b"))==NULL)
{
printf("不能打开文件,请确认磁盘已满或c:\\学生个人信息登记.dat文件没有损坏");
getch();
exit(1);
}
rewind(infofile); //定位文件头开始读取
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
continue;
printf("\n\n 个人信息登记表\n");
printf("\n请正确填写以下信息(系统目前不能支持中文,请用英文或拼音\n");
printf("---------------------------------------------------------\n\n");
printf("姓 名:");
while(count<STUDENTMAX&&gets(p_student[count].student.name)!=NULL //输入姓名
&&p_student[count].student.name[0]!='\0')
{
printf("\n性 别:");
gets(p_student[count].student.sex); //输入性别
printf("\n出生日期:");
gets(p_student[count].student.birth); //输入出生日期
printf("\n家庭住址:");
gets(p_student[count].student.adddr); //输入家庭地址
printf("\n联系电话:");
gets(p_student[count].student.poto); //输入电话
printf("\n邮证编码:");
gets(p_student[count].student.dak); //输入邮证编码
printf("\n所属院校:");
gets(p_student[count].student.school); //输入所在院校
//将信息写入文件
fwrite(&p_student[count++].student,sizeof(struct studentinfo),1,infofile);

printf("是否录入下一个学生信息(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
system("cls");
printf("\n请输入下一个学生的个人信息\n");
printf("\n姓 名:");
continue;
} //继续输入下一个学生信息
else
{
printf("\n\n个人信息录入结束,返回!");
fclose(infofile); //关闭文件
getch(); //返回子菜单
system("cls");
return ;
}
}
printf("输入有误,终止个人信息录信,返回!");
getch();
system("cls");
return ; //返回
}

/***********************查询个人信息****************************/
void aboutinfo(struct allstudentinfo *p_student)
{
int i;
int count; //学生计数器
char ch;
char *temp=NULL; //临时存储要查询的用户姓名

system("cls");
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能打开文件,请确认磁盘已满或文件是否存在");
getch();
exit(1);
}
rewind(infofile); //指向文件头
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile); //关闭文件
if(!count)
{
printf("找不到个人数据,请确认已经成功录入或文件是否存在!");
getch();
system("cls");
return ;
}
temp=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要查询的学生姓名:");
while(gets(temp)!=NULL&&temp[0]!='\0')
{
for(i=0;i<count;i++)
{
if(!strcmp(temp,p_student.student.name))
{
system("cls");
printf("以下是你要查询%s的个人信息\n",p_student.student.name);
printf("\n 个人信息查询表\n");
printf("-----------------------------------------------------------------\n");
printf("\n姓 名: %s\n",p_student.student.name);
printf("\n性 别: %s\n",p_student.student.sex);
printf("\n出生日期: %s\n",p_student.student.birth);
printf("\n家庭住址: %s\n",p_student.student.adddr);
printf("\n联系电话: %s\n",p_student.student.poto);
printf("\n邮证编码: %s\n",p_student.student.dak);
printf("\n所在院校: %s\n",p_student.student.school);
printf("-----------------------------------------------------------------\n");
break;
}
}
free(temp); //释放空间
printf("\n查询下一个学生的个人信息(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
system("cls");
temp=(char *)malloc(20*sizeof(char)); //重新分配内存
printf("请输入要查询的学生姓名:");
continue;
}
else
{
printf("\n查询结束,返回!");
getch();
system("cls");
return ;
}
}
free(temp); //释放已经分配的内存空间
printf("\n输入有误,请按任意键返回子菜单!");
getch();
system("cls");
}

/****************************查询所有信息*******************************/
void allabout(struct allstudentinfo *p_student)
{
int i;
int count;

system("cls");
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能打开文件,请确认文件是否存在或是否损坏!");
getch();
exit(1);
}
rewind(infofile); //定位到文件头
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile); //读完后关闭文件
if(!count)
{
printf("不能读取数据,请确定文件是否存在或已经成功录入数据!");
getch();
system("cls");
return ; //反回重新操作
}
printf("\n\t\t\t 学生个人信息查询表\n\n");
printf("\t 以下是本系统所查询到的所有学生个人信息,如果表中找不到数据\n");
printf(" 请确认是否已经成功录入本系统!\n");
printf("----------------------------------------");
printf("----------------------------------------\n");
for(i=0;i<count;i++)
{
printf("您正在查看第[%d]个学生的个人信息\n",i+1);
printf("\n姓 名: %s\n",p_student.student.name);
printf("\n性 别: %s\n",p_student.student.sex);
printf("\n出生日期: %s\n",p_student.student.birth);
printf("\n家庭住址: %s\n",p_student.student.adddr);
printf("\n联系电话: %s\n",p_student.student.poto);
printf("\n邮证编码: %s\n",p_student.student.dak);
printf("\n所在院校: %s\n",p_student.student.school);
printf("------------------------------------");
printf("------------------------------------\n");
printf("请按任意键继续查看信息........!");
getch();
system("cls");
}
printf("\n查询结束...");
printf("请按任意键返回!");
getch();
system("cls");
return ;
}

/****************************删除个人信息*******************************/
void delinfo(struct allstudentinfo *p_student)
{
int i;
int count;
char ch;
char *temp=NULL; //初始化临时数组

system("cls"); //清屏
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能打开文件,请确认磁盘已满或文件是否存在");
getch();
exit(1);
}
rewind(infofile); //指向文件头
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile); //关闭文件
if(!count)
{
printf("不能读取数据,请确认已经正确录入或数据是否存在");
getch();
return ;
}
temp=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入你要删除的学生姓名:");
while(gets(temp)!=NULL&&temp[0]!='\0')
{
for(i=0;i<count;i++)
{
if(!strcmp(temp,p_student.student.name))
{
system("cls");
printf("\a\n\n\n\n\n\n\t\t 确定要删除%s的个人信息吗?(y/n)",p_student.student.name);
ch=getch();
if(ch=='n'||ch=='N')
{
free(temp);
system("cls");
printf("\n\n\n\n\n\n\t\t 该操作已取消.请按任意键返回!");
getch();
system("cls");
return ;
}
for(;i<count;i++)
{
p_student.student=p_student[i+1].student;
}
count--; //删除一个学生信息
if((infofile=fopen(filename,"w+b"))==NULL) //重新打开文件更新
{
free(temp);
printf("不能打开文件,请确认磁盘已满或文件是否存在");
getch();
exit(1);
}
for(i=0;i<count;i++)
{ //更新文件
if(fwrite(&p_student.student,sizeof(struct studentinfo),1,infofile)!=1)
break;
}
free(temp); //释放内存
system("cls");
printf("\n\n\n\n\n\n\t\t 已成功删除该学生的个人信息.....\n");
printf("\n\t\t确定要删除下一个学生个人信息(y/n)");
ch=getch();
if(ch=='n'||ch=='N')
{
fclose(infofile);
system("cls");
return ;
}
else
{

system("cls");
temp=(char *)malloc(20*sizeof(char)); //重新分配内存以删除下一个信息
printf("请输入你想要删除的学生姓名:");
break;
}
}
}
printf("找不到%s的个人信息.",temp);
printf("请重新输入(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
free(temp);
temp=(char *)malloc(sizeof(char)); //重新分配
system("cls");
printf("请输入你要删除的学生姓名:");
continue;
}
else
{
free(temp);
system("cls");
return ;
}
}
free(temp); //释放内存
printf("输入有误,请按任意键返回子菜单,重新选择");
getch();
system("cls");
}


用代码打出楼房...用编程编出幸福...
2007-11-02 08:28
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
收藏
得分:0 

/**********************修改用户姓名***************************/
void mofname(struct allstudentinfo *p_student)
{
char ch;
char *temp;
char *newtemp;
int count;
int i;

system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或文件数据是否损害!");
getch();
return ;
}
newtemp=(char *)malloc(20*sizeof(char)); //分配内存
temp= (char *)malloc(20*sizeof(char)); //分配内存
printf("请输入您要修改的学生姓名:");
while(gets(temp)!=NULL&&temp[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(temp,p_student.student.name))
{
continue;
}
else
{
printf("请您输入该学生的新姓名:");
gets(newtemp);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要把姓名为%s的学生修改为%s码?(y/n)",temp,newtemp);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student.student.name,newtemp); //修改姓名
infofile=fopen(filename,"w+b"); //重新写入文件
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
printf("修改失败,返回重新操作.....");
getch();
free(temp);
free(newtemp);
system("cls");
return ;
}

}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t已成功把%s修改为%s返回!",temp,newtemp);
getch();
free(temp);
free(newtemp);
system("cls");
return ;
}
}
}
printf("找不到%s的个人信息,返回重新操作!",temp);
free(temp);
free(newtemp);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t输入有误,请返回重新操作!");
getch();
free(temp);
free(newtemp);
system("cls");
return ;
}


/************************修改个人性别*********************/
void mofsex(struct allstudentinfo *p_student)
{
char *tempname; //要修改的学生的名字
char *tempsex; //要修改的学生的性别
char ch;
int count;
int i;

system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入数据或文件是否损坏!");
getch();
return ;
}

tempname=(char *)malloc(10*sizeof(char)); //分配内存
tempsex=(char *)malloc(10*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student.name))
continue;
else
{
printf("请输入该学生的新性别:");
gets(tempsex);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改该学生的性别吗?(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student.student.sex,tempsex);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,请返回.....");
getch();
free(tempname);
free(tempsex);
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t已成功修改%s的性别,返回!",tempname);
getch();
free(tempname);
free(tempsex);
system("cls");
return ;
}
printf("该操作已衩取消,返回.....");
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
}
printf("找不到%s的个人信息,返回......",tempname);
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新输入!");
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}

/**************************修改出生日期***************************/
void mofbirth(struct allstudentinfo *p_student)
{
char *tempname;
char *tempbirth;
char ch;
int i,count;

system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
return ;
}

tempname=(char *)malloc(20*sizeof(char));
tempbirth=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student.name))
continue;
else
{
printf("请重新输入该学生的出生日期:");
gets(tempbirth);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的出生日期吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student.student.birth,tempbirth);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempbirth);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回......");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的出生日期,返回!,",tempname);
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回!");
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回!",tempname);
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择!");
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}

/***********************修改家庭住址*********************/
void mofadddr(struct allstudentinfo *p_student)
{
char *tempname;
char *tempadddr;
char ch;
int i,count;


用代码打出楼房...用编程编出幸福...
2007-11-02 08:28
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
收藏
得分:0 

system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
return ;
}

tempname=(char *)malloc(20*sizeof(char));
tempadddr=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student.name))
continue;
else
{
printf("请重新输入该学生的家庭住址:");
gets(tempadddr);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的家庭住址吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student.student.adddr,tempadddr);
infofile=fopen(filename,"w+b"); //重新写入数据库
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempadddr);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的家庭住址,返回......!,",tempname);
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回.......!");
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
/*****************************修改联系电话********************************/
void mofpoto(struct allstudentinfo *p_student)
{
char *tempname;
char *temppoto;
char ch;
int i,count;

system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}

tempname=(char *)malloc(20*sizeof(char));
temppoto=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student.name))
continue;
else
{
printf("请重新输入该学生的联系电话:");
gets(temppoto);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的联系电话吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student.student.poto,temppoto);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(temppoto);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的联系电话,返回.......!,",tempname);
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回.......!");
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
/**************************修改邮证编码*************************/
void mofdak(struct allstudentinfo *p_student)
{
char *tempname;
char *tempdak;
char ch;
int i,count;

system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}

tempname=(char *)malloc(20*sizeof(char));
tempdak =(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student.name))
continue;
else
{
printf("请重新输入该学生的邮证编码:");
gets(tempdak);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的邮证编码吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student.student.dak,tempdak);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempdak);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的邮证编码,返回.......!",tempname);
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已取消,返回.......!");
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
/*************************修改所在院校******************************/
void mofschool(struct allstudentinfo *p_student)
{
char *tempname;
char *tempschool;
char ch;
int i,count;

system("cls");
count=datfile(p_student); //文件处理
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}

tempname=(char *)malloc(20*sizeof(char));
tempschool=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student.name))
continue;
else
{
printf("请重新输入该学生的所在院校:");
gets(tempschool);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的所在院校吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student.student.school,tempschool);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempschool);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的所在院校,返回.......!",tempname);
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已取消,返回.......!");
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}

/**************************修改个人信息的主要操作文件**************************/
int datfile(struct allstudentinfo *p_student)
{
int count;

system("cls");
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能找开文件,请确认磁盘已满或文件是否存在!");
getch();
exit(1);
}
rewind(infofile); //指向文件头读取数据
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile);

return count; //返回读到的结构块数
}

/***************************学生个人成绩管理***********************************/
// 此子系统目前只支持学生的个人成绩的录入,修改,删除,查询等功能
// 如没有在个人信息管理系统中登记个人信息的,可能会造成无法查询
// 访问等错误的提示,请尽量在个人信息管理系统中成功登记了关于学生
// 个人的相关信息之后再使用本系统。
/******************************************************************************/
void sorcmeun(struct allstudentinfo *p_student)
{
int in;
char ch;

do
{
system("cls");
printf("\n\n\n\n");
printf("\t\t  —————————————————————\n");
printf("\t\t | 学生个人成绩管理 |\n");
printf("\t\t |————————————————————|\n");
printf("\t\t |     1. 录入学生个人成绩      |\n");
printf("\t\t |                    |\n");
printf("\t\t |    2. 修改学生个人成绩      |\n");
printf("\t\t |                    |\n");
printf("\t\t |    3. 查询学生个人成绩      |\n");
printf("\t\t |                    |\n");
printf("\t\t |    4. 浏览所有学生的成绩     |\n");
printf("\t\t |                    |\n");
printf("\t\t |    5. 删除学生成绩        |\n");
printf("\t\t |                    |\n");
printf("\t\t |    6. 退出成绩管理系统      |\n");
printf("\t\t |————————————————————|\n");
printf("\t\t  请您正确选择: ");
if(!(scanf("%d",&in)==1))
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" 没有此选项,请正确选择!");
getch();
continue;
}
fflush(stdin);
switch(in)
{
case 1 : inputsorc(p_student); //录入成绩
break;
case 2 : mofsorc (p_student); //修改成绩
break;
case 3 : seasorc (p_student); //查询个人成绩
break;
case 4 : seaallsorc(p_student); //浏览所有学生成绩
break;
case 5 : delsorc (p_student); //删除学生成绩
break;
case 6 : return ; //返回

default: printf("没有此选项,请正确选择!");
break;
}
}while(1);
}

/************************个人成绩录入*************************/
void inputsorc(struct allstudentinfo *p_student)
{
int count;
char *tempname,ch;

system("cls");
if((sorcfile=fopen(filename1,"a+b"))==NULL) //打开或新建成绩数据文件
{
printf("不能找开文件,请确认磁盘已满或文件是否存在");
getch();
exit(1);
}
rewind(sorcfile); //定位文件头
for(count=0;fread(&p_student[count].student1,sizeof(struct studentsorc),1,sorcfile)==1;count++)
{
continue;
}
tempname=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入第%d学生的姓名:",count+1);
while(count<STUDENTMAX&&gets(tempname)!=NULL&&tempname[0]!='\0')
{
strcpy(p_student[count].student1.name,tempname);
printf("请输入该学生的学号:");
scanf("%d",&p_student[count].student1.ID); //输入学号
fflush(stdin); //刷新绶冲
printf("请输入该学生的6科成绩\n");
printf("——————————————————————————————\n");
printf("\n语文: ");
scanf("%f",&p_student[count].student1.sorc[0]);
fflush(stdin);
printf("\n数学: ");
scanf("%f",&p_student[count].student1.sorc[1]);
fflush(stdin);
printf("\n英语: ");
scanf("%f",&p_student[count].student1.sorc[2]);
fflush(stdin);
printf("\n化学: ");
scanf("%f",&p_student[count].student1.sorc[3]);
fflush(stdin);
printf("\n物理: ");
scanf("%f",&p_student[count].student1.sorc[4]);
fflush(stdin);
printf("\n计算机应用与基础: ");
scanf("%f",&p_student[count].student1.sorc[5]);
fflush(stdin);
printf("——————————————————————————————\n");
fwrite(&p_student[count++].student1,sizeof(struct studentsorc),1,sorcfile);
//写入文件
printf("确定要继续输入下一个学生的成绩吗(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
system("cls");
free(tempname); //释放内存重新分配
tempname=(char *)malloc(20*sizeof(char));
printf("请输入第%d个学生的姓名:",count+1);
continue;
}
else
{
system("cls");
free(tempname);
fclose(sorcfile);
return ;
}
}
printf("输入有误请返回重新选择操作.......!");
free(tempname);
fclose(sorcfile);
getch();
system("cls");
return ;
}

/************************修改学生成绩****************************/
void mofsorc(struct allstudentinfo *p_student)
{
int i,j,k,count;
float sorc;
char *tempname;

count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败,请确认已成功录入或文件是否损害");
getch();
system("cls");
return ;
}
tempname=(char *)malloc(20*sizeof(char)); //分配内存


用代码打出楼房...用编程编出幸福...
2007-11-02 08:29
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
收藏
得分:0 

printf("请输入要修改成绩的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student1.name))
{
continue;
}
else
{
printf("请选择要修改的科目成绩:1.语文 2.英语 3.数学 4.化学 5.物理 6.计算机应用与基础\n");
scanf("%d",&j);
fflush(stdin);
if(j==1)
{
printf("请重新输入%s的语文成绩: ",tempname);
scanf("%f",&sorc);
p_student.student1.sorc[0]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b"); //把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile); //写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回!.......");
getch();
system("cls");
return ;
}
else if(j==2)
{
printf("请重新输入%s的英语成绩: ",tempname);
scanf("%f",&sorc);
p_student.student1.sorc[2]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b"); //把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile); //写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else if(j==3)
{
printf("请重新输入%s的数学成绩: ",tempname);
scanf("%f",&sorc);
p_student.student1.sorc[1]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b"); //把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile); //写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else if(j==4)
{
printf("请重新输入%s的化学成绩: ",tempname);
scanf("%f",&sorc);
p_student.student1.sorc[4]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b"); //把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile); //写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else if(j==5)
{
printf("请重新输入%s的物理成绩: ",tempname);
scanf("%f",&sorc);
p_student.student1.sorc[4]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b"); //把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile); //写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else if(j==6)
{
printf("请重新输入%s的计算机应用与基础成绩: ",tempname);
scanf("%f",&sorc);
p_student.student1.sorc[5]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b"); //把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile); //写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else
{
printf("没有此科目,返回.......!");
free(tempname);
getch();
system("cls");
return ;
}
}
}
printf("没有找到%s的学习成绩,返回.......!",tempname);
free(tempname);
getch();
system("cls");
return ;
}
printf("输入有误,返回.......!");
free(tempname);
getch();
system("cls");
return ;
}

/***************************查询学生个人成绩****************************/
void seasorc(struct allstudentinfo *p_student)
{
char *tempname;
int tempID,stuID;
int i,j,count;
float sum=0.0,aver;

count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败,请确认数据是否存在或文件是否损害");
getch();
system("cls");
return ;
}
printf("请选择要操作的类形:\n");
printf("1.按姓名查找 2.按学号查找\n");
scanf("%d",&tempID);
fflush(stdin);
if(tempID==1) //按姓名查询
{
tempname=(char *)malloc(20*sizeof(char));
printf("请输入该学生的姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student1.name))
{
continue;
}
else
{
for(j=0;j<6;j++)
{
sum+=p_student.student1.sorc[j]; //计算总分
}
aver=sum/6.0; //计算平均分
printf("%s的学生成绩表\n",tempname);
printf("——————————————————————————\n");
printf("\n学号: %d\n",p_student.student1.ID);
printf("\n姓名: %s\n",p_student.student1.name);
printf("\n语文: %.2f\n",p_student.student1.sorc[0]);
printf("\n数学: %.2f\n",p_student.student1.sorc[1]);
printf("\n英语: %.2f\n",p_student.student1.sorc[2]);
printf("\n化学: %.2f\n",p_student.student1.sorc[3]);
printf("\n物理: %.2f\n",p_student.student1.sorc[4]);
printf("\n计算机应用与基础: %.2f\n",p_student.student1.sorc[5]);
printf("\n总分: %.2f\n",sum);
printf("\n平均分: %.2f\n",aver);
printf("——————————————————————————\n");
printf("查询完毕,按任意键返回!");
free(tempname);
getch();
system("cls");
return ;
}
}
printf("找不到该学生的成绩,返回.......!");
free(tempname);
getch();
system("cls");
return ;
}
printf("输入有误,返回.......!");
free(tempname);
getch();
system("cls");
return ;
}
else if(tempID==2) //按学号查询
{
printf("请输入该学生的ID学号:");
scanf("%d",&stuID);
fflush(stdin);
for(i=0;i<count;i++)
{
if(stuID!=p_student.student1.ID)
{
continue;
}
else
{
for(j=0;j<6;j++)
{
sum+=p_student.student1.sorc[j]; //计算总分
}
aver=sum/6.0; //计算平均分
printf("学号为%d的学生成绩表\n",stuID);
printf("——————————————————————————\n");
printf("\n学号: %d\n",p_student.student1.ID);
printf("\n姓名: %s\n",p_student.student1.name);
printf("\n语文: %.2f\n",p_student.student1.sorc[0]);
printf("\n数学: %.2f\n",p_student.student1.sorc[1]);
printf("\n英语: %.2f\n",p_student.student1.sorc[2]);
printf("\n化学: %.2f\n",p_student.student1.sorc[3]);
printf("\n物理: %.2f\n",p_student.student1.sorc[4]);
printf("\n计算机应用与基础: %.2f\n",p_student.student1.sorc[5]);
printf("\n总分: %.2f\n",sum);
printf("\n平均分: %.2f\n",aver);
printf("——————————————————————————\n");
printf("查询完毕,按任意键返回.......!");
getch();
system("cls");
return ;
}
}
printf("没有找到该学号的成绩,返回.......!");
getch();
system("cls");
return ;
}
printf("没有此选择,返回.......!");
getch();
system("cls");
return ;
}

/******************************浏览所有学生的成绩*********************************/
void seaallsorc(struct allstudentinfo *p_student)
{
int i,j,count;
float aver,sum=0.0f;

count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败,请确认已成功录入或文件是否损害!");
getch();
return ;
}
printf("\n\t\t\t学生成绩表\n");
for(i=0;i<count;i++)
{
sum=aver=0.0; //重新初始化,计算下一次
for(j=0;j<6;j++)
{
sum+=p_student.student1.sorc[j]; //计算总分
}
aver=sum/6.0; //计算平均分
printf("——————————————————————————————————\n");
printf("学号: %d\n",p_student.student1.ID);
printf("姓名: %s\n",p_student.student1.name);
printf("语文成绩: %.2f\n",p_student.student1.sorc[0]);
printf("数学成绩: %.2f\n",p_student.student1.sorc[1]);
printf("英语成绩: %.2f\n",p_student.student1.sorc[2]);
printf("化学成绩: %.2f\n",p_student.student1.sorc[3]);
printf("物理成绩: %.2f\n",p_student.student1.sorc[4]);
printf("计算机成绩: %.2f\n",p_student.student1.sorc[5]);
printf("总分成绩: %.2f\n",sum);
printf("平均分成绩: %.2f\n",aver);
printf("————————————————————————————————\n");
printf("请按任意键继续浏览.......!");
getch();
}
printf("浏览完毕,请返回.......!");
getch();
system("cls");
return ;
}
/************************删除学生成绩******************************/
void delsorc(struct allstudentinfo *p_student)
{
int in,stuID;
int i,count;
char *tempname;

count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败!请确认已成功录入功或文件是否损害!");
getch();
system("cls");
return ;
}
printf("请选择你操作的选项: 1. 按姓名查找删除 2. 按学号查找删除");
scanf("%d",&in);
fflush(stdin);
if(in==1)
{
tempname=(char *)malloc(20*sizeof(char));
printf("请输入你要删除的学生姓名: ");
gets(tempname);
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student.student1.name))
continue;
else
{
for(;i<count;i++)
{
p_student.student1=p_student[i+1].student1;
}
--count; //成绩减1
sorcfile=fopen(filename1,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student1,sizeof(struct studentsorc),1,sorcfile)==1)
continue;
else
{
printf("删除失败...!");
free(tempname);
fclose(sorcfile);
getch();
system("cls");
return ;
}
}
printf("删除成功...!");
free(tempname);
fclose(sorcfile);
getch();
system("cls");
return ;
}
}
printf("找不到该学生,返回...!");
free(tempname);
getch();
system("cls");
return ;
}
else if(in==2)
{
printf("请输入你要删除的学生学号: ");
scanf("%d",&stuID);
fflush(stdin);
for(i=0;i<count;i++)
{
if(stuID!=p_student.student1.ID)
continue;
else
{
for(;i<count;i++)
{
p_student.student1=p_student[i+1].student1;
}
--count; //成绩减1
sorcfile=fopen(filename1,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student.student1,sizeof(struct studentsorc),1,sorcfile)==1)
continue;
else
{
printf("删除失败...!");
fclose(sorcfile);
getch();
system("cls");
return ;
}
}
printf("删除成功...!");
fclose(sorcfile);
getch();
system("cls");
return ;
}
}
printf("找不到该学生,返回...!");
getch();
system("cls");
return ;
}
printf("输入有误,返回...!");
getch();
system("cls");
return ;
}
/**********************成绩数据文件***************************/
int sorcdatfile(struct allstudentinfo *p_student)
{
int count;

system("cls");
if((sorcfile=fopen(filename1,"rb"))==NULL)
{
printf("不能找开文件,请确认磁盘已满或文件是否存在!");
getch();
exit(1);
}
rewind(sorcfile); //指向文件头读取数据
for(count=0;fread(&p_student[count].student1,sizeof(struct studentsorc),1,sorcfile)==1;count++)
{
continue;
}
fclose(sorcfile);

return count; //返回读到的结构块数
}

/*****************************系统帮助信息*******************************/

void systemhelp()
{
system("cls");
printf("\n\n\n\t\t\t系统消息\n");
printf("\t——————————————————————————————\n");
printf("\t 本系统目前不去持汉字录入,请使用英语,拼音或其它助记方式录入\n");
printf("\t为了能正常使用本系统,请先使用个人信息管理系统把学生的个人信息录\n");
printf("\t入做好学籍登记再使用成绩管理系统来记录成绩,如要使用修改和删除功\n");
printf("\t能请谨慎使用,或先将资料做好备份以免因系统出错造成数据丢失!\n");
printf("\t——————————————————————————————\n");
printf(" 开发者:天涯 \n");
printf(" 开发时间:2007-05-12\n");
getch();
system("cls");
return ;
}


用代码打出楼房...用编程编出幸福...
2007-11-02 08:29
shlg1229
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-9-24
收藏
得分:0 
好东西。顶了 !!

个人意见,不代表官方看法
2007-11-02 09:14
ltdtfking
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-10-7
收藏
得分:0 
我爱死你了,你这个东西怎么写出来的,太强了你。加我QQ吧,我要像你学习啊。请帮帮我吧
QQ:53458904
2007-11-02 14:25
下雨浇花
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-9-19
收藏
得分:0 
哈哈,写的很很详细,功能很很齐全
不顶不行

花不浇,长不大;雨不下,不浇花...
2007-11-02 18:14
jackys2006
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2006-3-10
收藏
得分:0 
垃圾,不能运行的东西,
N多错误

2007-11-02 19:24
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
晕,上面那些程序一半是界面操作,浪费各位看的时间。而且里面还没有排序,我这个里面短,而且条理也不错。拿来让各位学习,上面反复的代码太多。让人看烦。小弟写了一个小一点。

#include<stdio.h>
#include <stdlib.h>
#include<process.h> // exit()
#define MAX 3
typedef struct stu
{ int num;
char name[4];
float sroce[3];
float sum;
float ave;
}student;
typedef struct stuList
{
student data;
}StuList;
void Cretestu(StuList stu[])//建立
{ int i;
int j;
for(i=0;i<MAX;i++)
{ printf("输入学号:");
scanf("%d", &(stu[i].data.num));
printf("\n输入名字");
scanf("%s",&(stu[i].data.name));
for(j=0;j<3;j++)
{printf("输入成绩,语,数,外分别为0,1,2%d:\n",j);
scanf("%f",&(stu[i].data.sroce[j]));
}

}
}
void stusum(StuList stu[])//计算总分,和平均分
{ int i;
int j;
float sum;
for(i=0;i<MAX;i++)
{ sum=0;
for(j=0;j<3;j++)
{
sum+=stu[i].data.sroce[j];
}
stu[i].data.sum=sum;
stu[i].data.ave=sum/3;
}
}
void print(StuList stu[])
{ int i;
printf("num _name ___yuwei ___suxue ___EngList ___总分 ___平均分\n");
for(i=0;i<MAX;i++)
{
printf("%d %s %f %f %f %f %f\n",
stu[i].data.num,stu[i].data.name,
stu[i].data.sroce[0],stu[i].data.sroce[1],
stu[i].data.sroce[2],
stu[i].data.sum,stu[i].data.ave);
}
}
void sortstuList(StuList *stu)//以总分作为排序
{
int i;
int j;
int k;
StuList temp;
for(i=0;i<MAX-1;i++)
{k=i;

for(j=i+1;j<MAX;j++)
{
if(stu[j].data.sum>stu[k].data.sum)
{ k=j;
}
}
if(k!=i)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
}

}
int main(int argc, char *argv[])
{ int menu;
StuList students[MAX];


while(1)
{ scanf("%d",&menu);
switch(menu)
{case 0:sortstuList(students);break;
case 1:print(students);break;
//case 2:exit(0);
case 3:Cretestu(students);break;
case 4:stusum(students);break;
}
}
return 0;
}
2007-11-02 21:33
快速回复:[转载]学生信息管理系统(C结构体系),供学习~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034053 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved