《程序设计基础c语言》课程设计.docx
《《程序设计基础c语言》课程设计.docx》由会员分享,可在线阅读,更多相关《《程序设计基础c语言》课程设计.docx(32页珍藏版)》请在冰点文库上搜索。
《程序设计基础c语言》课程设计
《程序设计基础(C语言)》
课程设计
学院:
生命科学学院
班级:
高分子二班
学号:
20102412930
姓名:
李雷
日期:
2014年5月
《C语言程序设计》
题目名称:
学生评教系统
算法分析:
使用循环结构、判断结构、结构体、文件流、数组指针等要素,完成简单的系统。
流程设计:
1、先调用教师初始化和学生初始化函数,初始化数据。
2、显示评教系统界面,提供功能选择。
3、输入学生学号密码,进入系统。
4、
代码设计:
#include
#include
#include
#include
structteacher
{
charnum[12];
charname[20];
charxueyuan[30];
charxingbie[15];
charkecheng[15];
intchengji;
};
structstudent
{
charnum[12];
charname[20];
charxueyuan[30];
charxingbie[15];
charbanji[15];
};
#defineTEACNUM1000
#defineSTEAC_LENsizeof(structteacher)
structteacherTEAC[TEACNUM];
#defineSTUDNUM1000
#defineSTEAC_lensizeof(structstudent)
structstudentSTUD[STUDNUM];
//教师成绩管理模块的函数声明
voidManagerLogin(inttn);
voidInputoneteacher(inti);
intLoadteachers(void);
voidSaveoneteacher(inti);
voidSaveallteachers(inttn);
intOriginalteacher(void);
voidModifyteacher(inttn);
intAddteacher(inttn);
intDelteacher(inttn);
voidOutputoneteacher(inti);
voidOutputallteachers(inttn);
voidSequence(inttn);
//教师成绩查询模块的函数声明
//voidChack(inttn);
voidSearchMenu(inttn);
voidSearchnum(inttn);
voidSearchname(inttn);
voidSearchXueyuan(inttn);
voidSearchKecheng(inttn);
//教师成绩分数段的函数声明
voidFenduan(inttn);
voidSort(inttn);
//学生信息模块的函数声明
voidInputonestudent(inti);
intLoadstudents(void);
voidSaveonestudent(inti);
voidSaveallstudents(intsn);
intOriginalstudent(void);
voidOutputonestudent(inti);
voidOutputallstudents(intsn);
//学生评教登陆系统
voidStudentLogin(inttn,intsn);
voidPingjiao(inttn);
voidmain()
{
intselect,tn,sn;
tn=Loadteachers();
if(tn==0)
{
printf("教师信息为空,请初始化数据!
\n");
tn=Originalteacher();
}
Sequence(tn);
Saveallteachers(tn);
sn=Loadstudents();
if(sn==0)
{
printf("学生信息为空,请初始化数据!
\n");
sn=Originalstudent();
}
Sequence(sn);
Saveallstudents(sn);
while
(1)
{
printf("\n");
printf("**************************************\n");
printf("*评教系统*\n");
printf("**************************************\n");
printf("--------------------------------------\n");
printf("*1.学生评教系统*\n");
printf("*2.教师信息查询管理系统*\n");
printf("*0.退出系统*\n");
printf("\n请选择您需要的服务(0-2):
");
scanf("%d",&select);
getchar();
switch(select)
{
case1:
StudentLogin(tn,sn);break;
case2:
ManagerLogin(tn);break;
case0:
exit
(1);
default:
printf("\n按键错误,请重新选择!
\n");
}//endswitch
}//endwhile
}
voidStudentLogin(inttn,intsn)
{
intj,m=-1;
charsnum[15];
charpassword[5];
if(sn==0)
{
printf("\n学生信息为空,无法执行操作!
\n");
return;
}
while
(1)
{
printf("\n请输入你的学号:
\n");
gets(snum);
for(j=0;jif(strcmp(STUD[j].num,snum)==0)
{
m=j;
break;
}
if(m<0)
printf("\n学号错误,请重新输入!
\n");
else
printf("\n请输入你的密码:
\n");
gets(password);
if(strcmp(password,"123")!
=0)
{
printf("\n密码错误!
\n");
exit(0);
}
else
{printf("/n同学你好!
/n");
Pingjiao(tn);
return;
}
}
printf("\n按任意键继续!
\n");
getchar();
}
voidManagerLogin(inttn)
{
intselect;
printf("\n");
printf("**************************************\n");
printf("*教师信息查询管理系统*\n");
printf("**************************************\n");
printf("--------------------------------------\n");
printf("*1.教师信息初始化*\n");
printf("*2.增加教师信息*\n");
printf("*3.删除教师信息*\n");
printf("*4.修改教师信息*\n");
printf("*5.教师信息查询*\n");
printf("*0.退出系统*\n");
scanf("%d",&select);
printf("\n请选择您需要的服务(0-5):
");
getchar();
switch(select)
{
case1:
tn=Originalteacher();break;
case2:
Addteacher(tn);break;
case3:
Delteacher(tn);break;
case4:
Modifyteacher(tn);break;
case5:
SearchMenu(tn);break;
case0:
exit
(1);
default:
printf("\n按键错误,请重新选择!
\n");
}
Saveallteachers(tn);
}
voidInputoneteacher(inti)
{
printf("请输入编号:
");
gets(TEAC[i].num);
printf("\n请输入姓名:
");
gets(TEAC[i].name);
printf("\n请输入学院:
");
gets(TEAC[i].xueyuan);
printf("\n请输入性别:
");
gets(TEAC[i].xingbie);
printf("\n请输入所教课程:
");
gets(TEAC[i].kecheng);
}
intLoadteachers(void)//判断是否有教师信息文件
{
FILE*fb;
inttn=0;
if((fb=fopen("teacher.dat","rb+"))==NULL)
{
printf("can'topenfile\n");
return(tn);
}
while(!
feof(fb))
if(fread(&TEAC[tn],STEAC_LEN,1,fb))
tn++;
fclose(fb);
return(tn);
}
voidSaveoneteacher(inti)
{
FILE*fb;
if((fb=fopen("teacher.dat","rb+"))==NULL)
{
printf("can'topenfile");
exit
(1);
}
fseek(fb,STEAC_LEN*i,0);
fwrite(&TEAC[i],STEAC_LEN,1,fb);
fclose(fb);
}
voidSaveallteachers(inttn)
{
FILE*fb;
if((fb=fopen("teacher.dat","wb"))==NULL)
{
printf("can'topenfile");
exit
(1);
}
fwrite(TEAC,STEAC_LEN,tn,fb);
fclose(fb);
}
intOriginalteacher()
{
intn;
charch='y';
for(n=0;ch=='y'||ch=='Y';n++)
{
printf("\n请输入教师%d的信息:
\n",n+1);
Inputoneteacher(n);
printf("\n继续输入请按'y',停止请按'n':
");
ch=getchar();
getchar();
while((ch!
='y')&&(ch!
='Y')&&(ch!
='n')&&(ch!
='N'))
{
printf("指令错误,请重新输入!
");
ch=getchar();getchar();
}
}
Saveallteachers(n);
return(n);
}
voidSequence(inttn)
{
inti,j;
structteacherchange;
for(i=0;i{
for(j=0;jif(TEAC[j].num{
change=TEAC[j];
TEAC[j]=TEAC[j+1];
TEAC[j+1]=change;
}
}
}
voidOutputoneteacher(inti)
{
printf("\n");
printf("编号:
");
puts(TEAC[i].num);
printf("姓名:
");
puts(TEAC[i].name);
printf("学院:
");
puts(TEAC[i].xueyuan);
printf("性别:
");
puts(TEAC[i].xingbie);
printf("所教课程:
");
puts(TEAC[i].kecheng);
printf("评教成绩:
");
printf("%d\n",TEAC[i].chengji);
}
voidOutputallteachers(inttn)
{
inti;
printf("\n全部教师的详细信息:
\n");
for(i=0;i{
Outputoneteacher(i);
}
printf("全部教师信息输出完毕。
");
printf("\n按任意键继续!
\n");
getch();
}
intAddteacher(inttn)
{
charch='y';
FILE*fb;
if((fb=fopen("teacher.dat","a+"))==NULL)
{
printf("can'topenfile!
\n");
exit
(1);
}
while(ch=='y'||ch=='Y')
{
printf("%d+++++++",tn);
printf("\n请输入新增教师的信息:
\n");
Inputoneteacher(tn);
Saveallteachers(tn+1);
tn++;
printf("\n继续输入请按'y',退出请按'n'");
ch=getchar();getchar();
if((ch!
='y')&&(ch!
='Y')&&(ch!
='n')&&(ch!
='N'))
{
printf("指令错误,请重新输入");
ch=getchar();getchar();
}
}
for(inti=0;iprintf("%d",TEAC[i].num);
Sequence(tn);
printf("\n按任意键继续!
\n");
getch();
fclose(fb);
return(tn);
}
intDelteacher(inttn)
{
inti,k=-1;
charnumber[12],c1='y',c2;
if(tn==0)
{
printf("\n教师信息为空,无法执行操作!
\n");
return(tn);
}
while(c1=='y'||c1=='Y')
{
c2='n';
printf("\n请输入要删除的编号:
");
gets(number);
for(i=0;iif(strcmp(TEAC[i].num,number)==0)
{
k=i;
break;
}
if(k<0)
printf("\n输入的编号有误,请重新输入!
\n");
else
{
printf("\n显示该教师的信息:
\n");
Outputoneteacher(k);
printf("\n确认要删除该教师的全部信息吗?
(y/n)");
c2=getchar();getchar();
if(c2=='y')
{
for(i=k;iTEAC[i]=TEAC[i+1];
tn--;
printf("\n删除成功!
\n");
}
else
printf("\n取消删除!
\n");
}
printf("\n继续删除其他教师的信息吗?
(y/n)");
c1=getchar();getchar();
}
Saveallteachers(tn);
printf("\n按任意键继续!
\n");
getch();
return(tn);
}
voidModifyteacher(inttn)
{
intselect,k=-1,i;
charnumber[12],c1='y',c2;
if(tn==0)
{
printf("\n教师信息为空,无法执行操作!
\n");
return;
}
while(c1=='y'||c1=='Y')
{
c2='y';
printf("请输入要修改的教师的编号:
");
gets(number);
for(i=0;iif(strcmp(TEAC[i].num,number)==0)
{
k=i;
break;
}
if(k<0)
printf("\n输入的编号有误,请重新输入!
\n");
else
{
printf("\n显示该教师信息:
\n");
Outputoneteacher(k);
while(c2=='y'||c2=='Y')
{
printf("\n教师信息包括以下数据项\n");
printf("-------------------------------------\n");
printf("1.编号2.姓名\n");
printf("3.学院4.性别\n");
printf("5.所教课程6.评教成绩\n");
printf("\n请选择要修改的数据项(1-6):
");
scanf("%d",&select);getchar();
switch(select)
{
case1:
printf("编号:
");
gets(TEAC[k].num);
break;
case2:
printf("姓名:
");
gets(TEAC[k].name);
break;
case3:
printf("学院:
");
gets(TEAC[k].xueyuan);
break;
case4:
printf("性别:
");
gets(TEAC[k].xingbie);
break;
case5:
printf("所教课程:
");
gets(TEAC[k].kecheng);
break;
case6:
printf("评教成绩:
");
scanf("%d",&TEAC[k].chengji);
break;
default:
printf("\n按键错误,请重新输入!
\n");
}
printf("\n还要修改该教师的其他信息吗?
(y/n)\n");
c2=getchar();getchar();
}
}
Saveoneteacher(k);
printf("\n还要修改其他教师的信息吗?
(y/n)");
c1=getchar();getchar();
}
printf("\n按任意键继续!
\n");
getch();
}
voidSearchMenu(inttn)
{
intselect;
while
(1)
{
printf("\n欢迎使用教师查询服务\n");
printf("--------------------------------------\n");
printf("1.按编号查询2.按姓名查询\n");
printf("3.按学院查询4.成绩段人数查询\n");
printf("5.按课程查询\n");
printf("0.退出查询服务\n");
printf("\n请选择查询方式:
(0-5)");
scanf("%d",&select);getchar();
switch(select)
{
case1:
Searchnum(tn);break;
case2:
Searchname(tn);break;
case3:
SearchXueyuan(tn);break;
case4:
Fenduan(tn);break;
case5:
SearchKecheng(tn);break;
case0:
return;
default:
printf("\n按键错误,请重新输入!
\n");
}
}
}
voidSearchnum(inttn)
{
inti,k;
charnumber[12],ch='y';
while(ch=='y'||ch=='Y')
{
k=-1;
printf("\n请输入编号:
");
gets(number);
for(i=0;iif(strcmp(TEAC[i].num,number)==0)
{
k=i;
break;
}
if(k<0)
printf("\n输入的编号有误,请重新输入!
\n");
else
{
printf("\n显示该教师的信息:
\n");
Outputoneteacher(k);
getchar();
}
printf("\n继续查询其他教师的信息吗?
(y/n)");
ch=getchar();getchar();
}
printf("\n按任意键继续!
\n");
getch();
}
voidSearchname(inttn)
{
inti,j,k;
chartname[20],ch