博主介绍:本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮助到您;
🍅文章末尾获取源码下载方式🍅
一、项目介绍
管理员身份功能介绍:
1:用户登录:对用户信息进行管理
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 MainIndexFragment extends BaseFragment implements Observer {
// 获取view
private View rootView;
View convertView;
private int flagType = 1;
private GridView mChocieType;
private List<PlanModel> list_result = new ArrayList<PlanModel>();
private TextView mtvTip;
private boolean isCheck = false;
private TextView mtvPlan;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_index, null);
initWidget();
initData();
return rootView;
}@Override
public void initWidget() {
mtvTip = (TextView) rootView.findViewById(R.id.mtvTip);
mChocieType = (GridView) rootView.findViewById(R.id.mChocieType);
mtvPlan = (TextView) rootView.findViewById(R.id.mtvPlan);
}@Override
public void onClick(View v) {
}@Override
public void initData() {
mtvTip.setText(checkBody());listPhoneMessage(false);
MainIndexAdapter musicNetListAdapter = new MainIndexAdapter(getActivity(), Consts.choiceString);
mChocieType.setAdapter(musicNetListAdapter);mChocieType.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {if (position == 0) {
Intent intent = new Intent(getActivity(), NewsListActivity.class);
getActivity().startActivity(intent);
} else if (position == 1) {
Intent intent = new Intent(getActivity(), MyTypeActivity.class);
getActivity().startActivity(intent);
} else if (position == 2) {
Intent intent = new Intent(getActivity(), VideoListActivity.class);
getActivity().startActivity(intent);
} else if (position == 3) {
Intent intent = new Intent(getActivity(), MyPlanActivity.class);
getActivity().startActivity(intent);
} else if (position == 4) {
Intent intent = new Intent(getActivity(), FoodListActivity.class);
getActivity().startActivity(intent);
} else if (position == 5) {
Intent intent = new Intent(getActivity(), ExameActivity.class);
getActivity().startActivity(intent);
}
}
});
}private void listPhoneMessage(boolean isShow) {
AjaxParams params = new AjaxParams();
params.put("action_flag", "listPlanPhoneMessage");
params.put("planUserId", MemberUserUtils.getUid(getActivity()));
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<PlanModel>>() {
}.getType());
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");// 设置日期格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");// 24小时制
long timeChoice;
long nowChoice;List<String> listCheck = new ArrayList<String>();
for (int i = 0; i < list_result.size(); i++) {
String timeMessage = list_result.get(i).getPlanTime();
try {
timeChoice = simpleDateFormat.parse(timeMessage).getTime();
nowChoice = simpleDateFormat.parse(df.format(new Date()) + "").getTime();Log.i("pony_log", "courseTime:" + ((timeChoice - nowChoice) / 1000 / 60) + "");
long courseTime = ((timeChoice - nowChoice) / 1000 / 60);
if (0 < courseTime && courseTime <= 30) {
Log.i("pony_log", list_result.get(i).getPlanTitle());
listCheck.add(list_result.get(i).getPlanTitle());
}
} catch (ParseException e) {
e.printStackTrace();
}}
if (listCheck.size() > 0 && isCheck == false) {
String courseMsg = "";
for (int i = 0; i < listCheck.size(); i++) {
courseMsg = listCheck.get(i) + ","+ courseMsg ;
}
mtvPlan.setText("请注意计划:("+ courseMsg.substring(0, courseMsg.length() - 1)+")还有30分钟就要到了!");
isCheck = true;
openAssetMusics();
}
} else {
}
}
break;default:
break;
}}
private String checkBody() {
UserModel userModel = (UserModel) MemberUserUtils.getBean(getActivity(), "user_messgae");
int heigthMsg = Integer.valueOf(userModel.getUserHeight());
int weigthmsg = Integer.valueOf(userModel.getUserWeight());
int bz = heigthMsg - 110;// 标准体重/kg
if (weigthmsg <= (bz + 5) && weigthmsg >= (bz - 5)) {
return "您的身体太棒啦,继续保持哦!";
} else if (weigthmsg > (bz + 5)) {
return "您有点胖,注意多运动啊!";
} else if (weigthmsg < (bz - 5)) {
return "您有点瘦,多吃的少熬夜!";
}
return "";
}
private MediaPlayer mediaPlayer;private void openAssetMusics() {
try {
// 播放 assets/a2.mp3 音乐文件
AssetFileDescriptor fd = getActivity().getAssets().openFd("voice.mp3");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onPause() {
super.onPause();
if(mediaPlayer!=null){
mediaPlayer.pause();
}
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
UserObservable.getInstance().addObserver(MainIndexFragment.this);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
UserObservable.getInstance().deleteObserver(MainIndexFragment.this);
}@Override
public void update(Observable arg0, Object arg1) {
mtvTip.setText(checkBody());
}}
2:视频教程列表
public class VideoListActivity extends BaseActivity {// 标题
private TextView mTvTitle;
// 返回
private ImageView mIvBack;
private ListView mListMessage;
private String state;
private LinearLayout mllNomessage;
private List<VideoOnlineModel> listMsg = new ArrayList<VideoOnlineModel>();
private VideoListAdapter musicNetListAdapter;@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
initWidget();
initData();
}@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.mIvBack:
finish();
break;
}
}@Override
public void initWidget() {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);
}@Override
public void initData() {
listMessage(true);mListMessage.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Intent playMusic = new Intent(VideoListActivity.this, VideoDownloadMessageActivity.class);
playMusic.putExtra("msg", listMsg.get(position));
startActivity(playMusic);
}
});
}private void listMessage(boolean isShow) {
AjaxParams params = new AjaxParams();
params.put("action_flag", "listVideoMessage");
params.put("userId", MemberUserUtils.getUid(this));
httpPost(Consts.URL + Consts.APP.MessageAction, params, Consts.actionId.resultCode, isShow, "正在加载...");
}@Override
protected void callBackSuccess(ResponseEntry entry, int actionId) {
super.callBackSuccess(entry, actionId);switch (actionId) {
case Consts.actionId.resultCode:
if (null != entry.getData() && !TextUtils.isEmpty(entry.getData())) {
String jsonMsg = entry.getData().substring(1, entry.getData().length() - 1);if (null != jsonMsg && !TextUtils.isEmpty(jsonMsg)) {
listMsg = mGson.fromJson(entry.getData(), new TypeToken<List<VideoOnlineModel>>() {
}.getType());
musicNetListAdapter = new VideoListAdapter(VideoListActivity.this, listMsg);
mListMessage.setAdapter(musicNetListAdapter);
} else {
mllNomessage.setVisibility(View.VISIBLE);
}
}
break;
}}
}
六、浏览更多Android毕业设计
毕业设计-基于android的租房信息发布平台的APP_信息发布app源码_Android毕业设计源码的博客-CSDN博客
毕业设计-基于android选课系统的设计与实现_android学生选课系统_Android毕业设计源码的博客-CSDN博客
毕业设计之校园一卡通管理系统的设计与实现_一卡通管理系统实现_Android毕业设计源码的博客-CSDN博客
基于Android的校园二手闲置物品交易系统设计与实现_基于android的二手交易平台_Android毕业设计源码的博客-CSDN博客
基于androidstudio校园快递APP系统的设计与实现_android studio论文_Android毕业设计源码的博客-CSDN博客
基于android的商城购物定制APP_安卓开发购物app_Android毕业设计源码的博客-CSDN博客
更多毕业设计可以浏览我的个人主页哦!
七、毕业设计部分免费源码分享下载
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻
1:V信搜索“毕业设计小码哥”,也可以关注下方公众号,然后点击菜单栏“源码说明-源码下载”
2:点击小程序下面截图
3:选择Android就可以看到下载源码