C语言学生信息管理系统程序设计

2024-11-02 08:33:50
推荐回答(3个)
回答(1):

如果多找几个人,我倒是有兴趣加入一起做,毕竟这个程序还是挺大的,代码量也大,不是说一个人一两天就能完成的。

回答(2):

#include

void shuru(FILE *wfp);
void tianjia(FILE *cfp);
void chazhao(FILE *zfp);
void shanchu(FILE *sfp);
int choice(void );

struct student
{
char name[12];
int sex;
int old;
int number;
}stu[50];

int main( )
{
int b;
FILE *fp = NULL;
fp = fopen("d:\\student.bin","rb+");
b = choice( );

switch(b)
{

case 1:
shuru(fp);
break;

case 2:
tianjia(fp);
break;

case 3:
chazhao(fp);

break;

case 4:
shanchu(fp);
break;

case 0:
break;

default:
printf("Incorrect choice\n");
break;
}

fclose(fp);

return 0;
}

void shuru(FILE *wfp)
{

int count = 0;
int c = 0,d = 0;

do{
fseek(wfp,count * sizeof(struct student),SEEK_SET);
printf("请输入学生的姓名、性别(1.男2.女)、年龄、号码\n");
printf("姓名:");
scanf("%s",&stu[count].name);
printf("性别:");
scanf("%s",&stu[count].sex);
printf("年龄:");
scanf("%d",&stu[count].old);
printf("号码:");
scanf("%d",&stu[count].number);

fwrite(&stu[count],sizeof(stu),1,wfp);

count++;

printf("您是否继续输入信息?1.是2.否");

scanf("%d",&c);
}while(c == 1);

printf("1.返回首页");
printf("0.退出");
scanf("%d",&d);

switch(d)
{
case 1:
main( );
break;
case 0:
break;
}

}

void tianjia(FILE *cfp)
{
int e = 0;
int f = 0;
int h = 0;
int w;

do{

printf("请输入您要添加的位置");
scanf("%d",&e);

fseek(cfp,(e-1) * sizeof(struct student),SEEK_SET);

printf("姓名:");
scanf("%s",&stu[e-1].name);
printf("性别:");
scanf("%s",&stu[e-1].sex);
printf("年龄:");
scanf("%d",&stu[e-1].old);
printf("号码:");

scanf("%d",&stu[e-1].number);

fseek(cfp,e * sizeof(struct student),SEEK_SET);

fwrite(&stu[e-1],sizeof(stu),1,cfp);

printf("您是否继续添加信息?1.是2.否");
scanf("%d",&f);
}while(f == 1);

printf("1.返回首页");
printf("0.退出");
scanf("%d",&h);

switch(h)
{
case 1:
main( );
break;
case 0:
break;
}

}

void chazhao(FILE *zfp)
{
int i = 0,j = 0,k = 0;

do{
printf("请输入您要查找的学生的号码:");
scanf("%d",&i);

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

printf("name:%s\n",stu[i].name);
if(stu[i].sex == 1)
{
printf("sex:boy\n");
}
else
{
printf("sex:girl\n");

}
printf("old:%d\n",stu[i].old);
printf("number:%d\n",stu[i].number);

printf("您是否继续查找信息?1.是2.否");
scanf("%d",&j);
}while(j == 1);

printf("1.返回首页");
printf("0.退出");
scanf("%d",&k);

switch(k)
{
case 1:
main( );
break;
case 0:
break;
}
}

void shanchu(FILE *sfp)
{
int l = 0,m = 0,n = 0;
struct student blank = {"",0,0,0};
do{
printf("请输入您要删除的学生的号码:");
scanf("%d",&l);

fseek(sfp,(l - 1) * sizeof(struct student),SEEK_SET);

fread(&stu,sizeof(stu[l]),1,sfp);

fseek(sfp,(l - 1) * sizeof(struct student),SEEK_SET);

fwrite(&blank,sizeof(struct student),1,sfp);

printf("您是否继续查找信息?1.是2.否");
scanf("%d",&m);

}while(m == 1);

printf("1.返回首页");
printf("0.退出");
scanf("%d",&n);

switch(n)
{
case 1:
main( );
break;
case 0:
break;
}
}

int choice(void )
{
int a;
printf("欢迎进入学生基本信息管理系统:\n");
printf("1.学生信息输入\n");
printf("2.学生信息添加\n");
printf("3.学生信息查找\n");
printf("4.学生信息删除\n");
printf("0.退出\n");

scanf("%d",&a);

return a;
}
根据要求 自己改改!

回答(3):

#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
void look(); /*声明查看函数*/
void save(); /*声明保存函数*/
void search_name(); /*声明按姓名查看函数*/
void search_number(); /*声明按学号查看函数*/
void order(); /*声明排序函数*/
void del(); /*声明删除函数*/
int openl(); /*声明打开函数*/
void welcome(); /*声明我的个人信息函数*/
void type(); /*声明输入函数*/
void see(); /*声明打开并查看文件函数*/
struct student /*定义学生信息的结构体类型*/
{
char num[15]; /*学号*/
char name[20]; /*姓名*/
char sex[4]; /*性别*/
int english; /*英语成绩*/
int math; /*数学成绩*/
int chinese; /*语文成绩*/
float aver; /*平均成绩*/
float sum; /*总成绩*/
}stu[100];
int n; /*声明一个全局变量*/
void main() /*主函数即用户的操作界面*/
{
system("color 1E"); /*设计文本颜色*/
int b,flag=0; /*声明局部变量*/
while(1) /*循环输出以下信息*/
{
printf("\n\t\t\t欢迎来到学生成绩管理系统!\n");
printf("\n\t\t\t\t ###制作\n");
printf("\t\t\t-------------------------------\n");
printf("\t\t\t1.键入学生的信息\n\n"); /*键入学生的信息*/
printf("\t\t\t2.查看录入的学生信息\n\n"); /*查看录入的学生信息*/
printf("\t\t\t3.按姓名查看学生的信息\n\n"); /*按姓名查看学生的信息*/
printf("\t\t\t4.按学号查看学生的信息\n\n"); /*按学号查看学生的信息*/
printf("\t\t\t5.按平均成绩排序\n\n"); /*排序*/
printf("\t\t\t6.删除学生信息\n\n"); /*删除学生信息*/
printf("\t\t\t7.保存学生信息\n\n"); /*保存*/
printf("\t\t\t8.打开文件\n\n"); /*打开文件*/
printf("\t\t\t9.我的个人信息\n\n"); /*我的个人信息*/
printf("\t\t\t0.退出\n\n"); /*退出*/
printf("\t\t\t请输入你的选择:");
scanf("%d",&b);
switch(b)
{
case 1:type();break; /*调用键入学生信息函数*/
case 2:look();break; /*调用查看函数*/
case 3:search_name();break; /*调用姓名查看函数*/
case 4:search_number();break; /*调用学号查看函数*/
case 5:order();break; /*调用排序函数*/
case 6:del();break;/*调用删除函数*/
case 7:save();break;/*调用保存函数*/
case 8:see();break;/*调用打开文件函数*/
case 9:welcome();break;/*调用我的个人信息函数*/
case 0:flag=1;break;/*退出SWITCH语句*/
default :printf("错误!");
}
if(flag) break; /*如果选择0就退出循环*/
}
}
void welcome() /*我的个人信息函数*/
{
system("CLS");
printf("\n\n\t\t------------个人信息------------"); /*在屏幕上输出一下信息*/
printf("\n\n\n\n\t\t姓名:###");
printf("\t\t\tSex:#\n");
printf("\t\t年龄:#\n");
printf("\n\t\t\t--------学习经历--------\n\n\n");
printf("\t\t小学:######\n\n");
printf("\t\t初中:#####\n\n");
printf("\t\tS高中:######\n\n");
printf("\t\t大学:######\n\n");
printf("\n\n\t\t按任意键返回欢迎屏幕!");
getch(); /*按任意键返回主函数*/
}
void type() /*定义键入学生信息函数*/
{
system("CLS");
int i; /*定义局部变量*/
printf("\t\t输出你想输入的学生信息个数:");
scanf("%d",&n);
for(i=0;i {
printf("\n\t\t\t----------------\n");
printf("\t\t\t学号:");
scanf("%s",&stu[i].num); /*输入学号*/
printf("\t\t\t姓名:");
scanf("%s",&stu[i].name); /*输入姓名*/
printf("\t\t\t性别:");
scanf("%S",&stu[i].sex); /*输入性别*/
printf("\t\t\t英语:");
scanf("%d",&stu[i].english); /*输入英语成绩*/
printf("\t\t\t数学:");
scanf("%d",&stu[i].math); /*输入数学成绩*/
printf("\t\t\t语文:");
scanf("%d",&stu[i].chinese); /*输入语文成绩*/
stu[i].aver=((float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese)/3;/*计算平均成绩*/
stu[i].sum=(float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese;/*计算总成绩*/
printf("\t\t\t平均成绩=%4.1f\n",stu[i].aver); /*输出平均成绩*/
printf("\t\t\t总成绩=%4.1f\n",stu[i].sum); /*输出总成绩*/
}
printf("\n\n\t\t\t按任意键返回菜单!!");
getch();
save();
}
void save() /*建立保存文件函数*/
{
system("CLS");
FILE *fp; /*定义文件型指针*/
int i;
if((fp=fopen("student.txt","wb"))==NULL) /*打开输出文件*/
{
printf("不能打开文件!\n");
return; /*终止程序*/
}
for(i=0;i if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("文件写入错误\n");
fclose(fp); /*关闭文件*/
printf("\n\n\n\n\t\t\t学生信息保存成功!\n");
printf("\n\n\n\n\t\t\t按任意键返回菜单!!");
getch();
}
void look() /*定义查看函数*/
{
system("CLS");
int i;
//n=openl(); /*调用openl函数*/
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i {
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
void search_name() /*按姓名查看函数*/
{
system("CLS");
int i;
char name[20]; /*声明字符数组*/
printf("\t\t\t请输入学生姓名:\n");
scanf("%s",name);
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i if(strcmp(stu[i].name,name)==0) /*将输入的姓名与结构体中的姓名进行比较*/
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意键返回菜单");
}
getch();
}
void search_number() /*定义按学号查看函数*/
{
system("CLS");
int i;
char number[15]; /*声明字符数组*/
printf("\t\t\t请输入学号:\n");
scanf("%s",number);
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i if(strcmp(stu[i].num,number)==0) /*将输入的学号与结构体中的学号进行比较*/
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
void order() /*定义排序函数*/
{
system("CLS");
int i,j;
char a;
struct student temp; /*声明结构体变量*/
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i {
for(j=i+1;j if(stu[i].sum {
temp=stu[i];
stu[i]= stu[j];
stu[j]=temp;
}
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
getch();
printf("是否保存?(y or n)");
getchar();
scanf("%c",&a);
if(a=='y') /*是否保存排序后的文件*/
save();
else
printf("退出");
getch();
}
void del() /*定义删除学生信息函数*/
{
int i;
char a;
char name[20];
system("CLS");
printf("\t\t\t输入学生名字:\n");
scanf("%s",name);
system("CLS");
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i if(strcmp(stu[i].name,name)==0)
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
getch();
printf("真的删除?(y or n)");
getchar();
scanf("%c",&a);
if(a=='y') /*是否删除该信息*/
{
for(;i stu[i]=stu[i+1];
n=n-1;
printf("你已经删除信息");
}
else
printf("退出");
getch();
}
save();
}
int openl() /*定义打开文件函数*/
{
system("CLS");
int i;
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL)
{
printf("Cannot open file.\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void see() /*打开并查看文件*/
{
system("CLS");
int i;
n=openl();
printf("文件打开成功!\n");
printf("按任意键查看!\n");
getch();
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i {
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);

}
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();