c课程设计报告学生管理系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 35
char name;
int inth;
struct date
{
int year;
char month;
char day;
};
struct student
{
char no[9];
char name[9];
char sex[3];
struct date birthday;
int score[4];
};
int menu()
{
int code;
printf(" 菜单\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ 0.退出 ┃\n");
printf("┃ 1.显示学生信息 ┃\n");
printf("┃ 2.显示按姓名排序后的学生信息 ┃\n");
printf("┃ 3.显示按总分排序后的学生信息 ┃\n");
printf("┃ 4.按学号查学生分数和平均分数 ┃\n");
printf("┃ 5.按姓名查学生分数和平均分数 ┃\n");
printf("┃ 6.查各课程平均分数 ┃\n");
printf("┃ 7.查男女学生的人数 ┃\n");
printf("┃ 8.显示学生信息表 ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("选择代码(0,1,2,3,4,5,6,7,8): ");
scanf("%d",&code);
return code;
}
/* 建立学生信息数组 */
void readsi(struct student stud[],int *n)
{
FILE*fp;
int i;
if((fp=fopen("studf.txt","r"))==NULL)
{
printf("不能打开studf.txt文件!\n");
exit(1);
}
for(i=0;!feof(fp);i++)
{
(*n)++;
if(*n>N)
{
printf("最多处理35位学生信息!\n");
return;
}
fscanf(fp,"%s %s %s %d %d %d %d %d %d",stud[i].no,stud[i].name,stud[i].sex,&stud[i].birthday.year,&stud[i].birthday.month,&stud[i].birthday.day,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
// fscanf从一个流中执行格式化输入
stud[i].score[3]=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];
}
fclose(fp);
}
/* 显示学生信息 */
void printsi(struct student *pstud,int n)
{
int i,k=0;
printf(" 学号 姓名 性别 年 月 日 数学 英语 C 总分\n");
printf("┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉\n");
printf("==================================================================\n");
for(i=0;i<n;i++)
{
printf("%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",pstud[i].no,pstud[i].name,pstud[i].sex,pstud[i].birthday.year,pstud[i].birthday.month,pstud[i].birthday.day,
pstud[i].score[0],pstud[i].score[1],pstud[i].score[2],pstud[i].score[3]);
k++;
if(k%20==0)
scanf("%*c");
}
}
/* 按学号排序—简单比较排序法*/
void csort_no(struct student *pstud,int n)
{
struct student temp;
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(pstud[i].no,pstud[j].no)>0)
{
temp=pstud[i];
pstud[i]=pstud[j];
pstud[j]=temp;
}
}
/* 显示学生信息表*/
void printtable(struct student *pstud,int n)
{
int i,k=0;struct student studA[N];
for(i=0;i<n;i++)
studA[i]=pstud[i];
csort_no(studA,n);
printf("\n\n");
printf(" 学生信息表\n");
printf(" ==================\n\n");
printf("┏━━━━┳━━━━┳━━━┳━━━━━━┳━━━┳━━━┳━━━┳━━━┓\n");
printf("┃学号 ┃姓名 ┃ 性别 ┃ 年 月 日 ┃ 数学 ┃ 英语 ┃ C ┃ 总分 ┃\n");
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
for(i=0;i<n;i++)
{
printf("┃%-8s┃%-8s┃ %-2s ┃ %4d %2d %2d ┃ %4d ┃ %4d ┃ %4d ┃ %4d ┃\n",studA[i].no,studA[i].name,studA[i].sex,studA[i].birthday.year,studA[i].birthday.month,studA[i].birthday.day,studA[i].score[0],studA[i].score[1],studA[i].score[2],studA[i].score[3]);
if(i==n-1)
printf("┗━━━━┻━━━━┻━━━┻━━━━━━┻━━━┻━━━┻━━━┻━━━┛\n");
else
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
k++;
if(k%20==0)
scanf("%*c");
}
}
/* 查各课程平均分数 */
void find_ave(struct student *pstud,int n)
{
static summath=0,sumenglish=0,sumC=0,score=0;int i;struct student studA[N];
for(i=0;i<n;i++)
studA[i]=pstud[i];
csort_no(studA,n);
printf(" 各课程平均分数 \n ");
printf("————————————————————————————\n");
for(i=0;i<n;i++)
{
summath=summath+pstud[i].score[0];
sumenglish=sumenglish+pstud[i].score[1];
sumC=sumC+pstud[i].score[2];
score=score+pstud[i].score[3];
}
printf("数学平均分数:%4d\n",summath/n);
printf("英语平均分数:%4d\n",sumenglish/n);
printf("c平均分数:%4d\n",sumC/n);
printf("总分平均分数:%5d\n",score/n);
}
/* 查男女学生人数 */
void find_pnum(struct student *pstud,int n)
{
int i,j=0,k=0;
for(i=0;i<n;i++)
{
if(strcmp(pstud[i].sex,"男")==0)
j++;
else
k++;
}
printf("男学生人数为%d人",j);
printf("女学生人数为%d人",k);
}
/* 按总分递减选择排序(应用指针数组)*/
void ssort(struct student *ptscore[],int n)
{
struct student *temp;
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(ptscore[j]->score[3]<ptscore[j+1]->score[3])
{
temp=ptscore[j];
ptscore[j]=ptscore[j+1];
ptscore[j+1]=temp;
}
}
/* 按学号查学生信息和平均分数(顺序查找)*/
void ssrch_no(struct student *pstud[],int n)
{
int i=0,j=0;char no[9];
printf("请输入要查找的学生学号:");
scanf("%s",&no);
printf("\n");
for(i=0;i<n;i++)
{
if(strcmp(no,pstud[i]->no)==0)
printf("已找到学号为%-8s的学生\n学号:%-8s\n姓名:%-8s\n性别:%-2s\n%4d年%2d月%2d日\n数学:%4d\n英语:%4d\nc:%4d\n总分%4d\n平均分数为:%4d\n",pstud[i]->no,pstud[i]->no,pstud[i]->name,pstud[i]->sex,pstud[i]->birthday.year,pstud[i]->birthday.month,pstud[i]->birthday.day,pstud[i]->score[0],pstud[i]->score[1],pstud[i]->score[2],pstud[i]->score[3],pstud[i]->score[3]/3);
else
j++;
}
if(j==6)
printf("未找到学号为%-8s的学生\n",no);
}
/* 按姓名查找的学生信息和平均分数(折半查找)*/
void bsrch_name(struct student *pname[],int n)
{
int bsrch(struct student *pname[],int n,char *name);
char name[9];int i;
printf("请输入要查找的学生姓名:");
scanf("%s",name);
i=bsrch(pname,n,name);
if(i!=-1)
printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",
pname[i]->no,pname[i]->name,pname[i]->sex,
pname[i]->birthday.year,pname[i]->birthday.month,
pname[i]->birthday.day,
pname[i]->score[0],pname[i]->score[1],pname[i]->score[2],
pname[i]->score[3]);
else
printf("%d没有找到该学生资料!\n",name);
for(;;)
{ i=i-1;
if(strcmp(name,pname[i]->name)==0) printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",
pname[i]->no,pname[i]->name,pname[i]->sex,
pname[i]->birthday.year,pname[i]->birthday.month,
pname[i]->birthday.day,
pname[i]->score[0],pname[i]->score[1],pname[i]->score[2],
pname[i]->score[3]);
else
break;
}
i=bsrch(pname,n,name);
for(;;)
{i=i+1;
if(strcmp(name,pname[i]->name)==0) printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",
pname[i]->no,pname[i]->name,pname[i]->sex,
pname[i]->birthday.year,pname[i]->birthday.month,
pname[i]->birthday.day,
pname[i]->score[0],pname[i]->score[1],pname[i]->score[2],
pname[i]->score[3]);
else
break;
}
}
int bsrch(struct student *pname[],int n,char *name)
{
int lower=0,upper=n-1,mid;
if(strcmp(name,pname[lower]->name)==0) return lower;
else if(strcmp(name,pname[upper]->name)==0) return upper;
else
while(lower<=upper)
{
mid=(lower+upper)/2;
if(strcmp(name,pname[mid]->name)==0)
return mid;
else if(strcmp(name,pname[mid]->name)>0)
lower=mid+1;
else
upper=mid-1;
}
return -1;
}
/* 按姓名递增冒泡排序(应用指针数组) */
void bsort(struct student *pname[],int n)
{
struct student *temp;
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(strcmp(pname[j]->name,pname[j+1]->name)>0)
{
temp=pname[j];
pname[j]=pname[j+1];
pname[j+1]=temp;
}
}
/* 按总分名次查找的学生信息和平均分数 */
void printf_ptscore(struct student *ptscore[],int n,int inth)
{
printf("请输入要查找总分名次:");
scanf("%d",&inth);
inth--;
if(inth>n)
{
printf("未找到总分名次为%5d的学生",inth);
}
else
printf("已找到总分名次为%5d的学生\n学号:%-8s\n姓名:%-8s\n性别:%-2s\n%4d年%2d月%2d日\n数学:%4d\n英语:%4d\nc:%4d\n总分%5d\n平均分数为:%4d",inth+1,ptscore[inth]->no,ptscore[inth]->name,ptscore[inth]->sex,ptscore[inth]->birthday.year,ptscore[inth]->birthday.month,ptscore[inth]->birthday.day,ptscore[inth]->score[0],ptscore[inth]->score[1],ptscore[inth]->score[2],ptscore[inth]->score[3],ptscore[inth]->score[3]/3);
}
/*显示姓名排序后的学生信息*/
void printsi_p1(struct student *parray[],int n)
{
int i,k=0;
printf(" 按姓名排序后的学生信息\n\n");
printf("学号 姓名 性别 年 月 日 数学 英语 C 总分\n");
printf("******** ------ ** ---- ** -- *** --- *** --- \n");
printf("=====================================================\n");
for(i=0;i<n;i++)
{
printf("%-8s%-8s%-2s%4d %2d %2d %4d %4d %4d %5d\n",
parray[i]->no,parray[i]->name,parray[i]->sex,
parray[i]->birthday.year,parray[i]->birthday.month,parray[i]->birthday.day,
parray[i]->score[0],parray[i]->score[1],parray[i]->score[2],parray[i]->score[3]);
k++;
if(k%20==0)
scanf("%*c");
}
}
/* 显示按总分排序后的学生信息 */
void printsi_p2(struct student *ptscore[],int n)
{
int i,k=0;
printf("\n\n");
printf(" 按总分排序后的学生信息表\n");
printf(" ==================\n\n");
printf("┏━━━━┳━━━━┳━━━┳━━━━━━┳━━━┳━━━┳━━━┳━━━┓\n");
printf("┃学号 ┃姓名 ┃ 性别 ┃ 年 月 日 ┃ 数学 ┃ 英语 ┃ C ┃ 总分 ┃\n");
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
for(i=0;i<n;i++)
{
printf("┃%-8s┃%-8s┃ %-2s ┃ %4d %2d %2d ┃ %4d ┃ %4d ┃ %4d ┃ %4d ┃\n",ptscore[i]->no,ptscore[i]->name,ptscore[i]->sex,ptscore[i]->birthday.year,ptscore[i]->birthday.month,ptscore[i]->birthday.day,ptscore[i]->score[0],ptscore[i]->score[1],ptscore[i]->score[2],ptscore[i]->score[3]);
if(i==n-1)
printf("┗━━━━┻━━━━┻━━━┻━━━━━━┻━━━┻━━━┻━━━┻━━━┛\n");
else
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
k++;
if(k%20==0)
scanf("%*c");
}
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 35
void main()
{
static struct student stud[N];
struct student *pstud[N];
struct student *pname[N];
struct student *ptscore[N];
int code,inth=0;
int n=0,i;
readsi(stud,&n);
for(i=0;i<N;i++)
pstud[i]=&stud[i];
for(i=0;i<N;i++)
pname[i]=&stud[i];
for(i=0;i<N;i++)
ptscore[i]=&stud[i];
bsort(pname,n);
ssort(ptscore,n);
printf("\n 学生信息:\n");
printsi(stud,n);
printf("\n 按<Enter>,进入菜单:\n");
scanf("%*c");
while(1)
{
code=menu();
switch(code)
{
case 0: /* 退出 */
exit(1);
case 1: /* 显示学生信息 */
printsi(stud,n);
scanf("%*2c");break;
case 2: /* 显示按姓名排序后的学生信息 */
printsi_p1(pname,n);
scanf("%*2c");break;
case 3: /* 显示按总分排序后的学生信息 */
printsi_p2(ptscore,n);
scanf("%*2c");break;
case 4: /* 按学号查找学生信息和平均分数 */
ssrch_no(pstud,n);
scanf("%*2c");break;
case 5: /* 按姓名查找学生信息和平均分数 */
bsrch_name(pname,n);
scanf("%*2c");break;
case 6: /* 查各门课的平均分数 */
find_ave(stud,n);
scanf("%*2c");break;
case 7: /* 查男女人数 */
find_pnum(stud,n);
scanf("%*2c");break;
case 8: /* 显示学生信息表 */
printtable(stud,n);
scanf("%*2c");break;
}
}
}
㈡ c语言课程设计报告学生信息管理系统
在网络输入"学生信息管理系统",可以参考一下
㈢ C语言课程设计 学生信息管理系统 报告
在网络输入"学生信息管理系统",可以参考一下
请采纳答案,支持我一下。
㈣ c语言课程设计要求写一个学生信息管理系统
这,,,徐工的?
㈤ C语言课程设计 学生管理系统设计
学生管理系统设计
我帮你弄
保证能运行
Q我
㈥ c语言课程设计 学生信息管理系统源代码及实验报告
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 8
char name[N][N*2];
char sex[N/4];
int number[N];
int jugment(char *dest,int size)
{
(dest,size,stdin);
while(dest[0]=='#')
return 1;
return 0;
}
int menu()
{
char ch[N];
puts("1) insert_data!");
puts("2) search_data!");
puts("3) list!");
puts("#) exit!");
fgets(ch,N/2,stdin);
return ch[0];
}
int insert_data()
{
int i;
char ch[N*2];
for(i=0;i<N;i++)
{
//**********************************************input name
printf("the num %d student:\n",i+1);
puts("name:");
while(jugment(ch,N*2))
return 0;
ch[strlen(ch)]==0;
strcpy(name[i],ch);
//**********************************************input sex
do
{
puts("sex <w/m>:");
if(jugment(ch,N))
return 0;
sex[i]=ch[0];
}
while((sex[i]!='w')&&(sex[i]!='m'));
//**********************************************input id
do
{
puts("number:");
if(jugment(ch,N*2))
return 0;
}while(!(number[i]=atoi(ch)));
}
}
int search_data(void)
{
int i,tmp;
char ch[N*2];
while(1)
{
puts("input your number:");
if(jugment(ch,N*2))
return -1;
if(!(tmp=atoi(ch)))
continue;
for(i=0;i<N;i++)
{
if(number[i]==tmp)
return i;
}
if(i>=N)
puts("not have this student!");
return -1;
}
}
int print_data(int num)
{
if(num>=0)
{
puts("*********************************");
printf("name: %s",name[num]);
printf("sex: %c\n",sex[num]);
printf("number: %d\n",number[num]);
puts("*********************************");
}
return 0;
}
int list()
{
int i=0;
while(*name[i]&&i<N)
{
print_data(i);
i++;
}
return 0;
}
int main()
{
char tmp;
while(1)
{
tmp=menu();
switch(tmp)
{
case '1':
insert_data();
break;
case '2':
print_data(search_data());
break;
case '3':
list();
case '#':
return 0;
default:
puts("you input wrong command!");
break;
}
}
}
这个是简易版的 可供参考!