教师信息管理系统毕业论文

高级语言课程设计

任务书及说明书

设计题目 教师信息管理系统

学 院

专业、年级

学 生

学 号_____

指导教师

时 间 年 学期

目 录

1 摘要„„„„„„„„„„„„„„„„„„„„„„„3 2 前言„„„„„„„„„„„„„„„„„„„„„„„4 3 正文„„„„„„„„„„„„„„„„„„„„„„„5

3.1系统分析

3.2系统总体设计

3.3详细设计

3.4系统测试

4 参考文献„„„„„„„„„„„„„„„„„„„„„14 5 总结„„„„„„„„„„„„„„„„„„„„„„„15

附录: 程序源代码

1 摘要

本次课程设计采用C语言,开发了一个基本的教师信息管理系统,该系统具备了按教师姓名查找并输出教师信息,按教师号查找并输出教师信息,按教师姓名查找并删除数据,输出全部教师信息数据,对教师的管理也可以更加方便快捷。

关键词:

C语言;课程设计;教师信息管理系统

2 前言

随着教育的广泛性的提高,教师的数量逐渐增多,但是在教师管理是出现教师姓名、年龄等出现错误的诸多问题。本文针对上述问题,采用软件工程的开发原理,根据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个教师信息管理系统。采用c语言作为开发工具,设计了这个教师信息管理系统,解决了教师信息管理中存在的数据安全性、数据一致性等问题。

3、正文

3.1 系统分析

3.3.1.设计要求

该设计要求教师以学校教师信息管理业务为背景,设计、开发一套“教师信息管理系统”软件。

通过该题目的设计过程,可以培养教师结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力。

3.3.2设计任务

1、以教师信息管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;

2、完成软件结构设计和算法设计;

3、完成系统的软件开发和测试工作

教师信息包括:教师号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。设计“教师信息管理系统”,使之能提供以下功能:

1. 系统以菜单方式工作;

2. 教师信息录入功能;

3. 教师信息浏览功能;

4. 查询、排序功能:按学号查询、按姓名查询;

5. 教师信息的删除与修改。

3.2 系统总体设计

一.流程图

二.总体数据结构

本系统采用结构体为主要数据结构,将教师信息,包括:教师号,姓名,年龄,性别,出生年月,地址,电话,E-mail以结构体的形式存储在计算机中,并建立结构体数组。

for(i=cn;i

{

printf("\n请输入第%d个教师的教师号 (8个字符以内):",i+1); scanf("%d",&stu[i].ID);

printf("\n\t\t姓名(10个字符以内):");

scanf("%s",stu[i].Name);

printf("\n\t\t\t 年龄:");

scanf("%d",&stu[i].Age);

printf("\n\t\t\t性别(m或w):");

scanf("%s",&stu[i].Sex);

printf("\n\t\t 出生年月(8位):");

scanf("%d",&stu[i].Birthday);

printf("\n\t\t\t 地址:");

scanf("%s",&stu[i].Adress);

printf("\n\t\t\t 电话:");

scanf("%s",&stu[i].TelNum);

printf("\n\t\t\t E-mail:");

scanf("%s",&stu[i].Email);

}

3.3详细设计

(1) 函数及参数说明

函数原型 input()

函数功能 输入数据并提示输入0以返回欢迎界面查看选项

参数说明:无参数要求

函数原型 insert()

函数功能 函数原型添加一组新数据并提示输入0以返回欢迎界面查看选项 参数说明:无参数要求

函数原型 search_name()

函数功能 按车名查找并提示输入0以返回欢迎界面查看选项

参数说明:无参数要求

函数原型 search_number()

函数功能 按车辆编号查找并提示输入0以返回欢迎界面查看选项

参数说明:无参数要求

函数原型delete()

函数功能 按车名查找并删除数据并提示输入0以返回欢迎界面查看选项 参数说明:无参数要求

(2 )模块说明

模块一

int findStudentID(STUDENT stu[],int findID,int Max)

{

int i;

for(i=0;i

{

if(stu[i].ID==findID)

break;

}

if(i

return i;

else

return -1;

}

int findStudentNAME(STUDENT stu[],char findNAME[10],int Max)

{

int i;

for(i=0;i

{

if(!strcmp(stu[i].Name,findNAME))

break;

}

if(i

return i;

else

return -1;

}

模块二

printf("\n请输入本次录入的教师人数: ");

scanf("%d",&number);

if(number>MAX_NUM)

{

printf("您输入的人数太多,大于%d人!\n",MAX_NUM);

return (0);

}

input(stu,number,cn) ;

return (number+cn);

}}

模块三

case '1':

printf("\n按教师号查询\n请输入教师的学号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

{

printf("查找结果如下:\n");

printf(" 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

}

else

printf("您输入的教师号不存在!\n");

break;

case '2':

printf("\n按姓名查询\n请输入教师的姓名: ");

scanf("%s",&findNAME);

if ((i=findStudentNAME(stu,findNAME,Max))!=-1)

{

printf("查找结果如下:\n");

printf(" 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].N

ame,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

}

else

printf("您输入的姓名不存在!\n");

break;

default :

printf("选择错误!\n");

}

}

模块四

int findID,i;

char findNAME[10],select;

printf("*****************请选择删除方式*****************\n"); printf("\t1--按学号删除; \t2--按姓名删除\n");

printf("************************************************\n"); printf("请选择(1--2):");

select=choice();

switch (select)

{

case '1':

printf("\n按教师号删除\n请输入教师的教师号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

DEL(stu,Max,i);

else

printf("您输入的教师号不存在!\n");

break;

case '2':

printf("\n按姓名删除\n请输入教师的姓名: ");

scanf("%s",&findNAME);

if ((i=findStudentNAME(stu,findNAME,Max))!=-1)

DEL(stu,Max,i);

else

printf("您输入的姓名不存在!\n");

break;

default :

printf("选择错误!\n");

}

}模块五

SortInforMenu(STUDENT stu[],int Max)

{

char select;

printf("*****************请选择排序方式*****************\n"); printf("\t1--按教师号排序; \t2--按姓名排序\n");

printf("************************************************\n"); printf("请选择(1--2):");

select=choice();

if (select=='1'||select=='2')

SortInfor(stu,Max,select);

else

printf("选择错误!\n");

}}

模块六

nt main(int argc, char *argv[])

{

char select;

STUDENT stu[MAX_NUM];

int current_number=0;

select=0;

while(select!='0')

{

system("cls");

DispMainMenu();

select=choice();

switch(select)

{

case '0':

printf("\n您选择的是退出测试!\n"); /*_beep(300,400);*/

continue;

case '1':

printf("\n您选择的是信息录入!\n");

current_number=InforInput(stu,current_number); break;

case '2':

printf("\n您选择的是信息修改!\n"); EditInfor(stu,current_number);

break;

case '3':

printf("\n您选择的是信息查询!\n");

QueryInfor(stu,current_number);

break;

case '4':

printf("\n您选择的是删除信息!\n");

DelInfor(stu,current_number);

break;

case '5':

printf("\n您选择的是排序信息!\n");

SortInforMenu(stu,current_number);

break;

default:

printf("\n选择错误!请重新选择!\n");

}

system("PAUSE");

}

return (0);

Save(stu,current_number);

}

3.4系统测试

1.欢迎界面

2.录入教师信息

运行结果

3.教师信息修改

运行结果

4.教师信息查询

运行结果:

5.删除

运行结果:

6.教师信息排序

运行结果:

4 参考文献

(1)C/C++程序设计,王连相等,中国科学技术出版社,2004

(2)C语言程序设计,谭浩强,清华大学出版社,1999

(3)C程序设计题解与上机指导,谭浩强,清华大学出版社,1999

(4)C语言使用程序荟萃,西安电子科技大学出版社,1993

(5)C语言函数手册,机械工业出版社,1999

(6)C语言的实际应用,安徽科学技术出版社,2000

5 程序设计总结

结束语:

通过这几天来对这个C课程的设计,使我们充分体会到了编程给我们带来的乐趣,其中我们也会遇到编译错误,有时也会令程序无法运行,但我们没有放弃,而是几个人一起讨论,仔细查找造成问题的原因。既锻炼了我们的思维能力,有培养了我们的意志和毅力,使我们对C语言编程方面的能力得到了提高,而这些是我们在课本上所学不到的!当然,在这次课程设计中也暴露出我们的一些不足,比如编程时想当然,一些我们表面上看似成立的程序,实际上却可能根本无法运行,只有实际用C语言编译环境中运行一下才知道程序中存在的问题。这都是我们没有养成良好的编程习惯所造成的,毕竟我们才刚刚开始学习编程,以后的路还很长„„

致谢

感谢XXX老师的悉心指导„„

附录 程序源代码

#include

#include

#include

#include

#define MAX_NUM 45

struct studenter {

int ID;

char Name[10];

int Age;

char Sex[2];

int Birthday;

char Adress[15];

char TelNum[12];

char Email[10];

};

typedef struct studenter STUDENT;

void input(STUDENT stu[],int Max,int cn);

int findStudentID(STUDENT stu[],int findID,int Max);

void DisplayInfor(STUDENT stu[],int Max);

void DispMainMenu();

void DispQueryMenu();

char choice();

int InforInput(STUDENT stu[],int cn);

void QueryInfor(STUDENT stu[],int Max);

void EditInfor(STUDENT stu[],int Max);

void DispMainMenu()

{

printf("**************教师信息管理系统1.0**************\n"); printf("\t1--教师信息录入 \t2--教师信息修改\n");

printf("\t3--教师信息查询 \t4--教师信息删除\n");

printf("\t5--教师信息排序 \t0--退出\n");

printf("************************************************\n"); printf("请选择(0--5):");

}

void DispQueryMenu()

{

printf("*****************请选择查询方式*****************\n"); printf("\t1--按教师号查询; \t2--按姓名查询\n");

printf("************************************************\n"); printf("请选择(1--2):");

}

char choice()

{

char select;

select=getche();

getch();

return (select);

}

void DisplayInfor(STUDENT stu[],int Max)

{

int i;

printf("\n 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");

for(i=0;i

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

printf("\n");

}

void input(STUDENT stu[],int Max,int cn)

{

int i;

for(i=cn;i

{

printf("\n请输入第%d个教师的教师号 (8个字符以内):",i+1); scanf("%d",&stu[i].ID);

printf("\n\t\t姓名(10个字符以内):");

scanf("%s",stu[i].Name);

printf("\n\t\t\t 年龄:");

scanf("%d",&stu[i].Age);

printf("\n\t\t\t性别(m或w):");

scanf("%s",&stu[i].Sex);

printf("\n\t\t 出生年月(8位):");

scanf("%d",&stu[i].Birthday);

printf("\n\t\t\t 地址:");

scanf("%s",&stu[i].Adress);

printf("\n\t\t\t 电话:");

scanf("%s",&stu[i].TelNum);

printf("\n\t\t\t E-mail:");

scanf("%s",&stu[i].Email);

}

printf("\n您的输入信息是:\n");

DisplayInfor(stu,Max+cn);

}

int findStudentID(STUDENT stu[],int findID,int Max)

{

int i;

for(i=0;i

{

if(stu[i].ID==findID)

break;

}

if(i

return i;

else

return -1;

}

int findStudentNAME(STUDENT stu[],char findNAME[10],int Max)

{

int i;

for(i=0;i

{

if(!strcmp(stu[i].Name,findNAME))

break;

}

if(i

return i;

else

return -1;

}

int InforInput(STUDENT stu[],int cn)

{

int number;

printf("\n请输入本次录入的教师人数: ");

scanf("%d",&number);

if(number>MAX_NUM)

{

printf("您输入的人数太多,大于%d人!\n",MAX_NUM);

return (0);

}

input(stu,number,cn) ;

return (number+cn);

}

void QueryInfor(STUDENT stu[],int Max)

{

char select;

int i;

int findID;

char findNAME[10];

DispQueryMenu();

select=choice();

switch (select)

{

case '1':

printf("\n按教师号查询\n请输入教师的学号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

{

printf("查找结果如下:\n");

printf(" 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

}

else

printf("您输入的教师号不存在!\n");

break;

case '2':

printf("\n按姓名查询\n请输入教师的姓名: ");

scanf("%s",&findNAME);

if ((i=findStudentNAME(stu,findNAME,Max))!=-1)

{

printf("查找结果如下:\n");

printf(" 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

}

else

printf("您输入的姓名不存在!\n");

break;

default :

printf("选择错误!\n");

}

}

void EditInfor(STUDENT stu[],int Max)

{

int i;

int findID;

printf("\n请输入教师的学号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

{

printf("姓 名: %s\n",stu[i].Name);

printf("原信息:%8d %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); printf("\n 请输入新的教师号 (8个字符以内):",i+1);

scanf("%d",&stu[i].ID);

printf("\n\t\t姓名(10个字符以内):");

scanf("%s",stu[i].Name);

printf("\n\t\t\t 年龄:");

scanf("%d",&stu[i].Age);

printf("\n\t\t\t性别(m或w):");

scanf("%s",&stu[i].Sex);

printf("\n\t\t 出生年月(8位):");

scanf("%d",&stu[i].Birthday);

printf("\n\t\t\t 地址:");

scanf("%s",&stu[i].Adress);

printf("\n\t\t\t 电话:");

scanf("%s",&stu[i].TelNum);

printf("\n\t\t\t E-mail:");

scanf("%s",&stu[i].Email);

}

else

printf("您输入的教师号不存在!\n");

}

DEL(STUDENT stu[],int Max,int i)

{

for(;i

{

stu[i-1].ID=stu[i].ID;

strcpy(stu[i-1].Name,stu[i].Name);

stu[i-1].Age=stu[i].Age;

strcpy(stu[i-1].Sex,stu[i].Sex);

stu[i-1].Birthday=stu[i].Birthday;

strcpy(stu[i-1].Adress,stu[i].Adress);

strcpy(stu[i-1].TelNum,stu[i].TelNum);

strcpy(stu[i-1].Email,stu[i].Email);

}

return(--Max);

}

DelInfor(STUDENT stu[],int Max)

{

int findID,i;

char findNAME[10],select;

printf("*****************请选择删除方式*****************\n"); printf("\t1--按学号删除; \t2--按姓名删除\n");

printf("************************************************\n"); printf("请选择(1--2):");

select=choice();

switch (select)

{

case '1':

printf("\n按教师号删除\n请输入教师的教师号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

DEL(stu,Max,i);

else

printf("您输入的教师号不存在!\n");

break;

case '2':

printf("\n按姓名删除\n请输入教师的姓名: ");

scanf("%s",&findNAME);

if ((i=findStudentNAME(stu,findNAME,Max))!=-1)

DEL(stu,Max,i);

else

printf("您输入的姓名不存在!\n");

break;

default :

printf("选择错误!\n");

}

}

SortInforMenu(STUDENT stu[],int Max)

{

char select;

printf("*****************请选择排序方式*****************\n"); printf("\t1--按教师号排序; \t2--按姓名排序\n");

printf("************************************************\n"); printf("请选择(1--2):");

select=choice();

if (select=='1'||select=='2')

SortInfor(stu,Max,select);

else

printf("选择错误!\n");

}

SortInfor(STUDENT stu[],int Max,char i)

{

STUDENT student;

int j=0,k,l=0;

if(i=='1')

{

for(k=0;j

for(;k

{

if(stu[k].ID>stu[k+1].ID)

{

student.ID=stu[k+1].ID;

strcpy(student.Name,stu[k+1].Name);

student.Age=stu[k+1].Age;

strcpy(student.Sex,stu[k+1].Sex);

student.Birthday=stu[k+1].Birthday;

strcpy(student.Adress,stu[k+1].Adress);

strcpy(student.TelNum,stu[k+1].TelNum);

strcpy(student.Email,stu[k+1].Email);

stu[k+1].ID=stu[k].ID;

strcpy(stu[k+1].Name,stu[k].Name);

stu[k+1].Age=stu[k].Age;

strcpy(stu[k+1].Sex,stu[k].Sex);

stu[k+1].Birthday=stu[k].Birthday;

strcpy(stu[k+1].Adress,stu[k].Adress);

strcpy(stu[k+1].TelNum,stu[k].TelNum);

strcpy(stu[k+1].Email,stu[k].Email);

stu[k].ID=student.ID;

strcpy(stu[k].Name,student.Name);

stu[k].Age=student.Age;

strcpy(stu[k].Sex,student.Sex);

stu[k].Birthday=student.Birthday;

strcpy(stu[k].Adress,student.Adress);

strcpy(stu[k].TelNum,student.TelNum);

strcpy(stu[k].Email,student.Email);

}

printf("\n 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");

for(i=0;i

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

printf("\n");

}

}

else if(i=='2')

{

for(k=0;j

for(;k

{

if(strcmp(stu[k].Name,stu[k+1].Name)>0)

{

student.ID=stu[k+1].ID;

strcpy(student.Name,stu[k+1].Name);

student.Age=stu[k+1].Age;

strcpy(student.Sex,stu[k+1].Sex);

student.Birthday=stu[k+1].Birthday;

strcpy(student.Adress,stu[k+1].Adress);

strcpy(student.TelNum,stu[k+1].TelNum);

strcpy(student.Email,stu[k+1].Email);

stu[k+1].ID=stu[k].ID;

strcpy(stu[k+1].Name,stu[k].Name);

stu[k+1].Age=stu[k].Age;

strcpy(stu[k+1].Sex,stu[k].Sex);

stu[k+1].Birthday=stu[k].Birthday;

strcpy(stu[k+1].Adress,stu[k].Adress);

strcpy(stu[k+1].TelNum,stu[k].TelNum);

strcpy(stu[k+1].Email,stu[k].Email);

stu[k].ID=student.ID;

strcpy(stu[k].Name,student.Name);

stu[k].Age=student.Age;

strcpy(stu[k].Sex,student.Sex);

stu[k].Birthday=student.Birthday;

strcpy(stu[k].Adress,student.Adress);

strcpy(stu[k].TelNum,student.TelNum);

strcpy(stu[k].Email,student.Email);

}

}

printf("\n 姓名 教师号 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");

for(;l

printf("%10s %8d %2d %2s %8d %15s %12s %10s",stu[l].Name,stu[l].ID,stu[l].Age,stu[l].Sex,stu[l].Birthday,stu[l].Adress,stu[l].TelNum,stu[l].Email);

printf("\n");

}

}

Save(STUDENT stu[],int Max)

{

int i=0 ;

FILE *fp;

if((fp=fopen("stu.txt","w+"))==NULL)

{

printf("ERROR!");

exit(0);

}

for(;i

{

fprintf(fp,"%d ",stu[i].ID);

fprintf(fp,"%s ",stu[i].Name);

fprintf(fp,"%d ",stu[i].Age);

fprintf(fp,"%s ",stu[i].Sex);

fprintf(fp,"%d ",stu[i].Birthday);

fprintf(fp,"%s ",stu[i].Adress);

fprintf(fp,"%s ",stu[i].TelNum);

fprintf(fp,"%s ",stu[i].Email);

}

fclose(fp);

printf("OK!");

}

int main(int argc, char *argv[])

{

char select;

STUDENT stu[MAX_NUM];

int current_number=0;

select=0;

while(select!='0')

{

system("cls");

DispMainMenu();

select=choice();

switch(select)

{

case '0':

printf("\n您选择的是退出测试!\n"); /*_beep(300,400);*/

continue;

case '1':

printf("\n您选择的是信息录入!\n");

current_number=InforInput(stu,current_number); break;

case '2':

printf("\n您选择的是信息修改!\n"); EditInfor(stu,current_number);

break;

case '3':

printf("\n您选择的是信息查询!\n");

QueryInfor(stu,current_number);

break;

case '4':

printf("\n您选择的是删除信息!\n");

DelInfor(stu,current_number);

break;

case '5':

printf("\n您选择的是排序信息!\n");

SortInforMenu(stu,current_number);

break;

default:

printf("\n选择错误!请重新选择!\n");

}

system("PAUSE"); }

return (0);

Save(stu,current_number); }

高级语言课程设计

任务书及说明书

设计题目 教师信息管理系统

学 院

专业、年级

学 生

学 号_____

指导教师

时 间 年 学期

目 录

1 摘要„„„„„„„„„„„„„„„„„„„„„„„3 2 前言„„„„„„„„„„„„„„„„„„„„„„„4 3 正文„„„„„„„„„„„„„„„„„„„„„„„5

3.1系统分析

3.2系统总体设计

3.3详细设计

3.4系统测试

4 参考文献„„„„„„„„„„„„„„„„„„„„„14 5 总结„„„„„„„„„„„„„„„„„„„„„„„15

附录: 程序源代码

1 摘要

本次课程设计采用C语言,开发了一个基本的教师信息管理系统,该系统具备了按教师姓名查找并输出教师信息,按教师号查找并输出教师信息,按教师姓名查找并删除数据,输出全部教师信息数据,对教师的管理也可以更加方便快捷。

关键词:

C语言;课程设计;教师信息管理系统

2 前言

随着教育的广泛性的提高,教师的数量逐渐增多,但是在教师管理是出现教师姓名、年龄等出现错误的诸多问题。本文针对上述问题,采用软件工程的开发原理,根据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个教师信息管理系统。采用c语言作为开发工具,设计了这个教师信息管理系统,解决了教师信息管理中存在的数据安全性、数据一致性等问题。

3、正文

3.1 系统分析

3.3.1.设计要求

该设计要求教师以学校教师信息管理业务为背景,设计、开发一套“教师信息管理系统”软件。

通过该题目的设计过程,可以培养教师结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力。

3.3.2设计任务

1、以教师信息管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;

2、完成软件结构设计和算法设计;

3、完成系统的软件开发和测试工作

教师信息包括:教师号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。设计“教师信息管理系统”,使之能提供以下功能:

1. 系统以菜单方式工作;

2. 教师信息录入功能;

3. 教师信息浏览功能;

4. 查询、排序功能:按学号查询、按姓名查询;

5. 教师信息的删除与修改。

3.2 系统总体设计

一.流程图

二.总体数据结构

本系统采用结构体为主要数据结构,将教师信息,包括:教师号,姓名,年龄,性别,出生年月,地址,电话,E-mail以结构体的形式存储在计算机中,并建立结构体数组。

for(i=cn;i

{

printf("\n请输入第%d个教师的教师号 (8个字符以内):",i+1); scanf("%d",&stu[i].ID);

printf("\n\t\t姓名(10个字符以内):");

scanf("%s",stu[i].Name);

printf("\n\t\t\t 年龄:");

scanf("%d",&stu[i].Age);

printf("\n\t\t\t性别(m或w):");

scanf("%s",&stu[i].Sex);

printf("\n\t\t 出生年月(8位):");

scanf("%d",&stu[i].Birthday);

printf("\n\t\t\t 地址:");

scanf("%s",&stu[i].Adress);

printf("\n\t\t\t 电话:");

scanf("%s",&stu[i].TelNum);

printf("\n\t\t\t E-mail:");

scanf("%s",&stu[i].Email);

}

3.3详细设计

(1) 函数及参数说明

函数原型 input()

函数功能 输入数据并提示输入0以返回欢迎界面查看选项

参数说明:无参数要求

函数原型 insert()

函数功能 函数原型添加一组新数据并提示输入0以返回欢迎界面查看选项 参数说明:无参数要求

函数原型 search_name()

函数功能 按车名查找并提示输入0以返回欢迎界面查看选项

参数说明:无参数要求

函数原型 search_number()

函数功能 按车辆编号查找并提示输入0以返回欢迎界面查看选项

参数说明:无参数要求

函数原型delete()

函数功能 按车名查找并删除数据并提示输入0以返回欢迎界面查看选项 参数说明:无参数要求

(2 )模块说明

模块一

int findStudentID(STUDENT stu[],int findID,int Max)

{

int i;

for(i=0;i

{

if(stu[i].ID==findID)

break;

}

if(i

return i;

else

return -1;

}

int findStudentNAME(STUDENT stu[],char findNAME[10],int Max)

{

int i;

for(i=0;i

{

if(!strcmp(stu[i].Name,findNAME))

break;

}

if(i

return i;

else

return -1;

}

模块二

printf("\n请输入本次录入的教师人数: ");

scanf("%d",&number);

if(number>MAX_NUM)

{

printf("您输入的人数太多,大于%d人!\n",MAX_NUM);

return (0);

}

input(stu,number,cn) ;

return (number+cn);

}}

模块三

case '1':

printf("\n按教师号查询\n请输入教师的学号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

{

printf("查找结果如下:\n");

printf(" 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

}

else

printf("您输入的教师号不存在!\n");

break;

case '2':

printf("\n按姓名查询\n请输入教师的姓名: ");

scanf("%s",&findNAME);

if ((i=findStudentNAME(stu,findNAME,Max))!=-1)

{

printf("查找结果如下:\n");

printf(" 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].N

ame,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

}

else

printf("您输入的姓名不存在!\n");

break;

default :

printf("选择错误!\n");

}

}

模块四

int findID,i;

char findNAME[10],select;

printf("*****************请选择删除方式*****************\n"); printf("\t1--按学号删除; \t2--按姓名删除\n");

printf("************************************************\n"); printf("请选择(1--2):");

select=choice();

switch (select)

{

case '1':

printf("\n按教师号删除\n请输入教师的教师号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

DEL(stu,Max,i);

else

printf("您输入的教师号不存在!\n");

break;

case '2':

printf("\n按姓名删除\n请输入教师的姓名: ");

scanf("%s",&findNAME);

if ((i=findStudentNAME(stu,findNAME,Max))!=-1)

DEL(stu,Max,i);

else

printf("您输入的姓名不存在!\n");

break;

default :

printf("选择错误!\n");

}

}模块五

SortInforMenu(STUDENT stu[],int Max)

{

char select;

printf("*****************请选择排序方式*****************\n"); printf("\t1--按教师号排序; \t2--按姓名排序\n");

printf("************************************************\n"); printf("请选择(1--2):");

select=choice();

if (select=='1'||select=='2')

SortInfor(stu,Max,select);

else

printf("选择错误!\n");

}}

模块六

nt main(int argc, char *argv[])

{

char select;

STUDENT stu[MAX_NUM];

int current_number=0;

select=0;

while(select!='0')

{

system("cls");

DispMainMenu();

select=choice();

switch(select)

{

case '0':

printf("\n您选择的是退出测试!\n"); /*_beep(300,400);*/

continue;

case '1':

printf("\n您选择的是信息录入!\n");

current_number=InforInput(stu,current_number); break;

case '2':

printf("\n您选择的是信息修改!\n"); EditInfor(stu,current_number);

break;

case '3':

printf("\n您选择的是信息查询!\n");

QueryInfor(stu,current_number);

break;

case '4':

printf("\n您选择的是删除信息!\n");

DelInfor(stu,current_number);

break;

case '5':

printf("\n您选择的是排序信息!\n");

SortInforMenu(stu,current_number);

break;

default:

printf("\n选择错误!请重新选择!\n");

}

system("PAUSE");

}

return (0);

Save(stu,current_number);

}

3.4系统测试

1.欢迎界面

2.录入教师信息

运行结果

3.教师信息修改

运行结果

4.教师信息查询

运行结果:

5.删除

运行结果:

6.教师信息排序

运行结果:

4 参考文献

(1)C/C++程序设计,王连相等,中国科学技术出版社,2004

(2)C语言程序设计,谭浩强,清华大学出版社,1999

(3)C程序设计题解与上机指导,谭浩强,清华大学出版社,1999

(4)C语言使用程序荟萃,西安电子科技大学出版社,1993

(5)C语言函数手册,机械工业出版社,1999

(6)C语言的实际应用,安徽科学技术出版社,2000

5 程序设计总结

结束语:

通过这几天来对这个C课程的设计,使我们充分体会到了编程给我们带来的乐趣,其中我们也会遇到编译错误,有时也会令程序无法运行,但我们没有放弃,而是几个人一起讨论,仔细查找造成问题的原因。既锻炼了我们的思维能力,有培养了我们的意志和毅力,使我们对C语言编程方面的能力得到了提高,而这些是我们在课本上所学不到的!当然,在这次课程设计中也暴露出我们的一些不足,比如编程时想当然,一些我们表面上看似成立的程序,实际上却可能根本无法运行,只有实际用C语言编译环境中运行一下才知道程序中存在的问题。这都是我们没有养成良好的编程习惯所造成的,毕竟我们才刚刚开始学习编程,以后的路还很长„„

致谢

感谢XXX老师的悉心指导„„

附录 程序源代码

#include

#include

#include

#include

#define MAX_NUM 45

struct studenter {

int ID;

char Name[10];

int Age;

char Sex[2];

int Birthday;

char Adress[15];

char TelNum[12];

char Email[10];

};

typedef struct studenter STUDENT;

void input(STUDENT stu[],int Max,int cn);

int findStudentID(STUDENT stu[],int findID,int Max);

void DisplayInfor(STUDENT stu[],int Max);

void DispMainMenu();

void DispQueryMenu();

char choice();

int InforInput(STUDENT stu[],int cn);

void QueryInfor(STUDENT stu[],int Max);

void EditInfor(STUDENT stu[],int Max);

void DispMainMenu()

{

printf("**************教师信息管理系统1.0**************\n"); printf("\t1--教师信息录入 \t2--教师信息修改\n");

printf("\t3--教师信息查询 \t4--教师信息删除\n");

printf("\t5--教师信息排序 \t0--退出\n");

printf("************************************************\n"); printf("请选择(0--5):");

}

void DispQueryMenu()

{

printf("*****************请选择查询方式*****************\n"); printf("\t1--按教师号查询; \t2--按姓名查询\n");

printf("************************************************\n"); printf("请选择(1--2):");

}

char choice()

{

char select;

select=getche();

getch();

return (select);

}

void DisplayInfor(STUDENT stu[],int Max)

{

int i;

printf("\n 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");

for(i=0;i

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

printf("\n");

}

void input(STUDENT stu[],int Max,int cn)

{

int i;

for(i=cn;i

{

printf("\n请输入第%d个教师的教师号 (8个字符以内):",i+1); scanf("%d",&stu[i].ID);

printf("\n\t\t姓名(10个字符以内):");

scanf("%s",stu[i].Name);

printf("\n\t\t\t 年龄:");

scanf("%d",&stu[i].Age);

printf("\n\t\t\t性别(m或w):");

scanf("%s",&stu[i].Sex);

printf("\n\t\t 出生年月(8位):");

scanf("%d",&stu[i].Birthday);

printf("\n\t\t\t 地址:");

scanf("%s",&stu[i].Adress);

printf("\n\t\t\t 电话:");

scanf("%s",&stu[i].TelNum);

printf("\n\t\t\t E-mail:");

scanf("%s",&stu[i].Email);

}

printf("\n您的输入信息是:\n");

DisplayInfor(stu,Max+cn);

}

int findStudentID(STUDENT stu[],int findID,int Max)

{

int i;

for(i=0;i

{

if(stu[i].ID==findID)

break;

}

if(i

return i;

else

return -1;

}

int findStudentNAME(STUDENT stu[],char findNAME[10],int Max)

{

int i;

for(i=0;i

{

if(!strcmp(stu[i].Name,findNAME))

break;

}

if(i

return i;

else

return -1;

}

int InforInput(STUDENT stu[],int cn)

{

int number;

printf("\n请输入本次录入的教师人数: ");

scanf("%d",&number);

if(number>MAX_NUM)

{

printf("您输入的人数太多,大于%d人!\n",MAX_NUM);

return (0);

}

input(stu,number,cn) ;

return (number+cn);

}

void QueryInfor(STUDENT stu[],int Max)

{

char select;

int i;

int findID;

char findNAME[10];

DispQueryMenu();

select=choice();

switch (select)

{

case '1':

printf("\n按教师号查询\n请输入教师的学号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

{

printf("查找结果如下:\n");

printf(" 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

}

else

printf("您输入的教师号不存在!\n");

break;

case '2':

printf("\n按姓名查询\n请输入教师的姓名: ");

scanf("%s",&findNAME);

if ((i=findStudentNAME(stu,findNAME,Max))!=-1)

{

printf("查找结果如下:\n");

printf(" 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

}

else

printf("您输入的姓名不存在!\n");

break;

default :

printf("选择错误!\n");

}

}

void EditInfor(STUDENT stu[],int Max)

{

int i;

int findID;

printf("\n请输入教师的学号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

{

printf("姓 名: %s\n",stu[i].Name);

printf("原信息:%8d %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); printf("\n 请输入新的教师号 (8个字符以内):",i+1);

scanf("%d",&stu[i].ID);

printf("\n\t\t姓名(10个字符以内):");

scanf("%s",stu[i].Name);

printf("\n\t\t\t 年龄:");

scanf("%d",&stu[i].Age);

printf("\n\t\t\t性别(m或w):");

scanf("%s",&stu[i].Sex);

printf("\n\t\t 出生年月(8位):");

scanf("%d",&stu[i].Birthday);

printf("\n\t\t\t 地址:");

scanf("%s",&stu[i].Adress);

printf("\n\t\t\t 电话:");

scanf("%s",&stu[i].TelNum);

printf("\n\t\t\t E-mail:");

scanf("%s",&stu[i].Email);

}

else

printf("您输入的教师号不存在!\n");

}

DEL(STUDENT stu[],int Max,int i)

{

for(;i

{

stu[i-1].ID=stu[i].ID;

strcpy(stu[i-1].Name,stu[i].Name);

stu[i-1].Age=stu[i].Age;

strcpy(stu[i-1].Sex,stu[i].Sex);

stu[i-1].Birthday=stu[i].Birthday;

strcpy(stu[i-1].Adress,stu[i].Adress);

strcpy(stu[i-1].TelNum,stu[i].TelNum);

strcpy(stu[i-1].Email,stu[i].Email);

}

return(--Max);

}

DelInfor(STUDENT stu[],int Max)

{

int findID,i;

char findNAME[10],select;

printf("*****************请选择删除方式*****************\n"); printf("\t1--按学号删除; \t2--按姓名删除\n");

printf("************************************************\n"); printf("请选择(1--2):");

select=choice();

switch (select)

{

case '1':

printf("\n按教师号删除\n请输入教师的教师号: ");

scanf("%d",&findID);

if ((i=findStudentID(stu,findID,Max))!=-1)

DEL(stu,Max,i);

else

printf("您输入的教师号不存在!\n");

break;

case '2':

printf("\n按姓名删除\n请输入教师的姓名: ");

scanf("%s",&findNAME);

if ((i=findStudentNAME(stu,findNAME,Max))!=-1)

DEL(stu,Max,i);

else

printf("您输入的姓名不存在!\n");

break;

default :

printf("选择错误!\n");

}

}

SortInforMenu(STUDENT stu[],int Max)

{

char select;

printf("*****************请选择排序方式*****************\n"); printf("\t1--按教师号排序; \t2--按姓名排序\n");

printf("************************************************\n"); printf("请选择(1--2):");

select=choice();

if (select=='1'||select=='2')

SortInfor(stu,Max,select);

else

printf("选择错误!\n");

}

SortInfor(STUDENT stu[],int Max,char i)

{

STUDENT student;

int j=0,k,l=0;

if(i=='1')

{

for(k=0;j

for(;k

{

if(stu[k].ID>stu[k+1].ID)

{

student.ID=stu[k+1].ID;

strcpy(student.Name,stu[k+1].Name);

student.Age=stu[k+1].Age;

strcpy(student.Sex,stu[k+1].Sex);

student.Birthday=stu[k+1].Birthday;

strcpy(student.Adress,stu[k+1].Adress);

strcpy(student.TelNum,stu[k+1].TelNum);

strcpy(student.Email,stu[k+1].Email);

stu[k+1].ID=stu[k].ID;

strcpy(stu[k+1].Name,stu[k].Name);

stu[k+1].Age=stu[k].Age;

strcpy(stu[k+1].Sex,stu[k].Sex);

stu[k+1].Birthday=stu[k].Birthday;

strcpy(stu[k+1].Adress,stu[k].Adress);

strcpy(stu[k+1].TelNum,stu[k].TelNum);

strcpy(stu[k+1].Email,stu[k].Email);

stu[k].ID=student.ID;

strcpy(stu[k].Name,student.Name);

stu[k].Age=student.Age;

strcpy(stu[k].Sex,student.Sex);

stu[k].Birthday=student.Birthday;

strcpy(stu[k].Adress,student.Adress);

strcpy(stu[k].TelNum,student.TelNum);

strcpy(stu[k].Email,student.Email);

}

printf("\n 教师号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");

for(i=0;i

printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);

printf("\n");

}

}

else if(i=='2')

{

for(k=0;j

for(;k

{

if(strcmp(stu[k].Name,stu[k+1].Name)>0)

{

student.ID=stu[k+1].ID;

strcpy(student.Name,stu[k+1].Name);

student.Age=stu[k+1].Age;

strcpy(student.Sex,stu[k+1].Sex);

student.Birthday=stu[k+1].Birthday;

strcpy(student.Adress,stu[k+1].Adress);

strcpy(student.TelNum,stu[k+1].TelNum);

strcpy(student.Email,stu[k+1].Email);

stu[k+1].ID=stu[k].ID;

strcpy(stu[k+1].Name,stu[k].Name);

stu[k+1].Age=stu[k].Age;

strcpy(stu[k+1].Sex,stu[k].Sex);

stu[k+1].Birthday=stu[k].Birthday;

strcpy(stu[k+1].Adress,stu[k].Adress);

strcpy(stu[k+1].TelNum,stu[k].TelNum);

strcpy(stu[k+1].Email,stu[k].Email);

stu[k].ID=student.ID;

strcpy(stu[k].Name,student.Name);

stu[k].Age=student.Age;

strcpy(stu[k].Sex,student.Sex);

stu[k].Birthday=student.Birthday;

strcpy(stu[k].Adress,student.Adress);

strcpy(stu[k].TelNum,student.TelNum);

strcpy(stu[k].Email,student.Email);

}

}

printf("\n 姓名 教师号 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");

for(;l

printf("%10s %8d %2d %2s %8d %15s %12s %10s",stu[l].Name,stu[l].ID,stu[l].Age,stu[l].Sex,stu[l].Birthday,stu[l].Adress,stu[l].TelNum,stu[l].Email);

printf("\n");

}

}

Save(STUDENT stu[],int Max)

{

int i=0 ;

FILE *fp;

if((fp=fopen("stu.txt","w+"))==NULL)

{

printf("ERROR!");

exit(0);

}

for(;i

{

fprintf(fp,"%d ",stu[i].ID);

fprintf(fp,"%s ",stu[i].Name);

fprintf(fp,"%d ",stu[i].Age);

fprintf(fp,"%s ",stu[i].Sex);

fprintf(fp,"%d ",stu[i].Birthday);

fprintf(fp,"%s ",stu[i].Adress);

fprintf(fp,"%s ",stu[i].TelNum);

fprintf(fp,"%s ",stu[i].Email);

}

fclose(fp);

printf("OK!");

}

int main(int argc, char *argv[])

{

char select;

STUDENT stu[MAX_NUM];

int current_number=0;

select=0;

while(select!='0')

{

system("cls");

DispMainMenu();

select=choice();

switch(select)

{

case '0':

printf("\n您选择的是退出测试!\n"); /*_beep(300,400);*/

continue;

case '1':

printf("\n您选择的是信息录入!\n");

current_number=InforInput(stu,current_number); break;

case '2':

printf("\n您选择的是信息修改!\n"); EditInfor(stu,current_number);

break;

case '3':

printf("\n您选择的是信息查询!\n");

QueryInfor(stu,current_number);

break;

case '4':

printf("\n您选择的是删除信息!\n");

DelInfor(stu,current_number);

break;

case '5':

printf("\n您选择的是排序信息!\n");

SortInforMenu(stu,current_number);

break;

default:

printf("\n选择错误!请重新选择!\n");

}

system("PAUSE"); }

return (0);

Save(stu,current_number); }


相关内容

  • 高校毕业设计管理信息系统论文
  • 毕业设计(论文) 题目名称:高校毕业设计管理信息系统设计与实现 学院名称:经济管理学院 班 级: 学号: 学生姓名: 指导教师: 2016年 6 月 高校毕业设计管理信息系统 Management information system for graduation design in college ...

  • 教育技术学硕士毕业论文题目参考
  • 教育技术学硕士毕业论文题目参考(-)() 教育技术学硕士毕业论文题目参考(2002-2006) (3) 河北大学74 1 网络博客促进教师专业化发展研究 赵可云 河北大学 2006-07-08 2006 硕士 2 任务驱动法在中小学信息技术教学中的应用研究 郑莉平 河北大学 2006-07-08 2 ...

  • 5-"中国知网"大学生论文管理系统(PMLC)常见问题解答
  • "中国知网"大学生论文管理系统(PMLC)常见问题解答 版本:[2014]PMLC05.12 编制时间:20140512 目录 一.系统登录常见问题.................................................................. ...

  • 研究生科研信息管理系统需求分析
  • 研究生科研信息管理系统需求分析 研究生科研信息管理系统功能要求 研究生科研信息管理系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的.易扩充的.易维护的.具有良好人机交互界面的研究生科研信息管理系统,实现为导师和研究生提供充分的管理信息 ...

  • 计算机实验室排课系统的设计与实现毕业论文
  • 忻 州 师 范 学 院 计算机系本科毕业(设计)论文 课题名称 计 算 机 实 验 室 排 课 系 统 的 设 计 与 实 现 专 业 计 算 机 科 学 与 技 术 姓 名 杨 岩 学 号 2 0 1 1 0 8 1 1 2 0 4 3 指导教师 郑 志 荣 二零一三年六月 目 录 1 引 言 . ...

  • 高校教师管理系统_详细设计文档
  • [项目名称] 详细设计说明书 2009 年 05 月 9 日 1.引言 1.1编写目的 高校的教师档案管理一直是一个非常棘手的问题.以往的档案管理多采用人工管理的方式,以电子文档和纸质文档存储.然而教师档案的动态性使得这种方式捉襟见肘.教师档案的实际变化同档案记录同步性较差.另一方面各大高校往往有自 ...

  • 教学工作信息简报2010年第3期总第72期
  • 教学工作信息简报 2010年第3期 总第72期 工商学院教务部 2010年5月31日 目 录 教务部门积极开展学期中教学大检查工作„„„„„„„„„„(1) 我院普通话水平测试工作圆满完成„„„„„„„„„„„„„(1) 2006级学生毕业论文(设计)工作进展顺利„„„„„‥„„„ ( 2) 我院加 ...

  • 第四届全国教师论文大赛指南
  • 附件 2013年第四届"中国移动校讯通杯" 全国教师论文大赛 指 南 "中国移动校讯通杯"全国教师论文大赛组织委员会编 二○一三年三月 目 录 一.参赛人员范围 二.活动时间 三.参赛要求 四.评审方式和报送方式 五.奖项设置和论文发表 六.组织工作 附录:& ...

  • 毕业论文(教师教学评价管理系统)
  • SHANDONGUNIVERSITY OF TECHNOLOGY 毕业论文 教师教学评价管理系统 的设计与实现 学 院: 计算机科学与技术学院 专 业: 计算机科学与技术 学生姓名: 袁霖方 学 号: 0812104359 指导教师: 孙学用 2012 年 6 月 摘要 摘 要 将计算机应用于信息管 ...

  • 论文校园教学资源共享与交流平台设计与实现
  • 本 科 毕 业 论 文(设 计) 校园教学资源共享与交流平台的设计与实现 The Design and Implementation of Sharing Campus Teaching Resources and Exchanging Platform 学 生 姓 名: 学 院: 专 业: 班 级 ...