《2022年C#抽题软件开发课设 .pdf》由会员分享,可在线阅读,更多相关《2022年C#抽题软件开发课设 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、沈阳理工大学专用纸成 绩 评 定 表学生姓名班级学号专业计算机科学与技术课程设计题目概率论抽题软件评语组长签字:成绩日期2012 年 12 月日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 21 页 -沈阳理工大学专用纸课程设计任务书学院信息科学与工程学院专 业计算机科学与技术学生姓名班级学号课程设计题目概率论抽题软件实践教学要求与任务:概率统计抽题软件是用于概率统计课程的课后习题随机抽取的一个小软件。可以允许每名同学随机抽取4道题目,用于测试学生对该课程的掌握情况。系统采用 Visual C#.NET 2010 开发,支持文本文件的读取和保存。也可以支持数据库操作。工作计划与
2、进度安排:第 18 周星期一:设计任务分析和总体设计星期二:软件算法和流程设计星期三:软件编码实现星期四:软件总体调试星期五:交课程设计报告、答辩、验收程序指导教师:201 年月日专业负责人:201 年月日学院教学副院长:201 年月日名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 21 页 -沈阳理工大学专用纸目录一、软件功能.5 二、软件开发过程.8 2.1界面制作过程.8 2.2主要程序代码.17 三、心得与体会.25 3.1问题总结.253.2课设体会.26四、参考文献.26名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 21 页 -沈阳理工大学专用纸一、软
3、件功能概率统计抽题软件是用于概率统计课程的课后习题随机抽取的一个小软件。可以允许每名同学随机抽取若干题目,用于测试学生对该课程的掌握情况。系统采用 Visual C#.NET 2010 开发,支持文本文件的读取和保存。也可以支持数据库操作。二、软件开发过程2.1 界面制作过程.1、新建 C#2010 项目图1.建立新项目“ChooseProblems”打开Visual C#.NET 2010,从主菜单中选择“文件”/“新建”/“项目”,在弹出的“新建项目”对话框中,在左侧“已安装的模板”中选择 Visaul C#/Windows,在中间位置选择“WPF 应用程序”,在“名称”中输入项目名称“C
4、hooseProblems”,最后按确定按钮,建立新项目。如图 1 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 21 页 -沈阳理工大学专用纸2、添加命名空间3、在代码文件“MainWindow.xaml.cs”中,在类 MainWindow 中增加成员4、为项目添加配置文件App.config。在解决方案管理器中右击项目名,选择“添加”/“新建项”,打开“添加新项”对话框,选择“应用程序配置文件”,在名称处输入“App.config”,最后单击“添加”按钮,如图2 所示。打开配置文件,在 和 之间添加以下代码:其中WISECAT 代表机器名,student 是即将导入
5、的数据库。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 21 页 -沈阳理工大学专用纸图2 建立应用程序配置文件App.config 将配置文件引用到程序中。右击解决方案资源管理器的“引用”,选择“添加应用”,打开“添加引用”窗体,选择.NET 选项卡中的“System.Configuration”,最后单击确定。如图3 所示。图 3 添加配置文件的引用5、在 MainWindow 设计窗体中添加控件,构造界面名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 21 页 -沈阳理工大学专用纸从工具箱中选择合适的控件,加入窗体中。包括4 个用于显示题号的Label 控件
6、,字体设置醒目一些,名称分别为Lable1,Label2,Label3,label4;一个用于提示“双击右侧列表框开始选题”的提示性Label 控件,名称为 label5;一个用于调节速度的Slider 控件,名称为 slider1,最大值maximum 设为 100,最小值minimum 为0,value 值为50;一个用于提示每章题目个数的Label 控件,名称为label7;一个Image 控件,显示一幅图片,名称为image1,任意设置其source 属性;一个用于显示学生列表的ListBox 控件,名称为 listbox1;一个用于关闭的按钮控件,button1。其他指示性标签若干。
7、如图4所示。图4.主界面控件安排图6、响应关闭按钮事件双击关闭按钮,为按钮添加事件响应程序如下:private void button1_Click(object sender,RoutedEventArgs e)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 21 页 -沈阳理工大学专用纸 Close();7、为系统添加文件为 系 统 准 备 学 生 信 息 文 件students.txt 和 候 选 题 目 文 件problems.txt,其中problems.txt 文件每章之间加入一个空行,以便程序能够识别各章界限。将.txt文件至于系统的运行目录,即.exe 文件所在的
8、目录,一般为bin/debug 目录;如 需 支 持 数 据 库 操 作,还 要 将students.txt 文 件 导 入 到SQLEXPRESS 服务器中,数据库名称为student。8、为类MainWindows完成构造函数9、增加方法 ReadProblems 10、增加方法showProblems 和showIt11、增加方法 GetStudents,从文件中读取学生信息。12、选 中 listbox1 控 件,在 其 属 性 窗 口 中,查 找 事 件MouseDoubleClick,增加鼠标双击响应事件代码13、选中整个 MainWindow窗口,在其事件中查找KeyDown事件
9、,加入事件响应函数。14、加入保存抽题结果的方法saveResult 15、加入在 listbox1 状态下按空格也能停止抽题的响应事件PreviewKeyDown的响应程序,否则光标在listbox1 下按空格不能停止抽题名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 21 页 -沈阳理工大学专用纸16、增加 slider1 控件的滑动调速度响应事件ValueChanged 17、主窗口的标题设置为“概率统计抽题软件”,通过设置mainWindow 的 title 属性。系统最终运行结果如图5 所示2.2、主要程序代码1.在代码文件“MainWindow.xaml.cs”中添加
10、以下命名空间:using System.Timers;using System.IO;using System.Configuration;using System.Data.SqlClient;using System.Data;2.在类 MainWindow 中增加成员:private bool isInProgress=false;private Timer aTimer;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 21 页 -沈阳理工大学专用纸private int speed;private const int nChapters=4;private const i
11、nt maxPrbs=40;private string,problems=new stringnChapters,maxPrbs;private int nPrb=new intnChapters;Private string ConnectionStr=ConfigurationManager.AppSettingsConnString.ToString();SqlConnection Conn;private SqlDataAdapter StudentDA;private System.Data.DataSet StudentDS;3.为类MainWindows完成构造函数public
12、 MainWindow()speed=50;/speed:1.100 aTimer=new System.Timers.Timer();aTimer.Elapsed+=new ElapsedEventHandler(showProblems);aTimer.Interval=10+2*(100-speed);aTimer.AutoReset=true;aTimer.Enabled=true;/aTimer.Start();/开始aTimer.Stop();/停止名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 21 页 -沈阳理工大学专用纸11 InitializeCompone
13、nt();label1.Content=XXX;label2.Content=XXX;label3.Content=XXX;label4.Content=XXX;ReadProblems();label7.Content=;for(int i=0;i nChapters;i+)label7.Content+=第+System.Convert.ToString(i+1)+章共 +nPrbi.ToString()+道题;if(i nChapters-1)label7.Content+=,;if(!GetStudents()string SqlStr=select sno,sname,special
14、ty,classno from students11;StudentDS=GetData(SqlStr,students11);DataRow student=StudentDS.Tablesstudents11.Select();int nStu=0;foreach(DataRow stud in student)名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 21 页 -沈阳理工大学专用纸12 listBox1.Items.Add(studsno.ToString()+studsname.ToString();nStu+;MessageBox.Show(nStu.ToStr
15、ing()+students loaded from database.);4.增加方法 ReadProblems 的代码public void ReadProblems()/读取problems.txt文件函数 string strLine;for(int i=0;i0)problemsnChap,nPrbnChap+=strLine;else nChap+;/数据的第二部分 strLine=sr.ReadLine();sr.Close();catch(IOException ex)MessageBox.Show(An IOException has been thrown!);Messag
16、eBox.Show(ex.ToString();return;名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 21 页 -沈阳理工大学专用纸14 5.增加方法 showProblems 和 showIt 的代码public void showIt(int nn)/展示你要做的题目 this.label1.Dispatcher.Invoke(new Action()=this.label1.Content=problems0,nn0;);this.label2.Dispatcher.Invoke(new Action()=this.label2.Content=problems1
17、,nn1;);this.label3.Dispatcher.Invoke(new Action()=this.label3.Content=problems2,nn2;);this.label4.Dispatcher.Invoke(new Action()=this.label4.Content=problems3,nn3;);public void showProblems(object source,ElapsedEventArgs e)Random r=new Random();int nn=new intnChapters;for(int i=0;i 0)students=strLin
18、e.Split(new char t);listBox1.Items.Add(students0+students1);nStu+;strLine=sr.ReadLine();sr.Close();MessageBox.Show(nStu.ToString()+students loaded from txt file.);return true;名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 21 页 -沈阳理工大学专用纸17 catch(IOException ex)MessageBox.Show(students.txt not found!+ex.Message);re
19、turn false;9.查找 KeyDown事件的代码private void Window_KeyDown(object sender,KeyEventArgs e)if(isInProgress&(e.Key=Key.Space|e.Key=Key.Enter)label5.Content=listBox1.Items.GetItemAt(listBox1.SelectedIndex);isInProgress=false;aTimer.Stop();saveResult(label5.Content+t+label1.Content+t+label2.Content +t+label3
20、.Content+t+label4.Content);名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 21 页 -沈阳理工大学专用纸18 10.加入保存抽题结果的方法 saveResult的代码private void saveResult(string result)/保存抽题结果 try FileStream aFile=new FileStream(results.txt,FileMode.OpenOrCreate);aFile.Seek(0,SeekOrigin.End);/跳到文件尾部 StreamWriter sw=new StreamWriter(aFile);s
21、w.WriteLine(result+t 抽 题 时 间:+DateTime.Now.ToLocalTime();sw.Close();catch(IOException ex)MessageBox.Show(An IOException has been thrown!);MessageBox.Show(ex.ToString();return;名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 21 页 -沈阳理工大学专用纸19 11.停止抽题的响应事件PreviewKeyDown的响应程序代码private void listBox1_PreviewKeyDown(objec
22、t sender,KeyEventArgs e)/停止抽题响应事件 if(isInProgress)if(e.Key=Key.Space)label5.Content=listBox1.Items.GetItemAt(listBox1.SelectedIndex);isInProgress=false;aTimer.Stop();saveResult(label5.Content+t+label1.Content+t+label2.Content+t+label3.Content+t+label4.Content);12.调速度响应事件 ValueChanged 的代码private void
23、 slider1_ValueChanged(object sender,RoutedPropertyChangedEventArgs e)speed=Convert.ToInt32(slider1.Value);名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 21 页 -沈阳理工大学专用纸20 aTimer.Interval=10+2*(100-speed);/设置引发时间的间隔(毫秒)三、收获和体会1、收获在这次实训中,通过亲身经历与亲自动手实践,明白了概率抽题软件的操作过程,还明白了C#的操作过程。以及明白了其中重要函数的含义。2、体会在试验中遇到了很多的问题,都是以前没有
24、发现的,这些问题设计的方面很多,有以前的C+基础的,也有最近学习的数据结构的知识,我们虽然学了C#,但是因为是考察课,没有认真学习,刚开始C#的软件都不会用。通过实验的设计,让我发现了自己的不足,现在已经学会了很多C#的很多知识。而且发现了自己在学习知识上面的漏洞,自己在细节方面的考虑还不够全面,很多细节都是通过调试才发现的,希望通过弥补这些发现的漏洞,提高自己的专业知识水平。四、参考文献1、概率统计抽题软件开发案例2、百度搜索名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 21 页 -沈阳理工大学专用纸21 3、C#大学实用教程名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 21 页 -