1、程序设计基础c语言课程设计 程序设计基础(C语言) 课程设计 学院:生命科学学院班级: 高分子二班 学号: 20102412930 姓名: 李雷 日期: 2014年5月 C语言程序设计题目名称: 学生评教系统 算法分析:使用循环结构、判断结构、结构体、文件流、数组指针等要素,完成简单的系统。流程设计: 1、先调用教师初始化和学生初始化函数,初始化数据。 2、显示评教系统界面,提供功能选择。 3、输入学生学号密码,进入系统。 4、代码设计:#include#include#include#includestruct teacher char num12; char name20; char xu
2、eyuan30; char xingbie15; char kecheng15; int chengji;struct student char num12; char name20; char xueyuan30; char xingbie15; char banji15;#define TEACNUM 1000#define STEAC_LEN sizeof(struct teacher)struct teacher TEACTEACNUM;#define STUDNUM 1000#define STEAC_len sizeof(struct student)struct student
3、STUDSTUDNUM;/教师成绩管理模块的函数声明void ManagerLogin(int tn);void Inputoneteacher(int i);int Loadteachers(void);void Saveoneteacher(int i);void Saveallteachers(int tn);int Originalteacher(void);void Modifyteacher(int tn);int Addteacher(int tn);int Delteacher(int tn);void Outputoneteacher(int i);void Outputal
4、lteachers(int tn);void Sequence(int tn);/教师成绩查询模块的函数声明/void Chack(int tn);void SearchMenu(int tn);void Searchnum(int tn);void Searchname(int tn);void SearchXueyuan(int tn);void SearchKecheng(int tn);/教师成绩分数段的函数声明void Fenduan(int tn);void Sort(int tn);/学生信息模块的函数声明void Inputonestudent(int i);int Loads
5、tudents(void);void Saveonestudent(int i);void Saveallstudents(int sn);int Originalstudent(void);void Outputonestudent(int i);void Outputallstudents(int sn);/学生评教登陆系统void StudentLogin(int tn,int sn);void Pingjiao(int tn);void main() int select,tn,sn; tn=Loadteachers(); if(tn=0) printf(教师信息为空,请初始化数据!n
6、); 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);
7、 printf( * 0.退出系统 *n); printf(n请选择您需要的服务(0-2):); scanf(%d,&select); getchar(); switch(select) case 1:StudentLogin(tn,sn); break; case 2:ManagerLogin(tn); break; case 0:exit(1); default:printf(n按键错误,请重新选择!n); /end switch /end whilevoid StudentLogin(int tn,int sn) int j,m=-1; char snum15; char passwor
8、d5; if(sn=0) printf(n学生信息为空,无法执行操作!n); return; while(1) printf(n请输入你的学号:n); gets(snum); for(j=0;jsn;j+) if(strcmp(STUDj.num,snum)=0) m=j; break; if(m0) printf(n学号错误,请重新输入!n); else printf(n请输入你的密码:n); gets(password); if(strcmp(password,123)!=0) printf(n密码错误!n); exit(0); else printf(/n同学你好!/n); Pingji
9、ao(tn); return; printf(n按任意键继续!n); getchar();void ManagerLogin(int tn) int select; 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)
10、; scanf(%d,&select); printf(n请选择您需要的服务(0-5):); getchar(); switch(select) case 1:tn=Originalteacher(); break; case 2:Addteacher(tn); break; case 3:Delteacher(tn); break; case 4:Modifyteacher(tn); break; case 5:SearchMenu(tn); break; case 0:exit(1); default:printf(n按键错误,请重新选择!n); Saveallteachers(tn);v
11、oid Inputoneteacher(int i) printf(请输入编号:); gets(TEACi.num); printf(n请输入姓名:); gets(TEACi.name); printf(n请输入学院:); gets(TEACi.xueyuan); printf(n请输入性别:); gets(TEACi.xingbie); printf(n请输入所教课程:); gets(TEACi.kecheng);int Loadteachers(void)/判断是否有教师信息文件 FILE *fb; int tn=0; if(fb=fopen(teacher.dat,rb+)=NULL)
12、printf( cant open filen); return(tn); while(!feof(fb) if(fread(&TEACtn,STEAC_LEN,1,fb) tn+; fclose(fb); return(tn);void Saveoneteacher(int i) FILE *fb; if(fb=fopen(teacher.dat,rb+)=NULL) printf(cant open file); exit(1); fseek(fb,STEAC_LEN*i,0); fwrite(&TEACi,STEAC_LEN,1,fb); fclose(fb);void Saveallt
13、eachers(int tn) FILE *fb; if (fb=fopen(teacher.dat,wb)=NULL) printf(cant open file); exit(1); fwrite(TEAC,STEAC_LEN,tn,fb); fclose(fb);int Originalteacher() int n; char ch=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(
14、ch!=y)&(ch!=Y)&(ch!=n)&(ch!=N) printf(指令错误,请重新输入!); ch=getchar(); getchar(); Saveallteachers(n); return(n);void Sequence(int tn) int i,j; struct teacher change; for(i=0;itn-1;i+) for(j=0;jtn-i-1;j+) if(TEACj.numTEACi.num) change=TEACj; TEACj=TEACj+1; TEACj+1=change; void Outputoneteacher(int i) prin
15、tf(n); printf(编号:); puts(TEACi.num); printf(姓名:); puts(TEACi.name); printf(学院:); puts(TEACi.xueyuan); printf(性别:); puts(TEACi.xingbie); printf(所教课程:); puts(TEACi.kecheng); printf(评教成绩:); printf(%dn,TEACi.chengji);void Outputallteachers(int tn) int i; printf(n全部教师的详细信息:n); for(i=0;itn;i+) Outputonete
16、acher(i); printf(全部教师信息输出完毕。); printf(n按任意键继续!n); getch();int Addteacher(int tn) char ch=y; FILE *fb; if(fb=fopen(teacher.dat,a+)=NULL) printf(cant open file!n); exit(1); while(ch=y|ch=Y) printf(%d+,tn); printf(n请输入新增教师的信息:n); Inputoneteacher(tn); Saveallteachers(tn+1); tn+; printf(n继续输入请按y,退出请按n);
17、ch=getchar(); getchar(); if(ch!=y)&(ch!=Y)&(ch!=n)&(ch!=N) printf(指令错误,请重新输入); ch=getchar(); getchar(); for(int i=0;itn;i+) printf(%d ,TEACi.num); Sequence(tn); printf(n按任意键继续!n); getch(); fclose(fb); return(tn);int Delteacher(int tn) int i,k=-1; char number12,c1=y,c2; if(tn=0) printf(n教师信息为空,无法执行操作
18、!n); return(tn); while(c1=y|c1=Y) c2=n; printf(n请输入要删除的编号:); gets(number); for(i=0;itn;i+) if(strcmp(TEACi.num,number)=0) k=i; break; if(k0) printf(n输入的编号有误,请重新输入!n); else printf(n显示该教师的信息:n); Outputoneteacher(k); printf(n确认要删除该教师的全部信息吗?(y/n); c2=getchar(); getchar(); if(c2=y) for(i=k;itn;i+) TEACi=
19、TEACi+1; tn-; printf(n删除成功!n); else printf(n取消删除!n); printf(n继续删除其他教师的信息吗?(y/n); c1=getchar(); getchar(); Saveallteachers(tn); printf(n按任意键继续!n); getch(); return(tn);void Modifyteacher(int tn) int select,k=-1,i; char number12,c1=y,c2; if(tn=0) printf(n教师信息为空,无法执行操作!n); return; while(c1=y|c1=Y) c2=y;
20、 printf(请输入要修改的教师的编号:); gets(number); for(i=0;itn;i+) if(strcmp(TEACi.num,number)=0) k=i; break; if(k0) 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); pr
21、intf(n请选择要修改的数据项(1-6):); scanf(%d,&select); getchar(); switch(select) case 1:printf(编号:); gets(TEACk.num); break; case 2:printf(姓名:); gets(TEACk.name); break; case 3:printf(学院:); gets(TEACk.xueyuan); break; case 4:printf(性别:); gets(TEACk.xingbie); break; case 5:printf(所教课程:); gets(TEACk.kecheng); br
22、eak; case 6:printf(评教成绩:); scanf(%d,&TEACk.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();void SearchMenu(int tn) int select; while(1) printf(n
23、欢迎使用教师查询服务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) case 1:Searchnum(tn); break; case 2:Searchname(tn); break; case 3:SearchXueyuan(tn); break; case 4:Fenduan(
24、tn);break; case 5:SearchKecheng(tn);break; case 0:return; default:printf(n按键错误,请重新输入!n); void Searchnum(int tn) int i,k; char number12,ch=y; while(ch=y|ch=Y) k=-1; printf(n请输入编号:); gets(number); for(i=0;itn;i+) if(strcmp(TEACi.num,number)=0) k=i; break; if(k0) printf(n输入的编号有误,请重新输入!n); else printf(n显示该教师的信息:n); Outputoneteacher(k); getchar(); printf(n继续查询其他教师的信息吗?(y/n); ch=getchar(); getchar(); printf(n按任意键继续!n); getch();void Searchname(int tn) int i,j,k; char tname20,ch