博主介绍:本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮助到您;
🍅文章末尾获取源码下载方式🍅
目录
一、项目介绍
1.前台用户模块
(1)注册功能
(2)登录功能
(3)完善个人信息功能
(4)查看个人信息功能
(5)修改个人信息功能
(6)管理我发布的活动功能
(7)发布评论功能
(8)查看校园动态功能
(9)查看学校组织功能
(10)查看校园活动功能
(11)查看学校日历功能
2.后台管理员模块
(1)登录功能
(2)管理员个人信息管理功能
(3)添加管理员功能
(4)查看用户
(5)校园动态
(6)校园活动
(7)校园招聘
(8)校园组织
(9)社团信息
二、运行环境
1:客户端使用Android stuido进行开发;
2:服务端后台使用Myeclipse2014进行开发;
3:mysql数据库进行数据存储;
4:需要jdk1.7以上
5:使用雷电模拟器或者Androidstuio自带的模拟器进行运行
三、使用技术
总体设计逻辑和思路:
1:先设计数据库表文件
2:写服务端jsp页面以及写api接口给客户端提供数据
3:完成后台服务端的数据交互,也就是jsp页面数据的存储和显示
4:进行客户端页面的开发;
5:进行客户端对api接口的调用,也就是获取数据库的数据以及在客户端进行显示移动端:
1:使用android原生控件以及xml布局文件来完成界面的显示
2:使用java代码完成功能的数据和逻辑交互
3:使用http网络请求完成数据的请求;
4:使用json数据解析完成客户端数据的回调和显示服务端后台:
1:使用mysql完成数据的存储
2:使用jdbc完成数据库和代码的逻辑交互
3:使用jsp完成网页数据的显示
4:使用java代码完成api接口的编写以及以及数据的回调
四、部分代码
1:活动信息
/**
* 活动信息详情界面
*/
public class ProjectMessageActivity extends BaseActivity {
// title
private TextView mTvTitle, mIvStu;
// 返回
private ImageView mIvBack;
// 查询按钮
private TextView mtvtitle;
private TextView mtvcontentZhuSu;
private ProjectModel noticeModel;private TextView mtvtime;
private RelativeLayout mllbottom;
private Button mbtnPay;
private TextView mtvShopPrice;
private TextView courseLength;private SimpleDraweeView guide_image;
private TextView startTime;
private TextView endTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_projectmsg);
initWidget();
initData();
}@Override
public void initWidget() {
guide_image = (SimpleDraweeView) findViewById(R.id.guide_image);
guide_image.setOnClickListener(this);
mIvStu = (TextView) findViewById(R.id.mIvStu);
mIvStu.setText("评论");
mIvStu.setVisibility(View.VISIBLE);
mIvStu.setOnClickListener(this);startTime = (TextView) findViewById(R.id.startTime);
endTime = (TextView) findViewById(R.id.endTime);mbtnPay = (Button) findViewById(R.id.mbtnPay);
mllbottom = (RelativeLayout) findViewById(R.id.mllbottom);
mtvcontentZhuSu = (TextView) findViewById(R.id.mtvcontentZhuSu);
mtvtitle = (TextView) findViewById(R.id.mtvtitle);
mtvtime = (TextView) findViewById(R.id.mtvtime);mIvBack = (ImageView) findViewById(R.id.mIvBack);
mTvTitle = (TextView) findViewById(R.id.mTvTitle);
mTvTitle.setText("活动信息");
mIvBack.setVisibility(View.VISIBLE);
mIvBack.setOnClickListener(this);
mbtnPay.setOnClickListener(this);mtvShopPrice = (TextView) findViewById(R.id.mtvShopPrice);
courseLength = (TextView) findViewById(R.id.courseLength);}
@Override
public void onClick(View v) {switch (v.getId()) {
case R.id.mIvBack:
ProjectMessageActivity.this.finish();
break;
case R.id.mIvStu:
Intent intent = new Intent(this, PropagandaReviewActivity.class);
intent.putExtra("msg", noticeModel);
startActivity(intent);
break;
case R.id.mbtnPay:
if(Integer.valueOf(noticeModel.getTotalNumber())<Integer.valueOf(noticeModel.getProjectNumber())){
addApply(true);
}else{
ToastUtil.ShowCentre(this,"抱歉,申请人数已满");
}break;
case R.id.guide_image:ArrayList<SelectImageItem> imageList = new ArrayList<SelectImageItem>();
SelectImageItem selectImageItem;
for (int i = 0; i < noticeModel.getProjectImg().split(",").length; i++) {
selectImageItem = new SelectImageItem();
selectImageItem.setUrl(Consts.URL_IMAGE + noticeModel.getProjectImg().split(",")[i]);
imageList.add(selectImageItem);
}
Intent intentPicture = new Intent(this, ShowListPicturesActivity.class);
intentPicture.putExtra("piction_path", imageList);
intentPicture.putExtra("inforMsg", noticeModel.getProjectName());
startActivityForResult(intentPicture, 6);
break;
}
}@Override
public void initData() {noticeModel = (ProjectModel) this.getIntent().getSerializableExtra("msg");
mtvtitle.setText(noticeModel.getProjectName());
mtvcontentZhuSu.setText(" " + noticeModel.getProjectMessage());
mtvtime.setText("发布时间:" + noticeModel.getProjectTime());
courseLength.setText("活动地址:" + noticeModel.getProjectAddress());startTime.setText("活动时间:" + noticeModel.getProjectWeek());
mtvShopPrice.setText(noticeModel.getTotalNumber()+"/"+noticeModel.getProjectNumber());
if (!TextUtils.isEmpty(noticeModel.getProjectImg())) {
Uri uIconuri = Uri.parse(Consts.URL_IMAGE + noticeModel.getProjectImg().split(",")[0]);
FrescoUtils.initDraweeController(guide_image, uIconuri);
}if(Integer.valueOf(noticeModel.getTotalNumber())==Integer.valueOf(noticeModel.getProjectNumber())){
mbtnPay.setText("申请已满");
mbtnPay.setFocusable(false);
mbtnPay.setClickable(false);
mbtnPay.setBackgroundColor(Color.parseColor("#bfbfbf"));
}else{
if (noticeModel.isApplyStateInfor()) {
mbtnPay.setFocusable(false);
mbtnPay.setClickable(false);
mbtnPay.setText("你已参加");
mbtnPay.setBackgroundColor(Color.parseColor("#bfbfbf"));
}
}}
private void addApply(boolean isShow) {
UserModel userModel = (UserModel) MemberUserUtils.getBean(this, "user_messgae");AjaxParams params = new AjaxParams();
params.put("action_flag", "addApply");
params.put("applyUserId", MemberUserUtils.getUid(this));
params.put("applyUserName", MemberUserUtils.getName(this));
params.put("applyMessageId", noticeModel.getProjectId());
params.put("applyMessageName", noticeModel.getProjectName());
httpPost(Consts.URL + Consts.APP.MessageAction, params, Consts.actionId.resultCode, isShow, "正在加载...");}
@Override
protected void callBackSuccess(ResponseEntry entry, int actionId) {
super.callBackSuccess(entry, actionId);
ToastUtil.show(ProjectMessageActivity.this, entry.getRepMsg());
ProjectObservable.getInstance().notifyStepChange("ok");
new Handler().postDelayed(new Runnable() {
//
@Override
public void run() {
finish();
}
}, 2000);
}}
2:我的申请
/**
*我的申请界面
*
*/
public class MyApplyActivity extends BaseActivity {// 标题
private TextView mTvTitle;
// 返回
private ImageView mIvBack;
private TextView mIvStu;
private ListView mListMessage;
private String state;
private LinearLayout mllNomessage;private List<ProjectModel> list_result = new ArrayList<ProjectModel>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_im);
initWidget();
initData();
}@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.mIvBack:
finish();
break;
}
}@Override
public void initWidget() {
mIvStu = (TextView) findViewById(R.id.mIvStu);
mIvStu.setText("添加");
mIvStu.setVisibility(View.GONE);
mllNomessage = (LinearLayout) findViewById(R.id.mllNomessage);
mListMessage = (ListView) findViewById(R.id.mListMessage);mIvBack = (ImageView) findViewById(R.id.mIvBack);
mTvTitle = (TextView) findViewById(R.id.mTvTitle);
state = this.getIntent().getStringExtra("state");
mTvTitle.setText("活动记录");
mIvBack.setVisibility(View.VISIBLE);
mIvBack.setOnClickListener(this);
mIvStu.setOnClickListener(this);
}@Override
public void initData() {
MessageAction(true);mListMessage.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
}
});}
private void MessageAction(boolean isShow) {
AjaxParams params = new AjaxParams();
params.put("action_flag", "listApplyProjectMesage");
params.put("applyUserId", MemberUserUtils.getUid(this));
httpPost(Consts.URL + Consts.APP.MessageAction, params, Consts.actionId.resultFlag, isShow, "正在加载...");
}@Override
protected void callBackSuccess(ResponseEntry entry, int actionId) {
super.callBackSuccess(entry, actionId);switch (actionId) {
case Consts.actionId.resultFlag:
if (null != entry.getData() && !TextUtils.isEmpty(entry.getData())) {
String jsonMsg = entry.getData().substring(1, entry.getData().length() - 1);if (null != jsonMsg && !TextUtils.isEmpty(jsonMsg)) {
list_result.clear();
list_result = mGson.fromJson(entry.getData(), new TypeToken<List<ProjectModel>>() {
}.getType());
MyApplyProjectListAdapter intersetListAdapter = new MyApplyProjectListAdapter(MyApplyActivity.this, list_result);
mListMessage.setAdapter(intersetListAdapter);
} else {
mllNomessage.setVisibility(View.VISIBLE);
}
}
break;
}}
}
五、运行截图
六、免费分享源码获取
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻
1:V信搜索“毕业设计小码哥”,也可以关注下方公众号,然后点击菜单栏“源码说明-源码下载”
2:点击小程序下面截图
3:选择Android就可以看到下载源码