问题描述
我在做一个VB.NET和SQLSERVER的题库管理系统毕业设计其他功能模块都已经完成,就差最后的自动生成试卷和把生成的试卷生成WORD文档,并可以选择存放的文件夹因为实力有限,明天要交,想找看看有没有人愿意帮我完成...需要用的表有三个:1.课程表:系别名课程名2.章节表:章节名3.试题表:题号题型章节难度分值题目答案选中4题型表:题号题型分值通过建立三个commobox来分别连接课程表的系别名课程名2.章节表的:章节名通过系别名和课程名值来确定确定选题的范围,通过章节名来确定所选的章节TEXTBOX1输入考卷的分值,并把这值依次的扣除题型表的分值(这个分值是每个题型的总分),一直扣到没分退出每扣一次就执行该题型的分值扣除已经随即抽取的该题型的题目扣到没分退出继续扣出下一题型的分把所有已经抽出来的试题存放到一个新建的表中生成试卷后调用刚建的表来生成WORD文档并删除新建的表,生成成功后保存这是我的思路如果可以帮忙的话帮我写下好吗?我一直写不出来如果很复杂的话也可以换别的只要可以自动生成试卷和生成WORD就可以谢谢了付上50分
解决方案
解决方案二:
占个位置,出去吃饭先!
解决方案三:
自己努力,技术问题可在CSDN问
解决方案四:
哎关键是我写一了一天了都写不出来看一下午的资料也没看懂啊所以才想让人帮忙啊我明天早上就要交了哎
解决方案五:
这样帮你是在害你哦。
解决方案六:
关键是明天要要了啊不然我宁肯自己慢慢做我现在是真的不知道该怎么写怎么实现循环我才用VB.NET没几天啊
解决方案七:
生成试卷到不难。归好类型然后随机取就成!至于显示样式控制比较麻烦,这个比较难得操作,最好是先建一个模板套用模板样式总体上也算比较麻烦的一个要求!关键是科学公式你如何录入,这个才是试卷最麻烦的地方如果抛开公式这块的话,还是建议这么操作先生成xml,然后在从xml转到doc,xml转doc的方案还是有一堆的ps:另外可以参考一个控件aspose.words
解决方案八:
哎我都不懂你在说什么一点都不懂
解决方案九:
我在做一个VB.NET和SQLSERVER的题库管理系统毕业设计其他功能模块都已经完成,就差最后的自动生成试卷和把生成的试卷生成WORD文档,并可以选择存放的文件夹因为实力有限,明天要交,想找看看有没有人愿意帮我完成...唉!真不知道现在的大学生都在忙什么?我读书时没网吧、没手机、没电脑、没电视、没MM.........现在还觉得读书挺好。
解决方案十:
哎这个语言没学过自己边做边学这个自动生成没找到例子
解决方案十一:
就你的代码表达出来的理解深度而言,我觉得你还需在好多地方下功夫才行.代码本身可以反映出一个人各方面的知识,包括对人生的处事.
解决方案十二:
祝进步,也祝你顺利
解决方案十三:
我知道可是都不知道需要怎么写也没人给个提示或起个头全是说教的没有人愿意这样被人说哎
解决方案十四:
我说了,工作量比较大,也没有调试的环境.代码量,我估计是上千行以上的.
解决方案十五:
单是实现这个功能,我也需要腾出一个星期的时间才行.真对不起,帮不上.
其他方案:
http://www.cnblogs.com/supersand/archive/2005/12/20/300711.html上面是一个操作word文档的类,可以参考一下,是由C#翻译过来的
其他方案:
PrivatecolTextStyle,styTextColAsDataGridTextBoxColumnPrivatecolBoolStyleAsDataGridBoolColumnPrivatestydgStyleAsDataGridTableStylePrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadOpenDB()EndSub'1.课程表:系别名课程名2.章节表:章节名3.试题表:题号题型章节难度分值题目答案选中4题型表:题号题型分值'通过建立三个commobox来分别连接课程表的系别名课程名2.章节表的:章节名通过系别名和课程名值来确定确定选题的范围,通过章节名来确定所选的章节'TEXTBOX1输入考卷的分值,并把这值依次的扣除题型表的分值(这个分值是每个题型的总分),一直扣到没分退出'每扣一次就执行该题型的分值扣除已经随即抽取的该题型的题目扣到没分退出'继续扣出下一题型的分把所有已经抽出来的试题存放到一个新建的表中'創建風格PrivateSubCreatedgStyle()Me.DataGrid1.TableStyles.Clear()stydgStyle=NewDataGridTableStylestyTextCol=NewDataGridTextBoxColumnstyTextCol.Alignment=HorizontalAlignment.LeftstyTextCol.HeaderText="題號"styTextCol.MappingName="ID"styTextCol.NullText=""styTextCol.ReadOnly=FalsestyTextCol.Width=95stydgStyle.GridColumnStyles.Add(styTextCol)styTextCol=NewDataGridTextBoxColumnstyTextCol.Alignment=HorizontalAlignment.LeftstyTextCol.HeaderText="分值"styTextCol.MappingName="fenzhi"styTextCol.NullText=""styTextCol.ReadOnly=FalsestyTextCol.Width=60stydgStyle.GridColumnStyles.Add(styTextCol)stydgStyle.AllowSorting=FalsestydgStyle.MappingName="DataList"stydgStyle.BackColor=System.Drawing.Color.FromArgb(242,255,242)stydgStyle.PreferredRowHeight=15stydgStyle.ReadOnly=FalsestydgStyle.RowHeaderWidth=10DataGrid1.TableStyles.Add(stydgStyle)DataGrid1.ReadOnly=TrueEndSubPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickCallFindTimu(Me.ComboBox1.Text.Trim,Me.ComboBox2.Text.Trim)CallCheckTiMu(Me.TextBox1.Text.Trim)EndSubPrivateSubFindTimu(ByValkechengAsString,ByValzhangjieAsString)Dimdstemp01AsDataSetDimdatemp01AsOleDb.OleDbDataAdapterDimrw01AsDataRowdstemp01=NewDataSetdatemp01=NewOleDb.OleDbDataAdapter("select*from[timu]where[kecheng]='"&kecheng&"'and[zhangjie]='"&zhangjie&"';",cnnRDB)datemp01.Fill(dstemp01,"datalist")Me.DataGrid1.DataSource=dstemp01.Tables("datalist")EndSub'題號,分值PrivateSubCheckTiMu(ByValfenzhiAsInteger)DimromAsNewRandomDimromcountAsIntegerDimstrAsStringDimarrAsNewArrayListDimrowAsDataRowDimLeaveSumAsIntegerDimtableAsDataTableDimNum,fen,numFlagAsIntegerDimTiMuID,sqlAsStringtable=CType(Me.DataGrid1.DataSource,DataTable)Num=table.Rows.CountRandomize()LeaveSum=Int(Me.TextBox1.Text.Trim)'獲取題號While(True)romcount=rom.Next(1,Num)'題號隨機選擇IfNotarr.Contains(romcount)Then'不在選擇的題號裡面numFlag+=1row=table.Rows(romcount-1)fen=row("fenzhi")IfLeaveSum-fen>=0Then'判斷剩餘分值arr.Add(romcount)LeaveSum=LeaveSum-fenEndIf'arr.Add(romcount)EndIfIfLeaveSum=0Then'剩餘分值剛好用完'此處有個問題,就是在選取最後一個題目時,無論題庫的的哪個題目的分值,'都無法滿足使剩餘分值為0,將進入死循環ExitWhileEndIfIfnumFlag=NumThen'如果遍歷題庫,無法滿足剛好用完分值,重新開始選題'當然,題庫題目太少,無法滿足給出的分值,也將進入死循環LeaveSum=Int(Me.TextBox1.Text.Trim)numFlag=0arr.Clear()EndIfEndWhile'選取題號后'MsgBox(arr.Count)TiMuID=arr(0)ForxAsInteger=1Toarr.Count-1TiMuID=TiMuID&","&arr(x)Nextsql=String.Format("select*from[timu]where[id]in({0});",TiMuID)Dimdstemp01AsDataSetDimdatemp01AsOleDb.OleDbDataAdapterDimrw01AsDataRowdstemp01=NewDataSetdatemp01=NewOleDb.OleDbDataAdapter(sql,cnnRDB)datemp01.Fill(dstemp01,"datalist")Me.DataGrid2.DataSource=dstemp01.Tables("datalist")Me.TextBox2.Text=CInt(Me.TextBox2.Text.Trim)-CInt(Me.TextBox1.Text.Trim)Me.TextBox1.Text=""'其他的我不操作了,換另一個章節,選取題目,你就設置一個公共的dataset,datagrid2就用公共的的dataset作為數據源'一行行的增加記錄,記得不要清空原來選取的題目'比如以下格式'DimrwAsDataRow'rw=dstemp01.Tables("datalist").NewRow'rw("字段名")=""'dstemp01.Tables("datalist").Rows.Add(rw)'生成wordPrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickDimowordAsWord.ApplicationDimodocAsWord.DocumentDimotableAsWord.TableDimopara1AsWord.ParagraphDimopara2AsWord.ParagraphDimopara3AsWord.ParagraphDimopara4AsWord.ParagraphDimorngAsWord.RangeDimoshapeAsWord.InlineShapeDimochartAsObjectDimposAsDoubleDimrw01AsDataRowDimtableAsDataTable'启动MicrosoftWord并打开文件模板oword=CreateObject("Word.application")oword.Visible=Trueodoc=oword.Documents.Add'在文件的开头处插入一个段落opara1=odoc.Content.Paragraphs.Addopara1.Range.Text="XX考試試題"opara1.Range.Font.Bold=Trueopara1.Format.SpaceAfter=24'在段落之后24Pt空格opara1.Range.InsertParagraphAfter()'在文件的尾端插入一个段落'**endoFdoc是一个事先定义的书签table=CType(Me.DataGrid2.DataSource,DataTable)ForxAsInteger=0Totable.Rows.Count-1rw01=table.Rows(x)opara2=odoc.Content.Paragraphs.Add(odoc.Bookmarks.Item("endoFdoc").Range)opara2.Range.Text=rw01("timu")opara2.Format.SpaceAfter=6opara2.Range.InsertParagraphAfter()Nextorng=odoc.Bookmarks.Item("endofdoc").Rangeorng.InsertParagraphAfter()orng.InsertAfter("结束...ByeBye...")odoc.PrintPreview()odoc=Nothingoword=NothingEndSubEndSub
我順便做了下,還真累,號多東西要考慮到我精簡了很多。這裡有主要實現的思路,自己看看吧
其他方案:
需要源碼的話,你給我個郵箱,我把它發給你,我只是實現了按課程,章節,選取題目。然後生成word,這把你的要求精簡了,選取一個章節的題目后,還要能繼續選取別的章節的,你應該在原來選取的試題基礎上增加內容按系別選取,等等,我都沒時間去弄,不過,這個實現起來都不困難的!自己去做吧!
其他方案:
引用10楼lzmtw的回复:
就你的代码表达出来的理解深度而言,我觉得你还需在好多地方下功夫才行.代码本身可以反映出一个人各方面的知识,包括对人生的处事.
說的好,!!!!!!!!!!!
其他方案:
呵呵,我自己刚好前段时间写了一个专门生成word报告的系统,封装了一个自己写的word处理类,不过上面那位仁兄给你的代码思路已经很不错了,基础比较好的话,参考他的就能做出来
其他方案:
存在一個bug,romcount不一定是題目的真正ID,需要進行轉換,剛剛才想到!
其他方案:
我也想要啊
其他方案:
轻松控制wordhttp://blog.csdn.net/mohongmao/archive/2008/12/05/3446724.aspx