漫画app课设

Android移动应用开发

课程设计报告

(2019—2020学年 第Ⅰ学期)

作品主题:漫画app

系    别        信息与控制工程

专    业        计算机科学与技术

班    级          计算机1702

学    号            173230217

姓    名               张宏升

指导教师               郭丹

目录

一、需求分析 1

1.1引言 1

1.1.1编写目的 1

1.1.2项目背景 1

1.2功能需求分析 1

1.2.1功能描述 2

1.3数据流图 2

1.4系统开发及运行环境 2

二、功能设计 3

2.1系统详细设计 3

2.1.1登录注册模块 3

2.1.2添加模块 6

2.1.3查询模块 6

2.1.4修改模块 6

2.1.5删除模块 6

三、关键源代码 7

3.1添加代码 7

3.2查询代码 8

3.3修改代码 8

3.4删除代码 9

3.5建立数据库代码 9

3.6界面转换代码 10

3.7其他页面及其代码 11

四、项目总结 12

 

 

 

 

 

 

一、需求分析

1.1引言

1.1.1编写目的

一个好的系统设计的步骤决定了程序是否能按照设计者的目的按时完成,是否能在规定的时间内按照设计者的要求高质量的完成程序必要的功能。并且按照标准的设计步骤对程序进行调试,测试,以及后期的优化完善,使程序更加具有健壮性和可用性。

本说明对漫画app的各模块、页面、脚本分别进行了实现层面上的要求和说明。

1.1.2项目背景

随着移动设备制造技术和移动通信网络的迅猛发展,全球手机用户日益增加,手机成为了很多人日常生活中必不可少的一部分,手机业在日益发展的同时,人们对手机的功能需求和体验需求也越来越高,本系统基于Android平台,利用Java语言,以Eclipse为开发工具,主要是对管理系统的版面设计和功能设计的研究,尽可能设计出更具实用性的管理系统程序。

通过对管理系统功能功能、系统模块、用户需求方面进行全方位的分析制定开发流程。软件需要实现对租借人姓名,手机号码,租借时间,所租会议室进行添加,删除,修改,查询等功能并创建一个全新的界面登录这个功能界面。

1.2功能需求分析

用户需求:

2017年12月到2018年11月腾讯漫画APP的用户,男性占比52.17% ,女性占比48.83%以当前艾瑞广告数据“手机端”男\女用户统计结果接近1:1,男性用户比女性用户高于4.34%,当前腾讯动漫APP用户偏向于男性人群。

用户年龄:

2017年12月到2018年11月腾讯动漫使用人群24岁以下占比43.68%,25-30岁使用人群占比33.9%,31-35岁使用人群占比17.29%,36-40岁使用人群占比4.52%,41岁以上占比0.6%。

备注:2017年12月到2018年11月腾讯动漫主要用户为年轻人24岁以下,其次用户25-30岁年龄,从用户的分布年龄来看,具有付费的能力,可以推荐一些精品漫画。

二次元、动漫在国内受众年轻,回顾2018年的动漫产业发展,也让人感到年轻和生命力。根据艾瑞咨询最新发布的《2018年中国动漫行业研究报告》,去年动漫产业总产值突破1500亿元,在线内容市场规模近150亿元。而用户规模也获得较大增长,泛二次元用户规模近3.5亿,在线动漫用户量达2.19亿。


1.2.1功能描述

登陆界面打开程序,进入程序主菜单

订阅动漫信息查询:查询出所有动漫信息以及投币数避免重复租借

动漫信息添加:动漫番号和投币数

动漫信息修改:修改动漫信息

信息删除:删除动漫信息

1.3数据流图

 

 

 

 

1.4系统开发及运行环境

开发环境:Android studio

运行环境:Android智能手机

二、功能设计

2.1系统详细设计

2.1.1登录注册模块

用户没有账号可点击登录按钮下方的“立即注册”进行注册。注册界面如图所示,用户可以注册然后进行登录。在注册界面中,首先提醒您输入用户名,注册成功后跳转到登录界面。

代码实现如下:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class zhuceActivity extends AppCompatActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zhuce);
    }

public void Click (View v){
        Intent intent = new Intent();
        intent.setClass(this,MyActivity.class);
        startActivity(intent);

}
}

登录成功和失败页面:

登录失败登陆成功

具体代码:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ListView mListView;
private EditText dengluzh;
private EditText denglumm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN
        );
        setContentView(R.layout.denglu);
        dengluzh = (EditText)  findViewById(R.id.et01);
        denglumm = (EditText)  findViewById(R.id.et02);
        Button login = (Button) findViewById(R.id.btn02);
        Button zc2 = (Button) findViewById(R.id.btnzc2);
        login.setOnClickListener(this);
        zc2.setOnClickListener(this);

}

@Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn02:
                String zh = dengluzh.getText().toString();
              String mm = denglumm.getText().toString();

if ("13164557510".equals(zh)&&"sqlzhs521".equals(mm)){
                   Intent intent = new Intent(MainActivity.this,MyActivity.class);
                   startActivity(intent);
                }else {
                    Toast.makeText(MainActivity.this,"登陆失败",Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.btnzc2:
                Intent intent = new Intent();
                intent.setClass(MainActivity.this,zhuceActivity.class);
                startActivity(intent);
                break;
        }
    }

}

2.1.2添加模块

2.1.3查询模块

2.1.4修改模块

三、关键源代码

具体代码:

public  class MyBaseAdapter extends BaseAdapter {
    private Button btn;
    private String[] shuming ={"青春猪头少年不会梦到兔女郎学姐","青春猪头少年不会梦到兔女郎学姐","我的青春恋爱物语管然有问题1","我的青春恋爱物语管然有问题2"
            ,"我的青春恋爱物语管然有问题2"};
    private String[] zhurengong ={"樱岛麻衣兔女郎","樱岛麻衣泳装","雪之下雪乃","比企谷雪乃"
            ,"一色彩羽"};
    private String[] zuozhe ={"作者:","作者:","作者:","作者:","作者:"};
    private String[] zuozheming ={"鸭志田一","鸭志田一","渡航","渡航"
            ,"渡航"};
    private int[] icons = {R.drawable.mayi01,R.drawable.mayi02,R.drawable.xuenai01,R.drawable.xuenai02,R.drawable.yise01};
    @Override
    public int getCount(){
        return shuming.length;
    }
    @Override
    public Object getItem(int position){
        return shuming[position];
    }
    @Override
    public long getItemId(int position){
        return position;
    }

@Override

public View getView(int position, View convertView, final ViewGroup parent){
        View view = View.inflate(parent.getContext(),R.layout.item,null);
        TextView shuming1 = (TextView) view.findViewById(R.id.shuming);
        TextView zhurengong1 = (TextView) view.findViewById(R.id.zhurengong);
        TextView zuozhe1 = (TextView) view.findViewById(R.id.zuozhe);
        TextView zuozheming1 = (TextView) view.findViewById(R.id.zuozheming);
        Button dy = (Button)view.findViewById(R.id.btn);
        dy.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(parent.getContext(),dingyueActivity.class);
                parent.getContext().startActivity(intent);

}

});
        ImageView logo=view.findViewById(R.id.logo);
        shuming1.setText(shuming[position]);
        zhurengong1.setText(zhurengong[position]);
        zuozhe1.setText(zuozhe[position]);
        zuozheming1.setText(zuozheming[position]);
        logo.setBackgroundResource(icons[position]);
        return view;

}

3.6界面转换代码

 

denglu02=findViewById(R.id.denglu02);
    qxs=findViewById(R.id.qxs);
    wd=findViewById(R.id.wd);
    denglu02.setOnClickListener(new View.OnClickListener() {

@Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.denglu02:
                    Intent intent = new Intent();
                    intent.setClass(MyActivity.this,dingyueActivity.class);
                    startActivity(intent);
                    break;
                case R.id.btn:
                    Intent intent1 = new Intent();
                    intent1.setClass(MyActivity.this,dingyueActivity.class);
                    startActivity(intent1);
                    break;

case R.id.qxs:
                    Intent intent2 = new Intent();
                    intent2.setClass(MyActivity.this,qingxiaoshuoActivity.class);
                    startActivity(intent2);
                    break;

}

}

}
    );
    qxs.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
        Intent intent2 = new Intent();
                    intent2.setClass(MyActivity.this,qingxiaoshuoActivity.class);
        startActivity(intent2);

}
});
    wd.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            Intent intent2 = new Intent();
            intent2.setClass(MyActivity.this,wodeActivity.class);
            startActivity(intent2);

}
    });

 

3.7其他界面及其代码

我的界面轻小说界面订阅界面

代码如下:

我的界面:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.WindowManager;

public class wodeActivity extends AppCompatActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wode);
        getWindow().setFlags(
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN
        );
    }
}

轻小说代码:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class qingxiaoshuoActivity extends AppCompatActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_qingxiaoshuo);
    }
}

四、项目总结

这次设计的课题对我而言是一个巨大的挑战,经过不断的学习努力,解决了软件开发过程中的各种问题,最终完成了软件的开发。通过这次综合的软件开发的过程,对我以后的学习生活有着积极的促进作用。

这个学期学安卓开发不是很里先后,开始做课设的时候,从一开始的0基础,不断的一点点写基础代码,实现基础功能。甚至一开始的时候在基础代码,没有几行的情况下都会有许多错误,找资料解决bug。该系统主要实现了任务管理,用户登录注册。

由于自身经验不足,尽管按照书本实现代码,但还是有各种各样的问题。例如在创建数据库的时候,在没有错误情况下,完全重新写了三次都无法运行。代码出现错误不知如何修改,陷入无尽的迷茫中,因个人的能力有限,有些功能设计不够完善,有待进一步的改善。

在开发系统的过程中,学习Android的困难比想象的要大很多,为了在较短的时间掌握Android的开发,需要投入大量的精力去学习。开发过程中我碰到了很多问题,而且程序开发的过程和结果也不是非常完美。为了解决这些问题,我通过咨询同学或者通过互联网查找相关资料,学习解决问题的相关方式。

但是通过这段时间的锻炼,对于系统设计的理念更为明确,对Eclipse这款软件的运用真的熟悉掌握了不少。这是一次难得的经历,让我对安卓开发有了更深的理解。系统设计从刚开始的一片空白,到现在至少可以自己进行功能分析,对于一些功能实现还是已经会了。相信在以后的系统设计中,本人能够吸取经验和教训,能力不断提高。总之,通过此次课程设计,真正深刻体会到了在找BUG的几天里很痛苦,找到的BUG被自己发现并且解决的时候,那是一种非常开心的事。做好一个完整事情,需要非常耐心的对待要解决的问题,要善于运用有限的资源来充实自己,也要相信自己。

 

原文地址:https://www.cnblogs.com/LXF-i/p/12006096.html

时间: 2024-10-08 09:13:04

漫画app课设的相关文章

难忘课设

随着走出实验室机房的那一刻起,我们的第一个课程设计--初级课程设计就这样结束了.回顾这将近两周的历程,真的是感慨万分,收获颇多,为自己大学第一年的生活,添加上了最为亮彩的一页,也为今后的大学生活,增添了前进的动力. 还记得课设开始的第一天,看着发下来的设计方案与模块,大部分同学都惊呆了,惊奇着我们居然要做这么难的东西,但我还是比较淡定的,因为可以检验自己,锻炼自己.如果你看看身边的大神们,你会发现,他们的眼中只有自信和期待. 随着老师的简单介绍,我们的课设真的开始了,然而很多同学都不知道从何下手

私厨--课设报告

Android应用程序开发 课程设计报告 (2019—2020学年 第Ⅰ学期) 基于Android的家庭菜谱系统 系    别            信息与控制工程 专    业           计算机科学与技术 班    级                1701 姓    名              荣瑞瑞 指导教师                郭 丹 目录 TOC \o "1-2" \h \u 一.摘要 1 二.课设题目 1 三.系统设计 2 四.系统测试 6 五.系统实

期末课设报告

一. 设计目的 4 二. 需求分析 4 2.1技术可行性分析: 4 2.2应用可行性分析 4 通讯录是人们生活中必不可少的应用软件:有了通讯录寻找联系人或者是及时修改联系人信息都是很方便的:所以我通过自己本学期所学编制了这个简易的通讯录应用,希望可以在以后能够实现一个更加完整的通讯录系统. 4 2.3 UML 4 2.3.1 用例分析 4 到通讯录界面. 4 4.通讯录界面:在此界面可输入通讯录的信息如姓名.手机号以及地址信 4 2.3.2uml需求用例图 5 三. 总体设计 6 3.1 系统结

编译原理课设参考

期末到了,忙课设好久了,在编译原理的课设上面走了好多的弯路,也好久没有碰前端的东西了,心感惭愧,那我就把我最近忙的一些东西贡献出来,希望可以帮助到那些感觉这门科目很难的同学,祝大家可以学好每一门学科~ 下面是我们学校的学习要求,我全部已经完成,时间仓促,大家仅供参考.转载请注明出处. 基本内容(成绩范围:“中”.“及格”或“不及格”) (1)扩充赋值运算:+=,-=, *= 和 /= (2)扩充语句(Pascal的FOR语句): FOR <变量>:=<表达式>STEP<表达式

java课设打包操作

最近在交java课设时把东西打包给老师遇到许多奇葩问题, 首先是数据库复制时提示: 这是数据库与SQL server服务没有分离(我用的是SQLserver暂时,对于其他的,我以后会继续尝试)可以进行以下操作 打开sqlserver     找到需要分离的数据库 右键----->任务---->分离 这样再复制粘贴就可以了 然后就是java源文件导出为可运行的jar文件 导出jar 导出复制粘帖时又出现错误提示 操作无法完成 因为文件已在 Java(TM) Platform SE binary

Slimer软工课设日报-2016年6月30日

根据上期预告,今天的主要工作是增加了初始界面和设置界面 初始界面 点击start按钮,若在设置中已成功连接服务器,则会进入账号登录界面,否则弹窗报错 void start() { //开始游戏按钮 if (connected == 0) { MessageBox(NULL,"未连接到服务器,请在设置中输入IP","错误" , MB_OK); } else { form = 1; //账号登录页面 } } start按钮 代码中connected变量当设置页面中ip连

Slimer软工课设日报--第一天

根据之前用户反馈的调整窗口大小后按钮失灵的问题,我设计了如下的解决方案: 由于按钮响应是通过判断是否点击在该按钮相应的xy坐标范围里来判定的,按钮的xy坐标则是通过窗口大小换算的 double changex(int x) { return x*2.0 / WindowWidth - 1; } double changey(int y) { return y*2.0 / WindowHeight - 1; } 换算函数 而原先的游戏窗口大小是固定的,所以当用户改变窗口大小时,按钮还是原来的判定区

软工课设的成果物

上学期的软件工程课设可以说是对本次毕设的一个准备.下面展示该课设的成果. 首先,必须了解研究生的论文撰写过程(生命周期): 在生成需求分析的时候,我们对老师和同学还进行了调研.结果如下: 对导师的调查结果 以下是学生调查结果的一部分: 数据流图:

软件工程课设-----日程管理系统

这学期进行了软件工程课设,题目是:日程管理系统(JavaWeb),为期3周.这三周只有前两天是企业老师讲解是企业老师讲解相关的基础知识(老师讲的水平实在是不可恭维......). 多的不多说.直接进行对相关项目的介绍. 1 项目是基于JavaWeb的,B/S模式.之前没有进行相关的开发,可以说是零基础. 2 零基础,没经验. 3 自己的技术水平有所提高,增强了自己的信心. ······························································