• 这个很重要,主要为了秋哥搞这个,但这个也麻烦呀,需要重新理一下思路。
  • 应该文章和题目是一个表
  • 题目和答案是一个表
  • 最后都要送错误到题目上
  • 这里还需要设计一个图片的上传功能
  • 阅读题,我就不分单元了:)按年级来了。
  • 题目表的的文章表的ID
  • 错误次数就不好理解了,我一直想以小题作为错误,但是反过来不好JOIN,还是以大小表都加错误次数,到时再次做的时候,可以不用做已正确的,次>0的

image.png

  • 然后附表就和单选填空一样的拉,只是多一个字段用于关联上面表EnReading的ID,分表叫EnReadingQuestions

image.png

上实体,要注意字数,阅读的这数就很多拉

  1. <Table Name="EnReading" Description="英语阅读" RenderGenEntity="True">
  2. <Columns>
  3. <Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
  4. <Column Name="Grade" DataType="String" Description="年级" />
  5. <Column Name="Subhead" DataType="String" Description="小标题" />
  6. <Column Name="SubjectContent" DataType="String" Length="600" Description="英文内容" />
  7. <Column Name="ChineseDescription" DataType="String" Length="600" Description="中文翻译" />
  8. <Column Name="Analysis" DataType="String" Length="400" Description="解析" />
  9. <Column Name="Pic" DataType="String" Description="图片" />
  10. <Column Name="Bei1" DataType="String" Length="400" Description="备注1" />
  11. <Column Name="Bei2" DataType="String" Length="400" Description="备注2" />
  12. <Column Name="TestNumbers" DataType="Int32" Description="测试次数" />
  13. <Column Name="ErrorNumbers" DataType="Int32" Description="错误次数" />
  14. <Column Name="CreateUser" DataType="String" Description="创建者" />
  15. <Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
  16. <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
  17. </Columns>
  18. </Table>
  19. <Table Name="EnReadingQuestions" Description="英语阅读题" RenderGenEntity="True">
  20. <Columns>
  21. <Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
  22. <Column Name="Grade" DataType="String" Description="年级" />
  23. <Column Name="EnReadingID" DataType="Int32" Description="阅读ID" />
  24. <Column Name="SubjectText" DataType="String" Description="题目" />
  25. <Column Name="SubjectType" DataType="String" Description="类型" />
  26. <Column Name="EnglishDescription" DataType="String" Length="200" Description="英文说明" />
  27. <Column Name="ChineseDescription" DataType="String" Length="200" Description="中文说明" />
  28. <Column Name="Analysis" DataType="String" Length="400" Description="解析" />
  29. <Column Name="OptionA" DataType="String" Length="400" Description="选项A" />
  30. <Column Name="OptionB" DataType="String" Length="400" Description="选项B" />
  31. <Column Name="OptionC" DataType="String" Length="400" Description="选项C" />
  32. <Column Name="OptionD" DataType="String" Length="400" Description="选项D" />
  33. <Column Name="Answers" DataType="String" Length="400" Description="答案" />
  34. <Column Name="Bei1" DataType="String" Length="400" Description="备注1" />
  35. <Column Name="Bei2" DataType="String" Length="400" Description="备注2" />
  36. <Column Name="TestNumbers" DataType="Int32" Description="测试次数" />
  37. <Column Name="ErrorNumbers" DataType="Int32" Description="错误次数" />
  38. <Column Name="CreateUser" DataType="String" Description="创建者" />
  39. <Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
  40. <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
  41. </Columns>
  42. </Table>
  • 生成图片
  • 因为这个需要先加文章,再加题目,所以用魔方还不好加得。得弄个CREAT页面。
  • 增加一个视图

    public IActionResult EnReadingAdmin()
          {
    
              return View();
    
          }
    

    先新建一个菜单
    image.png

然后在中间增加链接的内容即可。
弄区域。
image.png

  • 其实有点繁顼,可以用英语一个菜单的,但我想用魔方的表管理,真是方便呀。

建立新建阅读

后台

[HttpGet]
        public IActionResult CreatEnReading(int? id = null)
        {
            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult CreatEnReading( EnReading enreading)
        {
            if (ModelState.IsValid)
            {
                var enreading1 = new EnReading
                {
                    Grade = enreading.Grade,
                    Subhead = enreading.Subhead,
                    SubjectContent = enreading.SubjectContent,
                    ChineseDescription = enreading.ChineseDescription,
                    Analysis = enreading.Analysis,
                    Bei1 = enreading.Bei1,
                    TestNumbers =1,
                    ErrorNumbers = 0 
                };
                enreading1.Insert();
                return RedirectToAction(nameof(EnReadingList));
            }
            return View();

        }

前台


@model XCode.Membership.EnReading
<div style="margin-top:30px;"></div>
<h1>新增英语阅读题</h1>
<hr />
<h4>注意我在后台用的|换为换行符,年级一定要是789这种小数字.</h4>
<hr />
<div class="row">
    <div class="col-md-12">
        <form asp-action="CreatEnReading" method="post">
            @Html.AntiForgeryToken()
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Grade" class="control-label"></label>
                <input asp-for="Grade" class="form-control" />

            </div>
            <div class="form-group">
                <label asp-for="Subhead" class="control-label"></label>
                <input asp-for="Subhead" class="form-control" />
            </div>
            <div class="form-group">
                <label asp-for="SubjectContent" class="control-label"></label>
                <textarea asp-for="SubjectContent" class="form-control" style="height:222px;"></textarea>

            </div>
            <div class="form-group">
                <label asp-for="ChineseDescription" class="control-label"></label>
                <textarea asp-for="ChineseDescription" class="form-control" style="height:222px;"></textarea>
                @*<input asp-for="ChineseDescription" type="text" class="form-control" />*@
            </div>
            <div class="form-group">
                <label asp-for="Analysis" class="control-label"></label>
                <textarea asp-for="Analysis" class="form-control" style="height:160px;"></textarea>

            </div>
            <div class="form-group">
                <label asp-for="Bei1" class="control-label"></label>
                <textarea asp-for="Bei1" class="form-control" style="height:80px;"></textarea>
            </div>

            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />  <a asp-action="Index">Back to List</a>
            </div>
        </form>
    </div>
</div>

<div>

</div>
<div style="margin-bottom:70px;width:100%;"></div>

样式
image.png

建立所有阅读LIST

这个会送一个到新建题目的东东

 public IActionResult EnReadingList(int? EnReadingID = null)
        {
            var mmm = EnReading.FindAll(null, null, null,0 ,8);
            ///当ID不为空的时候,肯定就是有值进来的时候拉。在文章下面显示题
            if (EnReadingID != null) {
                var EnreadingTm = EnReadingQuestions.FindAll(EnReadingQuestions._.EnReadingID== EnReadingID);
                ViewBag.enreadingtm = EnreadingTm;
            }
            return View(mmm);
        }

前台

@model IList<XCode.Membership.EnReading>
<h2>阅读的列表</h2>
<table class="table">
    <thead>
        <tr>
            <th>
                ID
            </th>
            <th>
               英文内容
            </th>
            <th></th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.ID)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.SubjectContent)
                <p>
                    @if (@ViewBag.enreadingtm != null)
                    {

                            @foreach (var V in ViewBag.enreadingtm as IList<XCode.Membership.EnReadingQuestions>)
                            {

                          @if (@V.EnReadingID==@item.ID) {   <p style="color:#0094ff;"> @V.EnReadingID - @V.EnglishDescription ;  </p>}

                            }


                        }


                    </p>
                </td>

            <td>
                <a asp-action="CreatEnReadingTimu" asp-route-EnReadingID="@item.ID" type="button" class="btn btn-info btn-sm">加题</a>

            </td>
            <td>
                <a asp-action="EnReadingList" asp-route-EnReadingID="@item.ID" type="button" class="btn btn-info btn-sm">已加</a>

            </td>

        </tr>

        }
    </tbody>
</table>

效果
image.png

通过阅读点击增加题目

后台

 [HttpGet]
        public IActionResult CreatEnReadingTimu(int EnReadingID)
        {
            ViewBag.TimuID = EnReadingID;

            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult CreatEnReadingTimu(EnReadingQuestions enreading2)
        {
            if (ModelState.IsValid)
            {
                var enreading1 = new EnReadingQuestions
                {
                    EnReadingID = enreading2.EnReadingID,
                    SubjectText = enreading2.SubjectText,
                    SubjectType = enreading2.SubjectType,
                    EnglishDescription = enreading2.EnglishDescription,
                    ChineseDescription = enreading2.ChineseDescription,
                    Analysis = enreading2.Analysis,
                    OptionA = enreading2.OptionA,
                    OptionB = enreading2.OptionB,
                    OptionC = enreading2.OptionC,
                    OptionD = enreading2.OptionD,
                    Answers = enreading2.Answers,
                    Bei1 = enreading2.Bei1,
                    TestNumbers = 1,
                    ErrorNumbers = 0
                };
                enreading1.Insert();
                return RedirectToAction(nameof(EnReadingList));
            }
            return View();

        }

前台


@model XCode.Membership.EnReadingQuestions
<div style="margin-top:30px;"></div>
<h1>新增英语阅读的题目</h1>
<hr />
<h4>注意我在后台用的|换为换行符,年级一定要是789这种小数字.</h4>
<hr />
<div class="row">
    <div class="col-md-12">
        <form asp-action="CreatEnReadingTimu" method="post">
            @Html.AntiForgeryToken()
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <input asp-for="EnReadingID" style='display:none' value=@ViewBag.TimuID>
            <div class="form-group">
                <label asp-for="SubjectText" class="control-label"></label>
                <input asp-for="SubjectText" class="form-control" />
            </div>
            <div class="form-group">
                <label asp-for="SubjectType" class="control-label"></label>
                <input asp-for="SubjectType" class="form-control" placeholder="0为选择,1为填空,3为不分析全对!" />
            </div>
            <div class="form-group">
                <label asp-for="EnglishDescription" class="control-label"></label>
                <textarea asp-for="EnglishDescription" class="form-control" style="height:162px;"></textarea>

            </div>
            <div class="form-group">
                <label asp-for="ChineseDescription" class="control-label"></label>
                <textarea asp-for="ChineseDescription" class="form-control" style="height:162px;"></textarea>
                @*<input asp-for="ChineseDescription" type="text" class="form-control" />*@
            </div>
            <div class="form-group">
                <label asp-for="Analysis" class="control-label"></label>
                <textarea asp-for="Analysis" class="form-control" style="height:160px;"></textarea>
            </div>
            <div class="form-group">
                <label asp-for="OptionA" class="control-label"></label>
                <textarea asp-for="OptionA" class="form-control" style="height:80px;"></textarea>
            </div>
            <div class="form-group">
                <label asp-for="OptionB" class="control-label"></label>
                <textarea asp-for="OptionB" class="form-control" style="height:80px;"></textarea>
            </div>
            <div class="form-group">
                <label asp-for="OptionC" class="control-label"></label>
                <textarea asp-for="OptionC" class="form-control" style="height:80px;"></textarea>
            </div>
            <div class="form-group">
                <label asp-for="OptionD" class="control-label"></label>
                <textarea asp-for="OptionD" class="form-control" style="height:80px;"></textarea>
            </div>
            <div class="form-group">
                <label asp-for="Answers" class="control-label"></label>
                <input asp-for="Answers" class="form-control" />
            </div>
            <div class="form-group">
                <label asp-for="Bei1" class="control-label"></label>
                <textarea asp-for="Bei1" class="form-control" style="height:80px;"></textarea>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />  <a asp-action="Index">Back to List</a>
            </div>
        </form>
    </div>
</div>

<div>

</div>
<div style="margin-bottom:70px;width:100%;"></div>

效果
image.png

下面就是如何出题的事宜了

  • 因为为了考虑手机使用,我个人思考,还是使用了分页,一页一题。
  • 将文章的内容用viewbag传前台,平时做成隐藏,需要时点开。
  • 出题时,我觉得按年级抽,不分单元了,这样稍好一些
  • 先随及抽题成这样拉

image.png
分页也弄好了,就是卡在思路这。
要是这个文章ID,不停的传来传去的,是不是好麻烦:)
后来想,最简单莫过于,做完所有小题,直接又回到最开始选择抽题界面,是按单元,还是按所有。