文件传输协议的简单设计与实现(c语言.

时间:2019-05-12 21:03:41下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《文件传输协议的简单设计与实现(c语言.》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《文件传输协议的简单设计与实现(c语言.》。

第一篇:文件传输协议的简单设计与实现(c语言.

文件传输协议的简单设计与实现(c语言,VC6.0)使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。

对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤:

(1)创建Socket;

(2)打开连接到Socket的输入/出流;

(3)按照一定的协议对Socket进行读/写操作;

(4)关闭Socket.第三步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种程序中基本相同。

/****************client.c****************/ #include #include #include #pragma comment(lib,“ws2_32.lib”)#define DEFAULT_PORT 2302 #define DEFAULT_BUFFER 2048 #define DEFAULT_MESSAGE “This is a test of the emergency broadcasting system” char szServerip[128], // Server to connect to szMessage[1024];// Message to send to sever int iPort = DEFAULT_PORT;// Port on server to connect to

//DWORD dwCount = DEFAULT_COUNT;// Number of times to send message BOOL bSendOnly = FALSE;// Send data only;don't receive int dirfun();int getfun();int putfun();int pwdfun();int cdfun();int mdfun();int delfun();int usafun();

void usage(){ printf(“usage: client [-p:x] [-s:IP] [-n:x] [-o]nn”);printf(“-p:x Remote port to send ton”);printf(“-s:IP Server's IP address or hostnamen”);printf(“-n:x Number of times to send messagen”);printf(“-o Send messages only;don't receiven”);ExitProcess(1);} void ValidateArgs(int argc, char **argv){ int i;

for(i = 1;i < argc;i++){ if((argv[i][0] == '-')||(argv[i][0] == '/')){ switch(tolower(argv[i][1])){ case 'p': // Remote port

if(strlen(argv[i])> 3)iPort = atoi(&argv[i][3]);break;case 's': // Server

if(strlen(argv[i])> 3)strcpy(szServerip, &argv[i][3]);break;case 'n': // Number of times to send message

if(strlen(argv[i])> 3)//dwCount = atol(&argv[i][3]);

break;case 'o': // Only send message;don't receive

bSendOnly = TRUE;break;default: usage();break;} } } } int main(int argc, char **argv){ WSADATA wsd;SOCKET sClient;char szBuffer[DEFAULT_BUFFER];int ret;//unsigned int i;

//int j;

struct sockaddr_in server;struct hostent *host = NULL;char choice[5],choice2[40];// Parse the command line and load Winsock

//

argv[1]=“-s:127.0.0.1”;strcpy(szServerip, &argv[1][3]);//ValidateArgs(argc, argv);if(WSAStartup(MAKEWORD(2,2), &wsd)!= 0){ printf(“Failed to load Winsock library!n”);return 1;} //strcpy(szMessage, DEFAULT_MESSAGE);

//

// Create the socket, and attempt to connect to the server

//

sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(sClient == INVALID_SOCKET){ printf(“socket()failed: %dn”, WSAGetLastError());return 1;} server.sin_family = AF_INET;server.sin_port = htons(iPort);printf(“server.sin_port=%un”,server.sin_port);server.sin_addr.s_addr = inet_addr(szServerip);//

// If the supplied server address wasn't in the form

// “aaa.bbb.ccc.ddd” it's a hostname, so try to resolve it

//

if(server.sin_addr.s_addr == INADDR_NONE){ host = gethostbyname(szServerip);if(host == NULL){ printf(“Unable to resolve server: %sn”, szServerip);return 1;} CopyMemory(&server.sin_addr, host->h_addr_list[0], host->h_length);} if(connect(sClient,(struct sockaddr *)&server, sizeof(server))== SOCKET_ERROR){ printf(“connect()failed: %dn”, WSAGetLastError());return 1;} //显示接通信息

//

//

//for(j=0;j<2;j++)

//

{

ret = recv(sClient, szBuffer, DEFAULT_BUFFER, 0);if(ret == 0)// Graceful close

return 0;else if(ret == SOCKET_ERROR){ printf(“recv()failed: %dn”, WSAGetLastError());return 0;} szBuffer[ret] = '';printf(“%sn”,szBuffer);if(ret<15){ ret = recv(sClient, szBuffer, DEFAULT_BUFFER, 0);if(ret == 0)// Graceful close return 0;else if(ret == SOCKET_ERROR){ //printf(“recv()failed: %dn”, WSAGetLastError());

return 0;} szBuffer[ret] = '';printf(“%sn”,szBuffer);} //printf(“DEFAULT_BUFFER=%dn”,DEFAULT_BUFFER);

} while(1){

puts(“-----------”);printf(“ftp> ”);scanf(“%s”, choice);

if(strncmp(choice,“dir”,3)==0||strncmp(choice,“DIR”,2)==0){ dirfun(sClient);continue;}

else if(strncmp(choice,“pwd”,3)==0||strncmp(choice,“PWD”,3)==0){

pwdfun(sClient);continue;} else if(strncmp(choice,“?”,1)==0){ usafun(sClient);continue;} else if(strncmp(choice,“quit”,4)==0||strncmp(choice,“QUIT”,2)==0){ break;} scanf(“%s”, choice2);if(strncmp(choice,“get”,3)==0||strncmp(choice,“GET”,3)==0){ getfun(sClient,choice2);continue;} else if(strncmp(choice,“put”,3)==0||strncmp(choice,“PUT”,3)==0){ putfun(sClient,choice2);continue;}

else if(strncmp(choice,“cd”,2)==0||strncmp(choice,“CD”,2)==0){ cdfun(sClient,choice2);continue;} else if(strncmp(choice,“md”,2)==0||strncmp(choice,“MD”,2)==0){ mdfun(sClient,choice2);continue;} else if(strncmp(choice,“del”,3)==0||strncmp(choice,“DEL”,3)==0){ delfun(sClient,choice2);continue;}

//else

puts(“输入错误,请重新输入”);fflush(stdin);fflush(stdin);printf(“n”);

printf(“n”);}

closesocket(sClient);

WSACleanup();return 0;} int dirfun(SOCKET sClient){ int ret;char *MSG=“dir$”;char szBuffer[80];strcpy(szMessage, MSG);

ret = send(sClient, szMessage, strlen(szMessage), 0);if(ret == 0)return 1;else if(ret == SOCKET_ERROR){ printf(“send()failed: %dn”, WSAGetLastError());return 1;} //printf(“Send %d bytesn”, ret);//printf(“bSendOnly=%dn”,bSendOnly);

while(!bSendOnly){ //读取流并显示

//ret = recv(sClient, szBuffer, 80, 0);

//printf(“%s”,szBuffer);

ret = recv(sClient, szBuffer, 80, 0);if(ret == 0)// Graceful close

return 1;else if(ret == SOCKET_ERROR){ printf(“recv()failed: %dn”, WSAGetLastError());return 1;} szBuffer[ret] = '';

if(strncmp(szBuffer,“226 Close”,strlen(“226 Close”))==0){ break;} printf(“%s”,szBuffer);if(strncmp(szBuffer,“500 Syntax error”,strlen(“500 Syntax error”))==0){ break;}

} return 0;} int getfun(SOCKET sClient,char filename[40]){ int ret;FILE *fpre;char szBuffer[80];

szMessage[0]='';strcat(szMessage, “get$”);//strcat(szMessage, “");

strcat(szMessage,filename);//printf(”MSG[4]=%cn“,szMessage[4]);

//szMessage[0]='g';szMessage[1]='e';szMessage[2]='t';

//

//szMessage[4]='m';szMessage[5]='e';szMessage[6]='.';szMessage[7]='t';

//

//szMessage[8]='x';szMessage[9]='t';szMessage[10]='';

ret = send(sClient, szMessage, strlen(szMessage)+1, 0);if(ret == 0)return 1;else if(ret == SOCKET_ERROR){ printf(”send()failed: %dn“, WSAGetLastError());return 1;} printf(”Send %d bytesn“, ret);ret = recv(sClient, szBuffer, 80, 0);/*if(ret == 0)// Graceful close break;

else if(ret == SOCKET_ERROR)

{

printf(”recv()failed: %dn“, WSAGetLastError());

break;

}*/

szBuffer[ret] = '';printf(”%sn“,szBuffer);if(strncmp(szBuffer,”125 Transfering...“,strlen(”125 Transfering...“))==0){ if((fpre=fopen(filename,”w“))== NULL){ printf(”open errer“);return 1;} printf(”bSendOnly=%dn“,bSendOnly);while(!bSendOnly){ //读取流并显示

ret = recv(sClient, szBuffer, 80, 0);if(ret == 0)// Graceful close

return 1;else if(ret == SOCKET_ERROR){ printf(”recv()failed: %dn“, WSAGetLastError());return 1;} szBuffer[ret] = '';

//printf(”%s“,szBuffer);

if(strncmp(szBuffer,”226 Transfer“,strlen(”226 Transfer“))==0){ break;} if(strncmp(szBuffer,”500 Syntax error“,strlen(”500 Syntax error“))==0){ break;} fprintf(fpre,”%s“,szBuffer);} printf(”%sn“,szBuffer);fclose(fpre);} return 0;} int putfun(SOCKET sClient,char filename[40]){ int ret;//int i;

FILE *fpse;//char *filename;

//char *MSG=”getme.txt“;

char szBuffer[80],temp_buffer[80];//sprintf(szMessage, ”get“,”te.txt“);

szMessage[0]='';strcat(szMessage, ”put$“);strcat(szMessage,filename);ret = send(sClient, szMessage, strlen(szMessage)+1, 0);if(ret == 0)return 0;else if(ret == SOCKET_ERROR){ printf(”send()failed: %dn“, WSAGetLastError());return 1;} //printf(”Send %d bytesn“, ret);

//filename=”me.txt“;

printf(”filename=%sn“,filename);if((fpse=fopen(filename,”r“))== NULL){ printf(”open errer“);return 1;} else

{ printf(”The file %s found,ready to transfer.n“,filename);//i=0;

while(fgets(temp_buffer,80,fpse)!=NULL){ sprintf(szBuffer,”%s“,temp_buffer);

send(sClient, szBuffer, 80, 0);} } sprintf(szBuffer, ”226 Transfer completed...rn“);

ret = send(sClient, szBuffer, strlen(szBuffer), 0);

fclose(fpse);return 0;} int pwdfun(SOCKET sClient){ int ret;char *MSG=”pwd$“;char szBuffer[160];strcpy(szMessage, MSG);ret = send(sClient, szMessage, strlen(szMessage), 0);if(ret == 0)return 1;else if(ret == SOCKET_ERROR){ printf(”send()failed: %dn“, WSAGetLastError());return 1;} printf(”Send %d bytesn“, ret);printf(”bSendOnly=%dn“,bSendOnly);while(!bSendOnly){ //读取流并显示

ret = recv(sClient, szBuffer, 160, 0);if(ret == 0)// Graceful close

return 1;else if(ret == SOCKET_ERROR){ printf(”recv()failed: %dn“, WSAGetLastError());return 1;} szBuffer[ret] = '';printf(”%sn“,szBuffer);if(strncmp(szBuffer,”226 Close“,strlen(”226 Close“))==0){ break;} if(strncmp(szBuffer,”500 Syntax error“,strlen(”500 Syntax error“))==0){ break;} } return 0;} int cdfun(SOCKET sClient,char pathname[40]){ int ret;

szMessage[0]='';strcat(szMessage, ”cd$“);strcat(szMessage,pathname);ret = send(sClient, szMessage, strlen(szMessage)+1, 0);if(ret == 0)return 1;else if(ret == SOCKET_ERROR){ printf(”send()failed: %dn“, WSAGetLastError());return 1;} printf(”Send %d bytesn“, ret);

return 0;} int mdfun(SOCKET sClient,char pathname[20]){ int ret;char szBuffer[160];//char *MSG=”md$“;

szMessage[0]='';strcat(szMessage, ”md$“);//strcat(szMessage, ”“);

strcat(szMessage,pathname);//strcpy(szMessage, MSG);

ret = send(sClient, szMessage, strlen(szMessage)+1, 0);if(ret == 0)return 1;else if(ret == SOCKET_ERROR){ printf(”send()failed: %dn“, WSAGetLastError());return 1;} printf(”Send %d bytesn“, ret);while(!bSendOnly){ //读取流并显示

ret = recv(sClient, szBuffer, 80, 0);if(ret == 0)// Graceful close

return 1;else if(ret == SOCKET_ERROR){ printf(”recv()failed: %dn“, WSAGetLastError());return 1;} szBuffer[ret] = '';

printf(”%s“,szBuffer);

if(strncmp(szBuffer,”226 Close“,strlen(”226 Close“))==0){ break;} if(strncmp(szBuffer,”500 Syntax error“,strlen(”500 Syntax error“))==0){ break;}

} return 0;} int delfun(SOCKET sClient,char name[20]){ int ret;char szBuffer[80];szMessage[0]='';strcat(szMessage, ”del$“);

strcat(szMessage,name);ret = send(sClient, szMessage, strlen(szMessage)+1, 0);if(ret == 0)return 1;else if(ret == SOCKET_ERROR){ printf(”send()failed: %dn“, WSAGetLastError());return 1;} printf(”Send %d bytesn“, ret);while(!bSendOnly){ ret = recv(sClient, szBuffer, 80, 0);if(ret == 0)// Graceful close

return 1;else if(ret == SOCKET_ERROR){ printf(”recv()failed: %dn“, WSAGetLastError());return 1;} szBuffer[ret] = '';

if(strncmp(szBuffer,”del ok“,strlen(”del ok“))==0){ printf(”del %s okn“,name);break;} printf(”%s“,szBuffer);if(strncmp(szBuffer,”500 Syntax error“,strlen(”500 Syntax error“))==0){ break;}

} return 0;} int usafun(){ puts(”-----------“);puts(”get:取远方的一个文件“);puts(”put:传给远方一个文件“);puts(”pwd:显示远主当前目录“);puts(”dir:列出远方当前目录“);puts(”md :在远方新建文件夹“);puts(”cd :改变远方当前目录“);puts(”? :显示你提供的命令“);puts(”quit :退出返回“);return 0;} //int quit()

/****************server.c****************/ #include #include #include

#pragma comment(lib,”ws2_32.lib“)WSADATA wsd;

char sbuffer[80],rbuffer[80];//send and receive buffers int n,bytes;//counters SOCKET newsocket,ns_data;

struct sockaddr_in remoteaddr;//remoteaddr_data;int port_connect=0;//port connect flag char path[80]=”“;char order[100]=”“;//SOCKET s_data_port;

int sy_error=1;// use for indicate Syntax error //server functions

int sdirfun(SOCKET newsocket);int sgetfun(SOCKET newsocket);int sputfun(SOCKET newsocket);int spwdfun(SOCKET newsocket);int scdfun(SOCKET newsocket);int smdfun(SOCKET newsocket);int sdelfun(SOCKET newsocket);void HandleError(char *func);//server functions end //MAIN

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

struct sockaddr_in localaddr;//local address structure

SOCKET s;//s_data;//welcome socket and welcome socket for data connection,and port connection for connect to client

if(argc == 2)localaddr.sin_port = htons((u_short)atoi(argv[1]));localaddr.sin_port = htons(2302);else

localaddr.sin_addr.s_addr = INADDR_ANY;localaddr.sin_family = AF_INET;if(s <0){

} printf(”socket failedn“);int addr_inlen;//address lenght variable if(WSAStartup(MAKEWORD(2,2), &wsd)!= 0){

}

memset(&localaddr,0,sizeof(localaddr));//clear localaddr s = socket(PF_INET, SOCK_STREAM, 0);WSACleanup();

printf(”WSAStartup failedn“);

//INFINITE LOOP while(1){ // while loop 1

listen(s,3);

addr_inlen = sizeof(remoteaddr);//LISTEN

if(bind(s,(struct sockaddr *)(&localaddr),sizeof(localaddr))< 0){

} printf(”Bind failed!n“);//ACCEPT main connection(control connection)

newsocket = accept(s,(struct sockaddr *)(&remoteaddr),&addr_inlen);if(newsocket == INVALID_SOCKET)break;

printf(”connected to %s at port %d n“,inet_ntoa(remoteaddr.sin_addr),ntohs(localaddr.sin_port));

//Respond with welcome message, FTP client requires those

sprintf(sbuffer,”200 Welcome rn“);

bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);sprintf(sbuffer,”530 Log in rn“);

bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);while(1)// while loop 2 {

n = 0;sy_error=1;

while(1)// while loop 3 {

bytes = recv(newsocket, &rbuffer[n], 1, 0);printf(”rbuffer[%d]=%cn“,n,rbuffer[n]);if((bytes < 0)||(bytes == 0))

break;

if(rbuffer[n] == '$'){

}

if(rbuffer[n]!= 'r')

n++;

rbuffer[n] = '';break;//INFINITE LOOP

//RECEIVE

//THE FTP COMMANDS HERE //LIST

if(strncmp(rbuffer,”dir“,3)==0){ sdirfun(newsocket);

} // end of while loop 3

if((bytes < 0)||(bytes == 0))break;

printf(”#The Server receives:# '%s' from client n“, rbuffer);

} //当前目录

if(strncmp(rbuffer,”pwd“,3)==0){

}

if(strncmp(rbuffer,”cd“,2)==0){

} scdfun(newsocket);spwdfun(newsocket);

//改变目录

//GET

}

if(strncmp(rbuffer,”put“,3)==0){

}

if(strncmp(rbuffer,”md“,2)==0){

}

if(strncmp(rbuffer,”del“,3)==0){

}

if(strncmp(rbuffer,”quit“,4)==0){

} printf(”quit n“);

sprintf(sbuffer, ”221 Bye bye...rn“);

bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);sy_error=0;break;sdelfun(newsocket);smdfun(newsocket);sputfun(newsocket);//PUT

if(strncmp(rbuffer,”get“,3)==0){ sgetfun(newsocket);

//MD

//QUIT

//Syntax error

//CLOSE CONTROL SOCKET

} // end of while loop 1 closesocket(s);

printf(”Welcome sockets close“);return 0;

closesocket(newsocket);

printf(”disconnected from %s at port %d, close control socket.n“,inet_ntoa(re

if(sy_error==1){

} printf(”command unrecognized, non-implemented!n“);sprintf(sbuffer, ”500 Syntax error.n“);

bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);

} // end of while loop 2

moteaddr.sin_addr),ntohs(localaddr.sin_port));

//CLOSE WELCOME SOCKET

}

int sdirfun(SOCKET newsocket){

char temp_buffer[80];

printf(”Equivalent to dir n“);

order[0]='';strcat(order,”dir “);strcat(order,path);strcat(order,” >tmp.txt“);system(order);FILE *fin;

fin=fopen(”tmp.txt“,”r“);

sprintf(sbuffer, ”125 Transfering...rn“);

bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);while(fgets(temp_buffer,80,fin)!=NULL){

}

fclose(fin);

sprintf(sbuffer, ”226 Transfer completed...rn“);sprintf(sbuffer,”%s“,temp_buffer);// if(port_connect==0)send(newsocket, sbuffer, strlen(sbuffer), 0);

}

bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);system(”del tmp.txt“);

//CLOSE the ns_data SOCKET or data port SOCKET if(port_connect==0){

}

sy_error=0;return 0;closesocket(ns_data);

sprintf(sbuffer,”226 Close the data socket...rn“);bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);ns_data = socket(AF_INET, SOCK_STREAM, 0);

int sgetfun(SOCKET newsocket){

int i=4,k=0;

char filename[20],temp_buffer[80];

// identify the filename from rbuffer after the word ”RETR “ while(1)// while loop 4 {

bytes = recv(newsocket, &rbuffer[i], 1, 0);printf(”rbuffer[i]=%cn“,rbuffer[i]);if((bytes < 0)||(bytes == 0))break;

filename[k]=rbuffer[i];if(rbuffer[i] == ''){ /*end on LF*/

}

if(rbuffer[i]!= 'r'){

} i++;

k++;/*ignore CR's*/ filename[k] = '';break;printf(”RETR mode.rn“);

//RECEIVE

} // end of while loop 4 order[0]='';

e);

}

strcat(order,path);if(strlen(path)>0)strcat(order,”“);strcat(order,filename);char *p_filename=order;FILE *fp;

if((fp=fopen(p_filename,”r“))== NULL){ sprintf(sbuffer, ”Sorry, cannot open %s.Please try again.rn“,filenam

} bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);sprintf(sbuffer, ”226 Transfer completed...rn“);bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);return 1;

else {

printf(”The file %s found,ready to transfer.n“,filename);sprintf(sbuffer, ”125 Transfering...rn“);bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);while(fgets(temp_buffer,80,fp)!=NULL){

sprintf(sbuffer,”%s“,temp_buffer);// if(port_connect==0)

send(newsocket, sbuffer, strlen(sbuffer), 0);

}//end of while fclose(fp);

sprintf(sbuffer, ”226 Transfer completed...rn“);bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);

}

sy_error=0;

return 0;

int sputfun(SOCKET newsocket){

printf(”Equivalent to put.n“);

int i=4,k=0;char filename[20];

// identify the filename from rbuffer after the word ”RETR “ while(1){

bytes = recv(newsocket, &rbuffer[i], 1, 0);if((bytes < 0)||(bytes == 0))break;

filename[k]=rbuffer[i];if(rbuffer[i] == ''){ /*end on LF*/

}

if(rbuffer[i]!= 'r'){

} i++;

k++;/*ignore CR's*/ filename[k] = '';break;

} // end of while order[0]='';strcat(order,path);if(strlen(path)>0)strcat(order,”“);strcat(order,filename);printf(”filename=%s,“,order);char *p_filename=order;FILE *fpse;

if((fpse=fopen(order,”w“))== NULL){

} else { printf(”The file %s found,ready to transfer.n“,filename);while(1){

//读取流并显示 int ret;printf(”open errer“);return 1;

}

}

} ret = recv(newsocket, rbuffer, 80, 0);if(ret == 0)// Graceful close

return 0;

else if(ret == SOCKET_ERROR){

}

printf(”recv()failed: %dn“, WSAGetLastError());return 0;

if(strncmp(rbuffer,”226 Transfer“,strlen(”226 Transfer“))==0){

}

break;

fprintf(fpse,”%s“,rbuffer);

printf(”RBUFFER=%s“,rbuffer);fclose(fpse);

sy_error=0;

return 0;

int spwdfun(SOCKET newsocket){

char temp_buffer[160];

while(fgets(temp_buffer,80,fin)!=NULL){

temp_buffer[strlen(temp_buffer)-1]='';printf(”temp_buffer=%s“,temp_buffer);///////////////////////////////目录判定 if(path[0]!='')sprintf(sbuffer,”%s%s“,temp_buffer,path);else

printf(”Equivalent to pwd n“);//order[0]='';//strcat(order,”dir “);//strcat(order,path);//strcat(order,);system(”cd >tmp.txt“);FILE *fin;

fin=fopen(”tmp.txt“,”r+“);

sprintf(sbuffer, ”125 Transfering...rn“);bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);

}

sprintf(sbuffer,”%s“,temp_buffer);

/////////////////////////////// if(port_connect==0)

//send(ns_data, sbuffer, strlen(sbuffer), 0);send(newsocket, sbuffer, strlen(sbuffer), 0);

}

fclose(fin);

sprintf(sbuffer, ”226 Transfer completed...rn“);bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);system(”del tmp.txt“);

//CLOSE the ns_data SOCKET or data port SOCKET if(port_connect==0){

}

sy_error=0;closesocket(ns_data);

sprintf(sbuffer,”226 Close the data socket...rn“);bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);ns_data = socket(AF_INET, SOCK_STREAM, 0);

return 0;

int scdfun(SOCKET newsocket){

int i=3,k=0;char name[20],name2[20];int j,count=0;//path overfollow int pathlen;

printf(”Equivalent to cd n“);while(1){

//RECEIVE

bytes = recv(newsocket, &rbuffer[i], 1, 0);printf(”rbuffer[i]=%cn“,rbuffer[i]);printf(”bytes=%dn“,bytes);if((bytes < 0)||(bytes == 0))break;name[k]=rbuffer[i];

}

name2[k]=rbuffer[i];if(rbuffer[i] == ''){

}

if(rbuffer[i]!= 'r'){

} i++;k++;

name[k] = '';name2[k] = '';break;

}//end while if(path[0]!='')strcat(path,”“);strcat(path,name);

if(strncmp(name2,”..“,2)==0)

{

}

pathlen=strlen(path);for(j=pathlen-1;j>=0;j--){

}

printf(”%d=n“,j);path[j+1]='';

if(path[j]==''){

}

if(count==2){

}

//path[j]='';break;

path[j]='';count++;

printf(”path=%s“,path);

sy_error=0;

return 0;int smdfun(SOCKET newsocket){

//CLOSE the ns_data SOCKET or data port SOCKET if(port_connect==0){

}

sy_error=0;//closesocket(ns_data);

sprintf(sbuffer,”226 Close the data socket...rn“);bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);//ns_data = socket(AF_INET, SOCK_STREAM, 0);char name[20];int i=3,k=0;

printf(”Equivalent to md n“);while(1)// while loop 3 {

//RECEIVE

bytes = recv(newsocket, &rbuffer[i], 1, 0);printf(”rbuffer[i]=%cn“,rbuffer[i]);printf(”bytes=%dn“,bytes);if((bytes < 0)||(bytes == 0))break;name[k]=rbuffer[i];if(rbuffer[i] == '')

}

order[0]='';strcat(order,”md “);strcat(order,path);if(strlen(path)>0)strcat(order,”“);strcat(order,name);system(order);{

}

if(rbuffer[i]!= 'r'){

} i++;

k++;/*ignore CR's*/ /*end on LF*/ name[k] = '';break;

}

return 0;

int sdelfun(SOCKET newsocket){

}

if(rbuffer[i]!= 'r'){

} i++;k++;break;

printf(”Equivalent to del n“);while(1){

//RECEIVE int i=3,k=0;char name[20];

bytes = recv(newsocket, &rbuffer[i], 1, 0);printf(”rbuffer[i]=%cn“,rbuffer[i]);printf(”bytes=%dn“,bytes);if((bytes < 0)||(bytes == 0))break;name[k]=rbuffer[i];

if(rbuffer[i] == ''){

name[k] = '';

}//end while order[0]='';strcat(order,”rd “);

strcat(order,path);if(path[0]!='')strcat(path,”“);strcat(order,name);system(order);sprintf(sbuffer,”del ok...rn“);

}

void HandleError(char *func){

char info[65]= {0};

_snprintf(info, 64, ”%s: %dn“, func, WSAGetLastError());printf(info);}

bytes = send(newsocket, sbuffer, strlen(sbuffer), 0);if(bytes == SOCKET_ERROR)

{

}

HandleError(”recv()");sy_error=1;return 1;

sy_error=0;

return 0;

第二篇:C语言设计

C语言课程设计任务书1 题目:学院教学信息管理系统

功能:学院教学信息管理系统,每一条记录包括一位教师的职工号、姓名、职称、性别、3门课程,教学效果综合评分。系统要求实现以下功能:

1、输入:输入每一位教师记录,将其信息写入文件中。

2、显示:显示每位教师记录。示。示。

3、排序:按职工号或教学效果综合评分进行排序,并显

4、查找:完成按姓名或课程查找教师的相关记录,并显分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位教师的相关(教学)信息写入文件中并能显示于屏幕上。

3、完成排序(按职工号、姓名、职称等)、查找等功能。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现教师信息的数据结构设计;

3、系统的各个功能模块要求用函数实现;

4、界面友好(良好的人机交互)。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书2 题目:酒店房间登记与计费管理系统

功能:

1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。

2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。

3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。

3、进一步要求:完成计费和费用查询功能。要求:

1、用C语言实现系统;

2、系统的各个功能模块要求用函数实现;

3、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书3 题目:学生成绩管理系统

功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,3门课程成绩。系统

要求实现以下功能:

1、信息录入:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等);

2、信息查询:输入学号,查询学生各门课程的成绩,并显示。

3、排序:按各门课程的成绩平均分进行排序,并显示。

4、信息删除与修改——输入学号,删除该学生的成绩信息。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位学生的信息写入文件中并能显示于屏幕上。

3、完成上述信息查询(学生学号、姓名等)、排序、信息删除与修改功能。

要求:

1、用C语言实现程序设计;

2、利用结构体数组实现学生信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书4 题目:职工档案管理系统设计 功能:职工档案管理系统设计,每个职工是一条记录,包括编号,姓名,性别,出生年月,所在

部门,职称,工资级别、电话等。系统可实现以下功能: 件中。

1、输入功能:输入每一位职工记录,将其信息存入文

2、显示功能:完成全部职工记录的显示。

3、查找功能:完成按编号或姓名查找职工的相关记录,并显示。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位职工的信息写入文件中并能显示于屏幕上。

3、完成上述查找(编号,姓名,性别等)、修改等功能。

4、进一步要求,修改记录设置密码操作。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现职工信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书5 题目:学生管理系统设计

功能:学生管理系统设计,每个学生是一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。系统要求实现以下功能:

1、输入功能:录入学生信息(包括学生学号、姓名、性别、出生年月、专业等);

2、显示功能:完成学生记录的显示。

3、查找功能:完成按学号或姓名查找学生的相关记录,并显示。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位学生的信息写入文件中(人数利用宏定义设定)并能显示于屏幕上。

3、完成上述显示、查找(姓名,性别等)、修改等功能。

4、进一步要求,修改记录设置密码操作。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现学生信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书6

题目:银行存取款管理设计

功能:能够输入和查询客户存款取款记录。在客户文件中,每个客户是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额;在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种。本系统能够输入客户存款或取款记录;根据客户姓名查询存款和取款记录。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,输入客户的必要信息,能对文件进行显示、输入、修订、删除等。

3、进一步要求:完成客户姓名查询存款和取款记录,并能得到每次帐户总金额。要求:

1、用C语言实现系统;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书7 题目:院职工工资管理系统设计

功能:院职工工资管理系统应包含职工的全部信息。每个职工是一条记录,包括姓名、性别、出生年月、年龄、婚姻状况、家庭住址、职称、工资级别情况等。本系统重点进行工资管理,系统登陆后可计算职工工资总额和平均工资,可按工资进行排序,并能够找出工资级别相同的职工名单。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,将每位职工的信息写入文件中并能显示于屏幕上。

3、计算职工工资总额和平均工资,可按工资进行排序,并能够找出工资级别相同的职工名单。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现职工信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书8 题目:通讯录管理系统

功能:录入联系人信息(包括姓名、电话号码、地址、备注等);通讯录管理系统要求实现以下功能:

1、输入每一位联系人记录,将其信息存入文件中。

2、查询所有联系人的信息,并按可选的自定义规则进行排序;

3、记录修改,将修改的记录信息保存于文件中。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上。

3、完成上述查询(姓名、电话号码等)、信息删除与修改功能。

4、进一步要求,修改记录设置密码操作。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现联系人信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书9

题目:计算机辅助教学(CAI)软件开发:教小学生学算术。

功能:可做个位数,十位数的加,减,乘和除,减法不能得负数,除法要除尽,屏幕上随机出现两个数,提示小学生给出答案,答错了要提示重新输入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从个位进到十位。同样,也可降级。(rand(),#include)分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成基本要求:能答对个位数的加法和减法,并有统计功能,即一次答对的成功率为 90%上后可晋级,做十位数的加减;

3、进一步要求:完成乘法和除法的学习,也有晋级功能。要求:

1、用C语言实现程序设计;

2、系统的各个功能模块要求用函数的形式实现;

3、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书10

题目:学生考勤系统设计

功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上

3、完成上述添加(出勤情况)、查找(学号,姓名,性别等)、修改等功能。

4、进一步要求:自动给出每个学生的考勤分数 要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书11 题目:学生选修课程系统设计

功能:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。试设计一选修课程系统。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上

3、完成上述添加、查找(课程编号、课程名称、课程性质等)、修改等功能。

4、进一步要求:学生选修课程(可选项)要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书12

题目:商品订购系统设计。

功能:屏幕上出现一个界面,让顾客或输入商品名称,或商品型号,或选择列表进而输入商品编号都可以,如查到所选商品,则列出商品编号、商品名称、商品型号、商品价格、商品产地、库存数量和已订购数量;然后给出选购流程:所选商品编号—列出对应商品的信息—要求顾客输入邮寄地址信息—确认订购,是否继续选购其它商品,列出所有选订商品,再次确认订购。建立两个文件,分别存放商品信息与订购信息。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个小系统,包括10种产品能供顾客选择。

3、进一步要求:完成全部功能的系统。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书13 题目:设备管理系统设计

功能:设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若干台相同设备可作为1条记录),包括设备号、设备名称、领用人、所属部门、数量、购买时间、价格等。能够显示和统计各种设备的信息。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上

3、能对文件进行补充、修订、删除,能统计所有设备的总价值。

4、进一步要求:完成设备按种类、按所属部门进行统计。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书14

题目:学生计算机机房管理系统设计 功能:该计算机房共有100台计算机,分为20排,每排50台。管理系统应包含每台计算机一周内的使用全部信息,包括计算机序号、配置、位置、状态、使用情况的历史记录(包括使用者姓名、学号、使用时间段)等。本系统可以模拟学生上机和离开的登记过程,查询机房计算机的使用情况。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、建立一个文件,将相关的信息写入文件中并能显示于屏幕上;

3、能实现学生上机的登记过程模拟;

4、进一步要求:查询机房计算机的使用情况。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书15 题目:商店销售管理系统。

功能:屏幕上出现一个界面,让售货员输入商品编号或者商品名称,可以进货,进货后商品库存同时增加。顾客买走商品后,售货员输入商品编号或者商品名称,可以生成销售清单,统计本次销售总的价钱,同时库存数量相应减少。完成前面的基本功能后,还可以完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、建立一个文件,将相关的信息写入文件中并能显示于屏幕上;

3、能按商品编号进货和销售;

4、进一步要求:完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。

要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书16

题目:计算机辅助教学(CAI)软件开发:教小学生学英语。

功能:屏幕上随机出现一个汉语单词,英语单词,汉语词组,英语词组或一短句提示小学生给出相应答案,答错了要提示要求重新输入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从单词到词组,从词组到短句。同样,也可降级。起步阶段可各选30个,软件可扩充,即扩大词库的容量。

(rand(),#include 结构体、文件或数组)分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:能教单词,并有统计功能,即一次答对的成功率为90%以上后可晋级;

3、进一步要求:完成词组和短语的问答,也有晋级功能。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

释。

4、界面友好(良好的人机交互),程序加必要的注课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书17 题目:飞机订票系统设计

功能:本飞机共有80个坐位,分20排,每排4个位子。编号为A,B,C,D。如10D表示10排D座。A和D靠窗,19到20排为吸烟区。本系统可让乘客自己选座号和区域,直到乘客满意为止,无法满足的话,只能改乘另一个航班。定上票的乘客需给出姓名和身份证号,最后要打印出乘客清单。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个小系统,包括5排座位,两个区域,能供乘客选择;

3、进一步要求:完成全部功能的系统。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

释。

4、界面友好(良好的人机交互),程序加必要的注课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

C语言课程设计任务书18

题目:高速公路计费系统设计

功能:在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。5元,中型车每公里0。4元,小型车每公里0。3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总数。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表;

3、进一步要求:完成任意多个入口的通用系统。要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

释。

4、界面友好(良好的人机交互),程序加必要的注课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

# include # include # define LEN sizeof(struct student)struct student {int num;char name[20];char sex[2];int score[3];double aver;struct student*next;}stu[10];

int main(){struct student *p,*pt,*head;int i,j,sum,average,length,inum,flag=1;int find=0;while(flag==1){printf(“input length of list(<10):”);flag=0;}

for(i=0;inext=p;pt=p;printf(“NO.:”);scanf(“%s”,p->num);printf(“name:”);scanf(“%S”,p->name);printf(“sex:”);scanf(“%s”,p->sex);for(j=0;j<3;j++){printf(“score %d:”,j+1);scanf(“%d”,p->score);} } p->next=NULL;p=head;printf(“nNO.name sex scoren”);while(p!=NULL){printf(“%4s%8s%6s%9sn”,p->num,p->name,p->sex,p->score);p=p->next;}

for(i=0;i<10;i++){sum=0;for(j=0;j<3;j++)sum+=p->score[j];p->aver=sum/3;average+=p->aver;}

printf(“input num:”);scanf(“%d”,&inum);pt=head;p=pt;if(pt->num==inum){p=pt->next;head=pt=p;find=1;} else pt=pt->next;while(pt!=NULL){if(pt->num==inum){p->next=pt->next;find=1;} else p=pt;pt=pt->next;} if(!find)printf(“no find %d.”,inum);p=head;printf(“nNO.name sex scoren”);while(p!=NULL){printf(“%4s%8s%6s%9sn”,p->num,p->name,p->sex,p->score);p=p->next;} return 0;}

第三篇:c语言迷宫问题代码实现

C语言迷宫问题代码如下:

#include

#include

#define LEN sizeof(SEAT)

#define MAXSIZE 100

#define LENGTH 30

typedef struct

{

int x;//横坐标

int y;//纵坐标

int di;//表示方向,0-3分别表示东南西北。

}SEAT;

struct StackList

{

SEAT stack[MAXSIZE];

int top;

}*Stack;

int EmptyStack(StackList*Stack)//判断是否为空栈

{

if(Stack->top==0)

return 0;

else

return 1;

}

int Move[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//分别表示向东、西、南、北需要加上的坐标

int Mase[LENGTH][LENGTH]={0};//初始化为0

int length,width;

void InitMase()//在迷宫的外围添加一层“墙壁”(赋值为1),使得迷宫的任意一点都有四个方向

{

int i,j;

for(i=0;i

{

for(j=0;j

Mase[i][j]=1;

}

for(i=0;i

{

for(j=0;j

Mase[j][i]=1;

}

}

void InitStack(StackList*Stack)//初始化

{

Stack->top=0;

return;

}

int PushStack(StackList*Stack,SEAT CurSeat)//进栈

{

if(Stack->top==MAXSIZE-1)

return false;

else

{

Stack->stack[Stack->top].x=CurSeat.x;

Stack->stack[Stack->top].y=CurSeat.y;

Stack->stack[Stack->top].di=CurSeat.di;

Stack->top++;

return true;

}

}

int PopStack(StackList*Stack)//出栈

{

if(Stack->top==0)

return false;

else

{

Stack->top--;

return true;

}

}

int Pass(SEAT p)//判断当前是否可行

{

if(Mase[p.x][p.y]==0)

{

return true;

}

else

return false;

}

SEAT NextSeat(SEAT CurSeat)//查找下一个点,并返回

{

SEAT temp;

temp.x=CurSeat.x+Move[CurSeat.di][0];

temp.y=CurSeat.y+Move[CurSeat.di][1];

return temp;

}

void Mark(SEAT p)//标记已经走过的点,避免重复

{

Mase[p.x][p.y]=-1;

}

int PathWay(SEAT start,SEAT end)//找路线

{

Stack=(struct StackList*)malloc(sizeof(struct StackList));

InitStack(Stack);

SEAT CurSeat;

CurSeat.x=start.x+1;//由于多加了一层墙壁,因此坐标的值要加1

CurSeat.y=start.y+1;//

CurSeat.di=start.di;//

do

{

if(Pass(CurSeat))

{

PushStack(Stack,CurSeat);

Mark(CurSeat);

if(CurSeat.x==end.x+1&&CurSeat.y==end.y+1)//如果找到出口,返回{

return true;

}

else

{

int find=0;

while(CurSeat.di<3&&find==0)//找下一个结点的方向

{

CurSeat.di++;

SEAT temp;

temp=NextSeat(CurSeat);

if(Mase[temp.x][temp.y]==0)

{

temp.di=-1;

CurSeat=temp;

find =1;

}

}

}

}

else

{

if(EmptyStack(Stack))//当前的点不能走,出栈

PopStack(Stack);

if(EmptyStack(Stack))//当前的点变为前一个点

{

CurSeat=Stack->stack[Stack->top-1];

}

while(CurSeat.di==3&&EmptyStack(Stack))////当前的点找不到下一个点,出栈

{

PopStack(Stack);

CurSeat=Stack->stack[Stack->top-1];//当前的点变为前一个点}

if(EmptyStack(Stack))

{

int find=0;

while(CurSeat.di<3&&find==0)////找下一个结点的方向

{

CurSeat.di++;

SEAT temp;

temp=NextSeat(CurSeat);

if(Mase[temp.x][temp.y]==0)

{

temp.di=-1;

CurSeat=temp;

find =1;

}

}

}

}

}while(EmptyStack(Stack));

return false;

}

void PrintStack(StackList*Stack)//输出路线

{

if(Stack->top==0)

printf(“There is no route can be out of the mazen”);

else

{

int i;

for(i=0;itop;i++)

{

if(i!=0)

printf(“->(%d,%d)”,Stack->stack[i].x-1,Stack->stack[i].y-1);

else

printf(“(%d,%d)”,Stack->stack[i].x-1,Stack->stack[i].y-1);

}

}

}

void PrintMase()//输出迷宫

{

int i,j;

for(i=1;i

{

for(j=1;j

{

if(j!=1)

printf(“ %d”,Mase[i][j]);

else

printf(“%d”,Mase[i][j]);

}

printf(“n”);

}

}

int main()

{

int n;

SEAT start,end;

printf(“Please enter the maze of the length and width:n”);

scanf(“%d%d”,&length,&width);

printf(“Please enter the number of the maze wall unit(0

printf(“Please enter the labyrinth of the coordinates of the wall unit(0<=row,column):n”);while(--n>=0)

{

int x,y;

scanf(“%d%d”,&x,&y);

Mase[x+1][y+1]=1;

}

InitMase();

PrintMase();

printf(“Please enter the coordinates entrance(0<=x<%d,0<=y<%d):n”,length,width);

scanf(“%d%d”,&start.x,&start.y);

start.di=-1;

printf(“Please enter the coordinates exports(0<=x<%d,0<=y<%d):n”,length,width);

scanf(“%d%d”,&end.x,&end.y);

end.di=0;

if(PathWay(start,end))

PrintStack(Stack);

else

printf(“There is no route can be out of the mazen”);return 0;

} of the of the maze maze

第四篇:《C语言》教学设计

《C语言》教学设计

一、教学设计

本课程的教学设计是根据软件人才的培养目标,突出创新型、应用型人才的培养方案而设计的,实行“基础知识+基本技能+项目实践+技术延伸”的教学理念。

基础知识是指涵盖该课程的主要知识点;基本技能是指通过实验案例来训练学生的基本项目开发技能,巩固提高学生对基本知识点的理解;项目实践是指通过项目形式,训练学生的综合能力;技术延伸则是指涵盖相关领域的最新技术发展,属于不断更新的动态模块。

根据本课程的教学设计我们精选C程序设计课程的教学内容,精心设计教学案例和课堂讨论题目,实验类型和实验内容,通过特定的教学方法来予以实现。

二、教学方法

C程序设计课程主要采取案例教学法和实践教学法。本课程主讲教师利用业余时间深入大连高新园区、软件园区和软件行业的大中小型企业,搜集、整理了大量的教学案例,有效地运用于课堂教学。通过案例教学,增强了C程序设计教学的实务性和应用性,提高了学生运用C程序设计解决实际问题的能力。在多年的教学实践中,总结了多种C程序设计的教学方法和软件人才培养模式,并在计算机教育和电脑知识与技术上发表。具体方法如下:

方法之一:实行“1+3案例教学”的教学方法

“1+3案例教学”的教学方法是指针对每一个难懂的问题或概念,都会找三个案例程序。一个是非常易于理解概念的例子;一个是引起学生兴趣的例子;一个是现实当中非常实用的例子。采用这种方法可以使学生容易理解难懂的计算机程序,又能引起学生的学习兴趣,还能让学生了解企业的实际应用。

方法之二:突出讲授C语言程序设计的普遍性和特殊性

程序设计课程可以分不同层次,C语言只是其中的一种,在这门课的讲授中,要突出程序设计方法的讲解,让学生分清哪些是C语言所特有的,哪些是通用程序设计语言所共有的,这样就可避免讲了一种程序设计语言,再讲一种,既不深入也不透彻。当日后学生根据专业的使用情况及学生的具体状况来选择某种高级语言作为实际操作语言时,学生就具有了学习程序设计语言的能力、扩展的能力,而不是就学C语言而学C语言。但不同的专业对该课程的要求可以有所差异,但不论哪种情况,都不能停留在某种高级语言的介绍,而是要突出讲述程序设计方法,正确地选择算法与数据结构,进行正规的程序设计训练,这样才可深入、透彻的了解程序设计语言的真谛。

方法之三:强调“做中学”的教学模式

“做中学”的教学模式是指在实际的教学过程当中,不是按照从基础理论到专业理论,再到实习的路径来展开教学的,而是把教学顺序完全颠倒过来,先从“做”开始,在做的过程中,以任务驱动方式,通过实例讲授程序设计的基本概念和基本方法,重点放在思路上。学生如遇到问题,再以此问题为基点去学习专业理论。这样做不仅有利于学生实践能力的培养,同时也有助于学生自主学习能力和兴趣的提高。

方法之四:采取粗讲和细讲的方法,缓解课程内容多和学时相对少的矛盾

高校计算机教学的特点是:知识更新快,内容范围广,应用要求高。由此带来的问题之一就是课时的相对减少。在实际教学工作中,我体会到,要缓解课程内容多和学时相对少的矛盾,就是要将“粗讲”和“细讲”结合起来,例如,在《C语言程序设计》课的教学中,前面的几章主要是常量、变量、数据类型、运算符和表达式等一系列规则性、语言的语法要求很强且很琐碎的内容,如果一开始就按部就班地一条条给学生讲解这些规则,常常使学生产生“只见树木,不见森林”、茫然不知所措的感觉。所以应该先通过一个简单的C程序实例“细讲”为什么要制定这些规则,使学生清楚这些规则在程序中的用途,然后对于这些规则“是什么”就可有代表性的“粗讲”,甚至有些部分可以不讲,让学生边用边学。

方法之五:突出重点,鼓励和引导探索式学习

《C语言程序设计》这门课授课的原则是要让学生先抓重点而后才是细节,重点放在思路、算法、编程构思和程序实现上。语句只是表达工具,讲一些最主要的,细枝末节的东西根本不讲,让学生自学,动手上机练,计算机是实践性极强的学科,所学的内容和要实践的东西是一个整体,所以学生可以自己动手来学,书上看不懂的在机器上动手试试,往往就弄懂了,因此很多东西完全是可以自学的。教师应引导学生在解题编程的实践中探索其中带规律性的认识,将感性认识升华到理性高度,只有这样,学生才能举一反三。在这一过程中教师起着很大的引导作用,要求学生在课堂上积极思考,尽量当堂学懂,突出上机训练,在编写程序的过程中,使学生提高利用计算机这个智力工具来分析问题和解决问题的能力。

方法之六:选择合适的数据结构,设计满足限定条件的最优算法在C语言程序设计中,用设计程序解决问题时除了认真分析问题之外,最重要的是选择合适的数据结构,并设计满足限制条件的算法或选择最优的算法。因此,要求学生要熟练掌握各种常见的数据结构,深刻理解某些经典算法的原理和时间、空间复杂度,掌握算法设计的一般步骤。

方法之七:养成良好的编程习惯

让学生养成良好的编程习惯是十分重要的。我们在与国内一些软件公司的技术人员座谈时了解到,中国软件之所以上不去的原因之一就有“习惯问题”。印度十个人编程,会编出一样的东西,而我们十个人编程会有十种风格。因为我们忽略了一个重要问题是“顾客”的感受,因为程序的编写是给别人看的,而不是只给我们自己看的,这样才更符合软件规范的要求。鉴于此,在课堂上我们非常注意让学生养成良好的编程习惯,如:强调程序的可读性、规范性;变量必须加注释;程序构思要有说明;学会如何调试程序;尽量使程序优化;还要求对程序的运行结果做正确与否的判断与分析等。

方法之八:强化实践教学模式

对程序设计教学模式进行改革,以强调动手实践、上机编程为切入点;以任务驱动方式,通过实例讲授程序设计的基本概念和基本方法。重点放在思路上,即:在C/C++语言的环境下,针对问题进行分析,构建数学模型,提出算法并编程实现,同时要求养成良好的编程习惯,在此过程中培养学生的思维能力和动手能力,鼓励学生探索、研究和创新。只有让学生动手,才会有成就感,进而对本课程产生兴趣,学起来效果才比较好。因此,我们的基本思想应该是在理论指导下,让学生动手、动脑更多地上机实践。因为学生只有在编写大量程序之后,才能获得真知灼见,感到运用自如。注重学生动手能力的培养是这门课和以往课程最大的不同之处。

三、教学手段

为了实现本课程确立的教学目标,落实教学内容,改革教学方法,提高教学效率,我们利用课程组教师的优势,应用现代教育技术,长期地进行了教学手段的改革和信息化建设,并取得了很好的成果。

(一)多媒体教学

《C程序设计》课程在我校是最先采用了现代信息技术、应用多媒体技术进行课堂教学的课程之一。本课程组的全体教师早已全部掌握了应用多媒体信息技术进行课堂教学,制作了多媒体课件和多媒体教学案例。通过多媒体教学,突破了传统教学手段的时空限制,节省了大量宝贵时间,增加了课堂教学的信息量,使课堂教学形象化、生动化。随着现代信息技术的不断发展,这些多媒体课件在实际应用中也在不断的修改和完善,其质量不断提高,教学效果也非常好,受到了学生的普遍好评。

(二)网络教学

本课程组较早就开始着手进行网络教学系统的开发建设,目前网上教学资源已经十分丰富,极大地方便了教师与学生之间的交流。在网络平台上,学生可以看到与C程序设计课程相关的所有资料。教师给学生布置作业,学生可以在网上直接作答,教师在网上直接批阅。学生在学习中遇到问题,可以在网上直接向教师请教和讨论。通过课内教学与课外研讨相结合的方式,使教与学有机地融合在一起,有利于学生充分消化和理解教学内容。

(三)实验教学

我们在开展案例教学的同时,积极开展实验教学。通过实验教学,指导学生自己动手完成各项业务操作,使学生验证、理解、巩固了所学的计算机知识;指导学生运用所学的知识,分析和解决实际问题,使知识转化为能力。在验证实验和应用实验的基础上,指导学生进行开拓型训练,使学生拓展了思维,增强了创新能力。

在学时安排上,理论教学与上机实践的学时比例基本为1:1。本课程设置“验证型实验教学+设计型实验+综合型实验教学”的实验教学体系,构建递阶型实践教学模式,验证型实验教学是与理论课同时进行的上机实习;设计型实验是与理论课同时进行的学生自行设计的运用理论学习内容进行实际开发的实验;综合型实验教学是理论课讲授完毕后的集中实训,是综合能力的训练。对程序设计教学模式进行改革,强化实践教学,以强调动手实践、上机编程为切入点,是本门课程的特色。

四、教改举措

(一)精选教学内容,改革课程设计,实行“基础知识+基本技能+项目实践+技术延伸”的教学理念

根据软件人才的培养目标,我们精选C程序设计课程的教学内容,精心设计教学案例和课堂讨论题目,突出创新型、应用型人才的培养。

基础知识涵盖该课程的主要知识点;基本技能则通过实验案例来训练学生的基本项目开发技能,巩固提高学生对基本知识点的理解;项目实践通过项目形式,训练学生的综合能力;技术延伸则涵盖相关领域的最新技术发展,属于不断更新的动态模块。

(二)改革教学方法,实行“1+3案例教学”的教学方法

摒弃了过去传统的灌输式教学方式,采用灵活案例式教学方法和实践教学方法。尤其是采用实用、有效的“1+3案例教学”的教学方法。即针对每一个难懂的问题或概念,都会找三个案例程序。一个是非常易于理解概念的例子;一个是引起学生兴趣的例子;一个是现实当中非常实用的例子。采用这种方法可以使学生容易理解难懂的计算机程序,又能引起学生的学习兴趣,还能让学生了解企业的实际应用,提高了学生的实践能力。

(三)改革作业形式

布置的作业题侧重于应用性,训练学生应用能力。在作业的布置和批改上,均通过网上进行。

(四)改革实验形式

为强调“以学生为中心”的实验教学模式,自主开发了“C 程序设计网络化实验教学平台”。

(五)改革考试形式

为辅助教师加强对学生实践环节的考核,自主开发了“C 程序设计网络化考试软件”,以保证实验教学的质量。

(六)改革教学模式,强调“做中学”

“做中学”的教学模式是指在实际的教学过程当中,不是按照从基础理论到专业理论,再到实习的路径来展开教学的,而是把教学顺序完全颠倒过来,先从“做”开始,在做的过程中,以任务驱动方式,通过实例讲授程序设计的基本概念和基本方法,重点放在思路上。学生如遇到问题,再以此问题为基点去学习专业理论。这样做不仅有利于学生实践能力的培养,同时也有助于学生自主学习能力和兴趣的提高。

第五篇:C语言设计心得

C语言设计心得

程序设计,大学之前,对我们来说,一个很陌生、很神秘的东西!以前接触电脑,觉得电脑玩游戏很好玩,可是从来没有想过,设计一个游戏是多么困难啊,当我对C语言有一定了解的时候,才开始佩服那些设计游戏的人,一个小小的C语言程序,可以让很多大一点学生痛苦难当!可是他们却可以完成一个游戏的设计,真的很不容易!经过C语言的学习和这次实习设计程序,让我对C语言有了一个更深刻的了解和认识!

以前长辈给我们说,学习知识才是你们以后好的生活的保证,我总是不以为然,觉得没有知识,也是可以很好的生活,也就边玩边学,可是通过这次C语言的程序设计,我认识到,没有扎实的知识做基础,很难完成很多工作,想想也对啊,现在是一个科技高度发达的社会,没有科学文化知识做基础,我们如果能很好的完成一项工作呢?作为当代大学生,努力学习文化知识,才是我们现在的任务,只有让自己更有实力,以后才会对社会有贡献!

我是一个自我中心的人,从前总认为,不管什么事情,只要我一个人就可以做好,做完,可是通过这次的程序设计,让我认识到自己的不足,一个大的工程,一个人是没有办法独立完成的,虽然这个程序不是很大,但是我还是遇到了很多的困难,有很多我不会的地方,开始的时候我觉得一个人找资料也是可以解决的,可是后来才发现,那样我的效率很低,很多问题我不懂,我周围有很多人懂,只要我问一下,很快就可以解决,也让我改变了想法,应该和周围的人合作,努力的让自己更有实力,办事效率也会提高!

这次我主要设计的是一个关于学生成绩统计的程序,这个程序的特点就是简便、快捷!让你可以很快的进行添加学生成绩,一个一目了然的主菜单,让你可以看好的找到你要操作的项目!进而可以加快做事效率,添加、删除,都可以很好的做到,也可以让你查看所有的学生成绩!

这个程序唯一的缺点就是不能分科输入学生成绩,只能输入一项,也就是不能让你了解学生的各门成绩,只能了解到一个总分!是我想的太复杂了,如果修改这个缺点,可能要动很多的地方,还没有想到一个很好的办法改进这个!

下载文件传输协议的简单设计与实现(c语言.word格式文档
下载文件传输协议的简单设计与实现(c语言..doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言与语言互相调用

    浅谈C程序中调用汇编模块的方法 C语言是目前非常流行的一种编程语言,除具有高级语言使用方便灵活、数据处理能力强、 编程简单等优点外,还可实现汇编语言的大部分功能,如可直接......

    C语言与语言混合编程DSP设计(推荐)

    实验2:C与汇编语言混合编程 一.实验目的 掌握一种典型的C语言与汇编语言的混合编程方法。 二.实验设备 PC兼容机一台,操作系统为Windows2000,安装Code Composer Studio 4.2软件。......

    用c语言实现单纯形法的编程

    用c语言实现单纯形法的编程 #include "stdio.h" #include "math.h" #include int M,N; float c[100],a[100][100],b[100],CZ[100],Dn[100],th[100],x[100]; int Fn[100]; i......

    电力系统潮流计算的C语言实现

    ////////////////////////////////////////////////////////////////////// // PQ分解法潮流// //文件输入格式:节点总数n(包括联络节点),支路数zls //节点数(发电机和负荷)......

    c语言实现机票管理系统源代码

    /*1、用户和管理员及航班信息请以英文字母或数字输入*/ /*2、管理员账户为:boss,密码为:123。保存在txt文件中,需要修改请于程序中修改*/ /*3、部分文件读写为二进制读写,所以打......

    c语言

    学C语言有感 姓 名: 李文丽 学 号:034108048 班 级:083411 指导老师:张印 2009年12月 学C语言有感第1页 学C语言有感 摘要:C语言既有高级语言的特点,又具有汇编语言的特点;既能用......

    如何学C语言

    如何学C语言(一)“项目驱动”式教学目前最著名、最有影响、应用最广泛的windows、linux和UNIX三个操作系统都是用C语言编写的。0S是计算机系统(由软硬件两个子系统构成)的核心......

    C语言

    1. 算法(Algorithm)是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决 问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 2. 算法具有......