多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx

上传人:b****5 文档编号:17015816 上传时间:2022-11-27 格式:DOCX 页数:35 大小:227.87KB
下载 相关 举报
多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx_第1页
第1页 / 共35页
多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx_第2页
第2页 / 共35页
多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx_第3页
第3页 / 共35页
多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx_第4页
第4页 / 共35页
多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx

《多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。

多用户网络版学生学藉管理系统说明书Word文档下载推荐.docx

2、概要设计8

2.1设计图8

2.2数据结构10

2.3函数设计10

3、详细设计11

4、程序清单14

服务器主要功能函数14

四、程序调试与体会26

1、程序调试26

2、体会27

五、运行结果28

六、参考文献33

摘要

嵌入式Linux是一种嵌入到硬件设备的操作系统,也是一种功能强大的应用程序开发平台。

支持C语言开发,既有C语言自带的库函数,也有嵌入式Linux自己的系统C库,在目前的嵌入式软件开发行业有着举足轻重的作用。

在嵌入式Linux应用程序设计中主要有以下特点:

网络、多用户、I/O、socket、进程控制、进程通信和线程等。

学好嵌入式Linux应用程序设计绝不是纯技术问题,需要综合考虑多方面的因素,加深对网络编程和底层通信的理解。

因此必须强调多上机实践。

本课程设计通过C实现客户端和服务器之间的通信,客户端发出请求,服务器实现增、删、改、查等操作,然后返回相关信息给客户端。

本课程设计通过socket实现客户端和服务器之间的通信。

服务器生产自己的socket流,把自己的端口绑定出去,然后监听有无客服端的链接。

客服端也生产自己的socket流,然后链接服务器,用系统定义好的structmessage结构体传输消息,通过send_msg()和rev_msg()函数接发消息。

如客户端发送注册消息给服务器,在客户端完成账号和密码的输入,服务器接收到消息后进行验证,验证无误后写入文件并发送注册成功信息给客户端。

在设计过程中,我们用心的从一个开发项目的程序员的角度出发并解决了自己在程序中的多处不足和缺陷。

例如在录入学生学籍信息时,设计了关于数据有效性的操作等。

在系统的设计中我们加强了界面的美观设计,使程序在简洁的基础上可读更强,更人性化!

最后我们在设计过程中也尝试了创新的方法,也收到了很好的效果。

总之,通过此课程设计,我们都感觉到自己在整体上有了一个很大的提高,知识更加系统化,理论化,我们会继续努力课不断地专研

关键字:

网络、多用户、I/O、socket、进程控制、进程通信、线程。

Abstract

EmbeddedLinuxisakindofembeddedhardwareequipmenttotheoperatingsystem,isalsoapowerfulapplicationdevelopmentplatform.SupportClanguagedevelopment,bothClanguageownlibraryfunction,alsohaveembeddedLinuxsystemsClibrary,inthepresentembeddedsoftwaredevelopmentindustryhasapivotalrole.InembeddedLinuxapplicationsdesignbasicallyhasthefollowingcharacteristics:

network,manyusers,I/O,socket,processcontrol,process,communicationandthread,etc.LearnembeddedLinuxapplicationdesignisnotpuretechnicalproblems,takesintoaccountmanyfactors,deepenourunderstandingofthenetworkprogrammingandthebottomofthecommunicationunderstanding.Somustemphasizemorepractice.ThecourseisdesignedtoachievebyCclientandserverofcommunicationbetweenthe,theclientisrequested,increase,delete,serverpractice,checkthefunction,andthenreturnstotheinformationrelatedtotheclient.

Thiscoursedesignthroughthesocketrealizetheclientandtheserverofthecommunicationbetween.Serversocketoftheirproductionflow,oneselfoftheportbindinggoout,andthenlisteningforthecustomerservicelinks.Theproductionoftheircustomerserviceandsocketflow,andthenlinkserver,withgoodstructmessagesystemdefinedstructurestransmissionnews,throughthesend_msg()()functionandrev_msgreceivernews.Ifclientsendsmessagestotheserverregisteredattheclientcompleteaccountandpasswordinput,theserverreceivesnewsverification,verificationandwrittentothefileandsendinformationtotheclientregisteredsuccess.

Inthedesignprocess,wehavetheintentionofadevelopmentprojectfromthepointofviewoftheprogrammersandsolvedtheirintheprogramtheshortageanddefects.Forexampleinthestudentstatusinformationinputstudents,abouttheeffectivenessofthedesigndatamanipulation,etc.Inthedesignofthesystem,westrengthenedtheinterfaceofthebeautifuldesign,makestheprograminconcisebasiscanberead,stronger,morehuman!

Finally,weinthedesignprocessandtryinnovativeways,alsohasreceivedthegoodeffect.Allinall,throughthiscoursedesign,weallfeelonthewholehaveagreatlyincreased,knowledgemoresystematicandtheoretical,wewillcontinuetoworkhardlessonsconstantlygrindsonly

Keyword:

network,manyusers,I/O,socket,processcontrol,processcommunication,thread.

《嵌入式linux应用程序设计》课程设计

-----多用户网络版学生学藉管理系统

一、引言

随着人们生活水平的提高,计算机发展异常迅速。

如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。

通过计算机对各类问题求解已经成为一种高效、快捷的方式。

嵌入式Linux应用程序设计是一门实践性很强的课程,光靠听课和看书是学不好的。

衡量学习的好坏的标准不是懂不懂。

因此必须强调多编程,多上机实践。

所以开设了这次课程设计,目的在于使学生达到熟练掌握嵌入式LinuxC编程基本知识的技能,掌握其应用程序设计的基本思路和方法,能够利用所学的基本知识和技能,做一个简单的多用户网络版的管理系统。

这对于进一步巩固嵌入式LinuxC编程知识是一个很好的机会。

本课程设计采用嵌入式LinuxC程序设计语言,通过嵌入式LinuxC实现客户端和服务器之间的通信,客户端发出请求,服务器实现增、删、改、查等操作,然后返回相关信息给客户端。

二、设计目的与任务

1、本课程设计的目的

在嵌入式linux操作系统环境下,使用linuxC编程实现了一个功能相对简单的多用户的字符界面的网络版的学生学藉管理系统。

通过对该简单系统的设计,能够熟悉掌握嵌入式应用程序设计技巧,加深对I/O、socket、进程控制、进程间通信和线程等底层编程的理解,编制结构清晰、风格良好、数据结构适当的linuxC程序。

2、本课程设计的任务

实现服务端和客户端,服务端为某学校,客户端为教务。

服务端完成系统主要功能模块的实现和数据的存储,客服端完成各种服务请求的操作界面的实现和数据的输入,操作界面以菜单方式工作。

通过这次课程设计,达到更加灵活的运用所学的理论和知识和方法,以及独立分析和解决问题的能力;

培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念。

三、设计方案

1、需求分析

1.1问题描述

1.2功能要求

1)用户管理模块:

客户端完成用户注册和申请,服务端完成用户验证。

2)学藉输入模块:

客户端完成学生学藉相关信息的输入(学号,姓名,性别,年龄,籍贯,系别,专业,班级)。

服务端完成对数据的保存,保存成文件。

3)显示学藉模块:

客户端提出显示请求,服务端发送相关数据到客服端并显示。

4)删除学生记录模块:

客户端提出记录删除请求(按学号),服务端完成对相关数据的删除并进行文件的更新。

5)修改学生学藉记录模块:

客户端提出记录修改请求(按学号),服务端完成对记录修改并进行文件的更新。

6)学生学藉查询模块:

客户端提出学生学藉查询请求(按学号),服务端完成对图书信息查询并将查询结果返回给客户端。

1.3问题的解决方案

根据题目要求,可以将问题的解决分为以下步骤:

1)整体分析,建立功能模块框图及界面的组织和设计。

2)分析各个模块及他们之间的关系。

3)根据问题描述,设计模块。

4)完成模块中各个函数的描述。

5)完成模块中各个函数的定义。

6)完成功能应用模块。

7)功能调试。

8)完成问题总结报告。

2、概要设计

2.1设计图

图3-1系统模块图

图3-2使用TCP协议socket程流程图

图3-3学藉管理系统客户端模快图

图3-4学藉管理系统服务器模快图

2.2数据结构

本系统中主要的数据结构是用于客户端和服务器发送信息的structmessage、客户通信节点信息struct_Client_Inf和用户节点链表信息struct_Link_Node。

//定义socket消息数据结构

structmessage

{

charflag[20];

//聊天类型

charname[20];

//用户姓名

charmsg[MAXLEN];

//正文

};

//客户通信节点信息

typedefstruct_Client_Inf

charname[10];

//客户姓名

intfd;

//客户通信socket

structsockaddr_inaddr;

//客户socket地址

pthread_tpid;

//客户使用线程PID

}Client_Inf,datatype;

//用户节点链表信息

typedefstruct_Link_Node

datatypedata;

struct_Link_Node*next;

}Link_Node,*LinkList;

2.3函数设计

函数主要功能描述

客户端:

voidmenu()登陆成功显示界面

voidhandle_regist()提出注册请求

voidhandle_login()提出登陆请求

voidhandle_input()学藉信息录入

voidhandle_display()发送显示信息请求

voidhandle_delet()发送删除信息请求

voidhandle_update()发送修改信息请求

voidhandle_select()发送查询信息请求

voidhandle_exit()退出

服务器:

voiduser_manage()用户管理函数

void*pthread_accept(void*arg)等待接收socket连接线程处理

void*pthread_handleclient(void*arg)线程处理函数

intreg_check(structmessagesock_msg)核对注册请求

intlog_check(structmessagesock_msg)核对登陆请求

计算参数所指定的文件中的记录的个数的函数

intcount(char*a)

服务器信息存储

voidhandle_input(structmessagesock_msg,Client_Infclient_inf)

读出学藉信息

voidhandle_display(Client_Infclient_inf)

删除信息查找

voidhandle_delete(structmessagesock_msg,Client_Infclient_inf)

修改信息查找

voidhandle_update(structmessagesock_msg,Client_Infclient_inf)

查询信息查找

voidhandle_select(structmessagesock_msg,Client_Infclient_inf)

3、详细设计

主要函数功能详细说明:

voidhandle_regist()//提出注册请求

输入用户名和两次密码;

发送给客户端;

send_msg(sockfd,socket_msg);

}

voidhandle_login()//提出登陆请求

输入用户名和密码;

voidhandle_input()//学藉信息录入

输入学生学藉相关信息;

voidhandle_display()//发送显示信息请求

发送显示请求;

voidhandle_delet()//发送删除信息请求

发送删除请求;

voidhandle_update()//发送修改信息请求

发送修改请求;

voidhandle_select()//发送查询信息请求

发送查询请求;

voidhandle_exit()//退出

exit

(1);

服务器

voiduser_manage()//用户管理函数

显示初始界面;

void*pthread_accept(void*arg)//等待接收socket连接线程处理

intsockfd=*(int*)arg;

while

(1)

client_inf.fd=accept_sock(sockfd,&

client_inf.addr);

pthread_create(&

client_inf.pid,NULL,(void*)pthread_handleclient,(void*)&

client_inf);

void*pthread_handleclient(void*arg)//线程处理函数

判断接收的标记信息

recv_msg(client_inf.fd,&

sock_msg);

转入到相应处理函数;

intreg_check(structmessagesock_msg)//核对注册请求

依次从文件中读取信息和接收到的信息相比;

都不相等则追加写入,注册成功;

否则注册失败;

intlog_check(structmessagesock_msg)//核对登陆请求

找到相等,登陆成功;

否则登陆失败;

intcount(char*a)//计算参数所指定的文件中的记录的个数的函数

if((fp=fopen(a,"

rb"

))==NULL)//只读方式打开指定文件

printf("

\nCannotopenfile\n"

);

getchar();

return0;

for(i=0;

!

feof(fp);

i++)//循环读取文件内记录直到文件尾

fread(&

socket_msg,sizeof(structmessage),1,fp);

fclose(fp);

voidhandle_input(structmessagesock_msg,Client_Infclient_inf)//服务器信息存储

将接收到的信息写入文件;

fwrite(&

sock_msg,sizeof(sock_msg),1,fp)

voidhandle_display(Client_Infclient_inf)//读出学藉信息

循环从文件中读出数据发送给客户端;

sock_msg,sizeof(structmessage),1,fp)

send_msg(client_inf.fd,sock_msg);

voidhandle_delete(structmessagesock_msg,Client_Infclient_inf)//删除信息查找

创建包含学号信息的链表;

在链表中找到待删除的记录和文件中的记录比较;

找到后写入临时文件中,并跳过待删除的记录;

for(con=0;

con<

amount;

con++)//amount为文件中记录的个数

if(con==offset){fseek(fp,(long)sizeof(structmessage),1);

continue;

sock_student,sizeof(structmessage),1,fp);

fwrite(&

sock_student,sizeof(structmessage),1,fp1);

最后写回;

voidhandle_update(structmessagesock_msg,Client_Infclient_inf)//修改信息查找

在链表中找到待修改的记录并用接收到的记录履盖;

voidhandle_select(structmessagesock_msg,Client_Infclient_inf)//查询信息查找

在链表中找到待查找的记录并发送给客户端;

4、程序清单

服务器主要功能函数

intmain(intargc,char*argv[])

structsockaddr_inserver_addr;

intserver_fd;

structmessagesock_msg;

pHead=create_linklist();

pHead->

data.fd=server_fd;

if(argc!

=2)

{

perror("

port:

"

exit

(1);

}

server_fd=create_sock();

init_host_addr(&

server_addr,NULL,argv[1]);

if(bind_sock(server_fd,server_addr)==-1)

bind_sock:

\n"

if(listen_sock(server_fd,10)==-1)

listen_sock:

pthread_create(&

pid,NULL,(void*)pthread_accept,(void*)&

server_fd);

user_manage();

return;

intreg_check(structmessagesock_msg)

intnread,nwrite;

structmessageuser_msg;

if((fd=open("

user.txt"

O_RDWR|O_CREAT|O_APPEND,0666))<

0)

o

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1