2014年数据结构毕业课程设计题目及报告范例

合集下载

数据结构与算法课程设计题目[范文大全]

数据结构与算法课程设计题目[范文大全]

数据结构与算法课程设计题目[范文大全]第一篇:数据结构与算法课程设计题目数据结构与算法课程设计题目1.成绩管理问题描述:给出n个学生的考试成绩表,成绩表包括学生的学号、姓名、考试成绩(高等数学、英语、物理),设计一个简单的成绩管理程序。

基本要求:(1)建立成绩表,能够插入、删除、修改学生的成绩记录;(2)按任一单科成绩排序;(3)计算每名学生的平均成绩;(4)统计任一单科成绩不及格的学生人数, 输出不及格人数及不及格的学生名单(5)根据平均成绩将成绩表按由高到低的次序排列,统计每名学生在考试中获得的名次,分数相同的为同一名次,按名次输出成绩表。

(6)成绩表保存在文件中, 可以从文件读取数据。

测试数据:学生可以根据自己班级的考试成绩单,任意截取一部分做为测试数据 2.一元多项式简单计算问题描述:设计一个简单一元多项式计算器。

基本要求:(1)输入并建立多项式;(2)输出多项式;(3)两个多项式相加,输出结果多项式;(4)两个多项式相减,输出结果多项式。

提高要求:可以根据输入变量的值,计算出多项式的结果,且算法的效率高。

测试数据:可任意选取两个一元多项式,可以是一般的多项式,也可以是稀疏多项式。

3.舞伴问题问题描述:一班有m个女生、n个男生(m不等于n), 举办一场舞会.男女生分别编号坐在舞池两边的椅子上,每曲开始时, 依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴,设计一个程序模拟舞伴配对过程。

基本要求:输入男、女学生的姓名、性别,由程序自动为男女生编号,可以顺序编号,也可以随机编号,输出每曲配对情况(包括男、女生的姓名、性别和编号)。

原始数据和结果数据要保存到文件中。

测试数据:分别选择男生多于女生、女生多于男生、男女生相等的三组测试数据提高要求:计算出任意一位男生(编号为X)和任意一位女生(编号为Y), 在第K曲配对跳舞的情况。

4.文学研究助手(*)问题描述:文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。

2014-数据结构课程设计题目

2014-数据结构课程设计题目

1、运动会分数统计问题描述:参加运动会的n个学校编号为1~n。

比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。

由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。

哪些项目取前五名或前三名由学生自己设定。

写一个统计程序产生各种成绩单和得分报表。

基本要求:(1)各项目结束时,输入前三名或前五名的项目编号、运动员姓名、校名和名次(成绩);(2)产生各学校的成绩单,内容包括每个学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分,并统计各学校总分;(3)可以按学校编号、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;(5)可以按项目编号查询取得前三或前五名的学校。

2、集合的并、交和差运算的程序问题描述:编制一个能演示执行集合的并、交和差运算的程序。

基本要求:⑵集合的元素限定为小写字母符[′a′….′z ′],集合的大小n<27。

⑵集合输入的形式为一个以"回车符"为结束标志的字符串,串中字符顺序不限,且允许出现重复字符或非法字符,程序应能自动滤去。

⑶输出的运算结果字符串中将不含重复字符或非法字符。

⑷演示程序以用户和计算机的对话方式执行。

3、长整数的加法运算问题描述:设计一个实现任意长的整数进行加法、减法运算的演示程序。

基本要求:1利用链表实现长整数的存储,每个结点含一个整型变量。

2任何整型变量的范围是-(2^15-1)~(2^15-1)。

3输入和输出形式按照中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。

如:-2345,6789,3211;4、一元多项式计算器问题描述:设有一元多项式A m(x) 和B n(x).A m(x) = A0+A1x1+A2x2+A3x3+… +A m x mB n(x) = B0+B1x1+B2x2+B3x3+… +B n x n试求M(x)= A m(x)+B n(x)、M(x)= A m(x)-B n(x)和M(x)= A m(x)×B n(x)。

数据结构课程设计报告

数据结构课程设计报告

数据结构课程设计报告班级:____软件121_____________ 姓名:___________________指导教师:__________________成绩:__________________________信息工程学院2014 年 1 月9 日题目11.需求分析简单的员工管理系统每一个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等,系统的功能包括:(1)查询:按特定条件查找员工。

(2)修改:按编号对某个员工的某项信息进行修改(3)排序:按特定条件对所有员工的信息进行排序(4)插入:按编号删除已离职的员工的信息。

(5)删除:按编号删除已离职的员工信息。

2.概要设计java.io.Serializable // 实现可比较和序列化接口public Friend(String name, String code)//构造方法public int compareTo(Friend f)//比较两个对象大小,实现Comparable接口public Object[] toArray() //将对象的两个成员变量保存在对象数组中public StaffManagementSystem(String filename) //构造图形用户界面public StaffManagementSystem()//员工管理系统private void readFromFile() //从指定文件中读取已有对象private void getFamilyName() //JList添加其中所有姓氏public void valueChanged(ListSelectionEvent e)//列表框的选择事件处理方法public void actionPerformed(ActionEvent e) //单击事件处理方法public void windowClosing(WindowEvent e)//关闭窗口事件处理方法3.详细设计//Friend.javapublic class Friend implements parable<Friend>, java.io.Serializable // 实现可比较和序列化接口{private String name; //姓名private String code; //编号public Friend(String name, String code)//构造方法{ = name;this.code = code;}public String getName() //获得姓名{return ;}public String getcode() //获得电话号码{return this.code;}public String toString(){return "("++", "+this.code+")";}public int compareTo(Friend f)//比较两个对象大小,实现Comparable接口 { //指定排序次序if (!.equals())return pareTo(); //两人以姓名为序elsereturn pareTo(f.code); //同一人以电话号码为序 }public Object[] toArray() //将对象的两个成员变量保存在对象数组中{Object[] vars = new Object[2];vars[0] = ;vars[1] = this.code;return vars;}}//StaffManagementSystem.javaimport java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;import java.io.*;public class StaffManagementSystem extends JFrame implements ListSelectionListener, ActionListener, WindowListener{private String filename; //文件名private TreeSet<Friend> tbook; //使用一个树集合存储多个Friend对象private JList list; //列表框private DefaultListModel listModel; //默认列表框模型private JTable table; //表格组件private DefaultTableModel tableModel; //默认表格模型private JComboBox combobox_name; //姓名组合框private DefaultComboBoxModel comboModel; //组合框模型,选择姓氏private JTextField text_code; //编号文本行public StaffManagementSystem(String filename) //构造图形用户界面{super("员工管理系统");this.setBounds(300,300,450,300);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.addWindowListener(this);//注册窗口事件监听器JSplitPane split_h=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);//水平分割窗格split_h.setDividerLocation(40); //设置垂直分隔条的位置this.getContentPane().add(split_h);//初始化一个容器,在容器上添加字符串组(无该语句则白屏)JSplitPane split_v=new JSplitPane(JSplitPane.VERTICAL_SPLIT);//垂直分割窗格split_v.setDividerLocation(180); //设置水平分隔条的位置this.filename = filename;tbook = new TreeSet<Friend>();this.readFromFile(); //从指定文件中读取已有对象信息this.listModel = new DefaultListModel(); //默认列表框模型this.listModel.addElement("姓氏");this.list = new JList(listModel); //创建列表框this.list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置单选模式,默认为多选this.list.addListSelectionListener(this); //列表框注册选择事件监听器split_h.add(new JScrollPane(this.list)); //添加在滚动窗格中split_h.add(split_v);String[] columns={"姓名","编号","性别","诞日","学历","职务","电话","住址"};//表格各列的中文标题this.tableModel=new DefaultTableModel(columns,0);//默认表格模型,指定列标题,0行this.table=new JTable(tableModel); //创建空表格,有列标题this.list.setSelectedIndex(0);//选中列表框第一项,执行valueChanged()方法split_v.add(new JScrollPane(table));//以下面板包括组合框、文本行和添加、删除、查找等按钮JPanel friendpanel=new JPanel(new GridLayout(2,1));//将下框的内容分成2行1列split_v.add(friendpanel);JPanel panels[]={new JPanel(), new JPanel()};for (int i=0; i<panels.length; i++)friendpanel.add(panels[i]);panels[0].add(new JLabel(columns[0]));boModel = new DefaultComboBoxModel(); //默认组合框模型 combobox_name = new JComboBox(boModel);combobox_name.setEditable(true);panels[0].add(combobox_name);panels[0].add(new JLabel(columns[1]));this.text_code = new JTextField("1", 12);//编号长度panels[0].add(text_code);this.getFamilyName(); //列表框和组合框添加其中所有姓氏String buttonstr[]={"添加","删除","按编号查找"};JButton buttons[] = new JButton[buttonstr.length];for (int i=0; i<buttons.length; i++){buttons[i] = new JButton(buttonstr[i]);panels[1].add(buttons[i]);buttons[i].addActionListener(this);}this.setVisible(true);}public StaffManagementSystem(){this("friends.dat"); //指定默认文件名}private void readFromFile() //从指定文件中读取已有对象{try{FileInputStream fin=new FileInputStream(this.filename); //文件字节输入流 ObjectInputStream objin=new ObjectInputStream(fin);//对象字节输入流while (true) //输入流未结束时try{tbook.add((Friend)objin.readObject()); //读取一个对象添加到系统}catch (Exception e)//捕获ClassNotFoundException和EOFException异常{break;}objin.close(); //先关闭对象流fin.close(); //再关闭文件流}catch (IOException ioe){} //指定文件不存在时,表格为空}private void getFamilyName() //JList添加其中所有姓氏{if (!tbook.isEmpty()){Iterator it=tbook.iterator(); //返回一个迭代器对象while (it.hasNext()) //若有后继元素,使用迭代器遍历集合{Friend f=(Friend)it.next(); //返回后继元素String familyname=f.getName().charAt(0)+"";//获得姓氏if (!this.listModel.contains(familyname)){this.listModel.addElement(familyname); //列表框模型添加不重复数据项 boModel.addElement(familyname); //组合框模型添加不重复数据项}}}}public void valueChanged(ListSelectionEvent e)//列表框的选择事件处理方法 {String familyname=(String)list.getSelectedValue();//返回列表框选中数据项对象if (!tbook.isEmpty() && familyname!=null && familyname!="") //以选中姓氏更新表格{for (int i=this.tableModel.getRowCount()-1; i>=0; i--)//清空表格 this.tableModel.removeRow(i);Iterator it = tbook.iterator();while (it.hasNext()) //在系统中查找指定姓氏{Friend f = (Friend)it.next();if (familyname=="姓氏" || f.getName().charAt(0)==familyname.charAt(0))this.tableModel.addRow(f.toArray()); //表格添加一行,参数数组指定各列值}}}public void actionPerformed(ActionEvent e) //单击事件处理方法{if (e.getActionCommand().equals("添加")) //单击添加按钮{String name=(String)combobox_name.getSelectedItem();String code=text_code.getText();Friend f = new Friend(name, code);if (!name.equals("") && !tbook.contains(f))//不能插入姓名空串和重复对象{tbook.add(f);//添加对象,TreeSet不插入重复元素,没提示也不抛出异常 String familyname = name.charAt(0)+"";//返回姓名的第一个字符 if (list.getSelectedValue().equals(familyname))tableModel.addRow(f.toArray());else{if (!listModel.contains(familyname)) //列表框中添加不重复元素{listModel.addElement(familyname);comboModel.addElement(familyname);}list.setSelectedValue(familyname,true);//设置列表框选中项}}elseJOptionPane.showMessageDialog(this, "不能添加姓名空串或重复对象"+f.toString());}if (e.getActionCommand().equals("删除")){if (tbook.isEmpty())JOptionPane.showMessageDialog(this, "表格空,不能删除数据项。

《数据结构》课程设计题目

《数据结构》课程设计题目

《数据结构》课程设计题目《数据结构》课程设计题目课程设计题一:学生成绩管理系统设计目的:1.2.3. 掌握线性链表的建立。

掌握线性链表的基本操作。

掌握查找的基本算法。

设计内容:利用线性链表实现学生成绩管理系统,具体功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出,并能在屏幕上输出操作前后的结果。

设计要求:1.2.3.写出系统需求分析,并建模。

编程实现,界面友好。

输出操作前后的结果。

课程设计题二:停车场管理系统设计目的:1.2.3.4. 掌握栈和队列的建立。

掌握栈和队列的基本操作。

深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。

加深对栈和队列的理解和认识。

设计内容:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。

停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。

每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

编制一程序模拟该停车场的管理。

设计要求:1. 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

2. 每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。

3. 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费,功能可自己添加)。

数据结构课程设计题目(2014春季25题)

数据结构课程设计题目(2014春季25题)

数据结构课程设计题目题目1:设计链表结构的相关函数库,以便在程序设计中调用。

要求:(1)实现链表的各种基本函数以及常用函数;(2)给出1-2个例子,通过调用自己的库函数来实现问题的求解。

题目2:设计顺序表结构的相关函数库,以便在程序设计中调用。

要求:(1)实现顺序表的各种基本函数以及常用函数;(2)给出1-2个例子,通过调用自己的库函数来实现问题的求解。

题目3:设计程序以实现任意两个高次多项式的加法和减法运算。

要求:(1)所设计的数据结构应尽可能节省存储空间;(2)程序的运行时间尽可能少。

题目4:设计一个模拟计算机器程序,要求能对包含加、减、乘、除、括号运算符及SQR 和ABS函数的任意整型表达式进行求解。

要求:运算前应先检查有关运算条件,并对错误产生报警。

题目5:设计二叉链表结构的相关函数库,以便在程序设计中调用。

要求:(1)实现二叉树的各种基本函数以及常用函数;(2)给出1-2个例子,通过调用自己的库函数来实现问题的求解。

题目6:设计树结构的相关函数库,以便在程序设计中调用。

要求:(1)包括树的存储结构及各种基本函数以及常用函数;(2)给出1-2个例子,通过调用自己的库函数来实现问题的求解。

题目7:设计程序以实现构造哈夫曼树的哈夫曼算法。

要求:求解所构造的哈夫曼树的带全路径长度。

题目8:设计图结构的相关函数,以便在程序设计中调用。

要求:(1)实现图的存储结构及各种基本函数以及常用函数;(2)给出1-2个例子,通过调用自己的库函数来实现问题的求解。

题目9:设计程序完成如下功能:对给定的图和起点,产生其所有的深度优先遍历序列。

题目10:设计程序完成如下功能:对给定的网和起点,实现求解最小生成树的Prim算法。

题目11:设计程序完成如下功能:对给定的网和起点,实现求解最小生成树的Kruskal算法。

题目12:设计程序完成如下功能:对给定的网和起点,用Prim算法的基本思想求解其所有的最小生成树。

题目13:设计程序完成如下功能:对给定的网和起点,用Kruskal算法的基本思想求解其所有的最小生成树。

《数据结构》课程设计报告范本(doc 8页)

《数据结构》课程设计报告范本(doc 8页)

《数据结构》课程设计报告范本(doc 8页)《数据结构》课程设计报告一、课程设计的内容、要求1 线性表的另一种实现。

对顺序表空间被耗尽问题的一个解决办法是:当数组溢出时,用一个更大的数组替换该数组。

一个较好的法则是:当出现溢出时,数组长度加长一倍具有较高的时间和空间效率。

参照教材中顺序表的有关内容,按上面的要求实现顺序表,并测试当数组溢出时你的实现的运作情况。

二、所采用的数据结构ADT List{数据对象: D = {a i|a i ∈ElemSet, i=1,2…n>=0}数据关系: R1={<a i-1, a i>|a i-1, a i∈D, i=1,2,…,n}基本操作:void IniList(SqList& L);void DestroyList(SqList& L);bool ListEmpty(SqList L);int ListLength(SqList L);void GetElem(SqList L, int i, Elem &e);bool PriorElem(SqList L, Elem cur_e, Elem &pre_e);bool NextElem(SqList L, Elem cur_e, Elem &next_e);void ListInsert(SqList &L, int i, Elem e);void ListDelete(SqList &L, int i);void ClearList(SqList& L);}三、主要模块(或函数)及其功能typedef struct LIST{ElemType *data;int size;int max_size;}LIST;void InitList(LIST *list)//初始化{list->data = (int*)malloc(sizeof(ElemType)*INIT_SIZE);list->size = 0;list->max_size = INIT_SIZE;}void DestroyList(LIST &list){}bool NextElem(LIST list,int cur_e,int &next_e)//后继{if(cur_e < 0 || cur_e > list.size) return false;else{next_e = cur_e + 1;return true;}}void Insert(LIST *list,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}list->data[list->size] = value;list->size++;}void Insert_Back(LIST *list,int idx,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}if(idx>list->size){list->data[list->size] = value;}else{int i;for(i=list->size;i>idx;i--){list->data[i] = list->data[i-1];}list->data[idx] = value;}list->size++;}void ListDelete(LIST *list,int i,ElemType *e)//删除一个元素{int j;*e=list->data[i];for(j=i+1;j<=list->size-1;j++)list->data[j-1]=list->data[j];list->size--;}void Print_list(LIST *list){int i;if(list->size == 0){cout<<"当前线性表内没有元素。

《数据结构》课程设计报告迷宫求解

《数据结构》课程设计报告迷宫求解

课程设计任务书题目:迷宫设计学号:姓名:专业:网络技术课程:数据结构指导教师:职称:讲师完成时间:2013年12 月----2014 年1 月年月日课程设计任务书及成绩评定目录一.迷宫求解································(1)问题描述···········································(2)需求分析及设计思路·································(3)数据结构定义········································(4)系统功能模块介绍····································(5)源代码··············································(6)运行结果及调试分析································(7)课程设计总结·····························一.迷宫求解(1)问题描述输入一个任意大小的迷宫数据,用递归和非递归两种方法求出一条走出迷宫的路径,并将路径输出。

数据结构课程设计

数据结构课程设计

西安文理学院软件学院课程设计报告设计名称:数据结构课程设计设计题目:实现一个n*m的扫雷程序学生学号:1402120427专业班级:12级软件工程4班学生姓名:王森学生成绩:指导教师(职称):袁溪讲师课题工作时间:2014.6.16 至2014.6.27说明:1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个学生。

2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。

3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。

答辩由指导教师实施。

4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设计的情况另行规定。

5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。

软件学院课程设计任务书指导教师:院长:日期:2014年6月16日软件学院课程设计进度安排表学生姓名:王森学号:1402120427 专业:软件工程班级:12级4班指导教师签名:2014年6月16日成绩评定表学生姓名:王森学号:1402120427 专业:软件工程班级:12级4班摘要摘要:扫雷是一种具有迷惑性的对记忆和推理能力的简单测试,它是长久以来最欢迎的Windows 游戏之一。

游戏目标:找出空方块,同时避免触雷。

游戏主区域由很多个方格组成。

使用鼠标随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开。

例如,方格中出现1,说明上下左右及斜角合计有一颗雷,依次类推,2则有2颗,3则有3颗。

关键词:Java;扫雷;windows系统环境西安文理学院计算机科学系课程设计报告目录摘要 (II)第一章课题背景(或绪论、概述) (1)1.1 游戏功能简介 (2)1.2 设计背景 (2)第二章设计简介及设计方案论述 (3)2.1 需求分析 (3)2.2 总体设计 (3)第三章详细设计 (4)3.1 主函数入口 (5)3.2 界面布局设定 (6)3.3 对话框设定 (7)3.4 扫雷程序设定 (11)第四章设计结果及分析 (17)4.1 主界面 (18)4.2 对话框界面 (18)4.3 扫雷界面 (19)总结 (20)参考文献 (21)附录主要程序代码 (22)第一章课题背景(或绪论、概述)这一章应说明本设计课题的背景、目的、意义、应解决的主要问题及应达到的技术要求;本设计的基本理论依据和主要工作内容。

数据结构课程设计——报告

数据结构课程设计——报告

数据结构课程设计——报告(样例)《数据结构与算法》课程设计报告王婧、龚丹、宋毅编写题目:航空订票管理系统学期: 2014秋班号:学号:姓名:成绩:哈尔滨华德学院电子与信息工程学院2014年12月一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)(一)课程设计目的(不少于100字)1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统。

2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

具体的有:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。

(二)题目要求(不少于100字)1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名和所需数量)。

2.系统能实现的操作和功能如下:(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。

若需要,可登记排队候补;(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

二、实训环境配置Windows系统CodeBlocks三、设计正文1.需求分析本订票系统能够实现全部航线信息的浏览功能、订票客户信息的查询功能、单条航线查询功能、订票功能和退票功能。

数据结构课设报告

数据结构课设报告

课程设计设计题目:数据结构与算法的设计与实现系别:信息学院班级:学生:学号:指导教师:职称:讲师讲师起止日期:2014年06月23日起——至2014年07月04 日止课程设计任务书课程设计题目:看病排队系别:信息工程系班级:学生:学号:指导教师:职称:讲师讲师课程设计进行地点:实训F座任务下达时间:2014 年06月23 日起止日期:2014年06月23日起---至2014年07月04日止教研室主任:年月日批准一、课程设计的原始资料及依据看病排队问题描述医院各科室的医生有限,因此病人到医院看病时必须候诊,而病人病情有轻重之分,不能简单地根据先来先服务的原则进行诊断治疗,所以医院根据病人的病情规定了不同的优先级别。

医生在治疗时,总是选择优先级别高的进行诊治,如果遇到两个级别相同的病人,则选择先来排队的病人进行诊治。

二、课程设计主要容及要求看病排队容及要求用队列模拟上述看病排队候诊的问题,建立两个队列分别对应两个不同的优先级别,按照从终端读入的输入数据的方式进行模拟管理。

(1)新的病人挂号然后加入队列候诊,护士根据病情指定其优先级。

(2)医生根据优先级别为病人进行诊治。

(3)病人出队。

三、对课程设计说明书撰写容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要容包括:设计题目、设计目的、设备器材、设计原理及容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。

一般不应少于3000字。

2.在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。

应做到文理通顺,容正确完整,书写工整,装订整齐。

3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。

设计小组评语处注明设计组编号、设计组组长、设计组成员,并由设计组组长给出评语。

4.课程设计说明书手写或打印均可。

数据结构课程设计报告

数据结构课程设计报告

课程设计报告数据结构课程设计:DIJKSTRA算法学院计算机与通信工程专业名称物联网工程班级学号学生姓名指导教师2014年07 月08日目录DIJKSTRA算法1 基本功能描述1.1题目:对任意图,选择合适的数据结构表示图,在此基础上实现求解最短路径的Dijkstra算法。

1.2要求:对所设计的图的数据结构,提供必要的基本功能。

1.3具体任务:建立图的表示模块;在建立图之后从单源点开始求最短路径,并显示出最短路径长度及路径途径!2 设计思路2.1数据存储结构(1)本次课设参考用图如下(2)图的存储方式以邻接矩阵存储无向图,表示如下(3)达成目的如下,找到V0到V8的最短路径2.2 DIJKSTREA算法思想(1)贪心选择性质Dijkstra算法是应用贪心算法设计策略的一个典型例子。

它所做的贪心选择是从V-S中选择具有特殊路径顶点u,从而确定从源到u的最短路径长度Dist[u]。

(2)最优子结构性质算法中确定的dist[u]确实是当前从源到顶点u的最短特殊路径长度。

(3)计算复杂性对于一个具有n个顶点和e条边的带权有向图,如果用带权临接矩阵表示这个图,那么Dijkstra算法的主循环体需要O(n)时间。

这个循环需要执行n-1次,所以完成循环需要O(n*n)。

3 软件设计4 结论与心得体会此次数据结构课程设计,我们学会了。

5 参考文献《计算机算法设计与分析》《算法导论》《大话数据结构》6 附录6.1 调试结果6.2 源代码#include"stdio.h"#include"stdlib.h"#define MAXEDGE 20 #define MAXVEX 20 #define INIT 65535typedef struct{int vexs[MAXVEX];int arc[MAXVEX][MAXVEX];int numVertexes,numEdges;}MGraph;typedef int Patharc[MAXVEX];/* 用于存储最短路径下标的数组*/ typedef int ShortPathTable[MAXVEX];/* 用于存储到各点最短路径的权值和*//* 构件图*/void CreateMGraph(MGraph*G){int i, j;/* printf("请输入边数和顶点数:"); */G->numEdges= 16;G->numVertexes= 9;for(i = 0; i <G->numVertexes; i++)/* 初始化图*/{G->vexs[i]= i;}for(i = 0; i <G->numVertexes; i++)/* 初始化图*/ {for(j = 0; j <G->numVertexes; j++){if(i == j)G->arc[i][j]= 0;elseG->arc[i][j]=G->arc[j][i]=INIT;}}G->arc[0][1]= 1;G->arc[0][2]= 5;G->arc[1][2]= 3;G->arc[1][3]= 7;G->arc[1][4]= 5;G->arc[2][4]= 1;G->arc[2][5]= 7;G->arc[3][4]= 2;G->arc[3][6]= 3;G->arc[4][5]= 3;G->arc[4][6]= 6;G->arc[4][7]= 9;G->arc[5][7]= 5;G->arc[6][7]= 2;G->arc[6][8]= 7;G->arc[7][8]= 4;for(i = 0; i <G->numVertexes; i++){for(j = i; j <G->numVertexes; j++){G->arc[j][i]=G->arc[i][j];}}}/* Dijkstra算法,求有向网G的v0顶点到其余顶点v的最短路径P[v]及带权长度D[v] */ /* P[v]的值为前驱顶点下标,D[v]表示v0到v的最短路径长度和*/void ShortestPath_Dijkstra(MGraph G,int v0,Patharc*P,ShortPathTable*D){int v, w, k, min;int final[MAXVEX];/* final[w]=1表示求得顶点v0至vw的最短路径*/for(v = 0; v<G.numVertexes; v++)/* 初始化数据*/{final[v]= 0;/* 全部顶点初始化为未知最短路径状态*/(*D)[v]=G.arc[v0][v];/* 将与v0点有连线的顶点加上权值*/(*P)[v]=-1;/* 初始化路径数组P为-1 */}(*D)[v0]= 0;/* v0至v0路径为0 */final[v0]= 1;/* v0至v0不需要求路径*//* 开始主循环,每次求得v0到某个v顶点的最短路径*/for(v = 1; v<G.numVertexes; v++){min =INIT;/* 当前所知离v0顶点的最近距离*/for(w = 0; w<G.numVertexes; w++)/* 寻找离v0最近的顶点*/{if(!final[w]&&(*D)[w]<min){k = w;min =(*D)[w];/* w顶点离v0顶点更近*/}}final[k]= 1;/* 将目前找到的最近的顶点置为1 */for(w = 0; w<G.numVertexes; w++)/* 修正当前最短路径及距离*/{/* 如果经过v顶点的路径比现在这条路径的长度短的话*/if(!final[w]&&(min +G.arc[k][w]<(*D)[w])){/* 说明找到了更短的路径,修改D[w]和P[w] */(*D)[w]= min +G.arc[k][w];/* 修改当前路径长度*/(*P)[w]= k;}}}}int main(void){int i, j, v0;MGraph G;Patharc P;ShortPathTable D;/* 求某点到其余各点的最短路径*/ v0 = 0;CreateMGraph(&G);ShortestPath_Dijkstra(G, v0,&P,&D);printf("最短路径倒序如下:\n");for(i = 1; i<G.numVertexes;++i){printf("v%d - v%d : ", v0, i);j = i;while(P[j]!=-1){printf("%d ", P[j]);j = P[j];}printf("\n");}printf("\n源点到各顶点的最短路径长度为:\n");for(i = 1; i<G.numVertexes;++i)printf("v%d - v%d : %d \n", G.vexs[0], G.vexs[i], D[i]);return 0;}。

数据结构与算法课程设计报告模版参考模板

数据结构与算法课程设计报告模版参考模板

《数据结构与算法》课程设计报告题目:本科生导师制问题与家族关系查询系统院(系):信息科学与工程专业班级:计算机应用技术1301班学生姓名:顾泉学号:20131201018指导教师:金兰20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制数据结构与算法课程设计任务书目录1 本科生导师制问题 (1)1.1需求 (1)1.2总体设计 (1)1.3详细设计及实现 (1)1.4运行结果 (1)2 停车场管理 (2)2.1需求 (2)2.2总体设计 (2)2.3详细设计及实现 (2)2.4运行结果 (2)3 大整数计算器 (3)3.1需求 (3)3.2总体设计 (3)3.3详细设计及实现 (3)3.4运行结果 (3)4 家族关系查询系统 (4)4.1需求 (4)4.2总体设计 (4)4.3详细设计及实现 (4)4.4运行结果 (4)5 地铁建设问题 (5)5.1需求 (5)5.2总体设计 (5)5.3详细设计及实现 (5)5.4运行结果 (5)总结 (6)(目录要求:目录题头用三号黑体字居中书写,隔行书写目录内容。

目录中各级题序及题标用小四号黑体字)(正文要求:一级标题,黑体,三号,居中;二级标题,黑体,小三号;三级标题,黑体,四号;正文,宋体,小四号,1.25倍行距)1本科生导师制问题1.1需求(二级标题用黑体三号,三级标题用黑体四号,下同)在高校的教学改革中,有很多学校实行了本科生导师制。

一个班级的学生被分给几个老师,每个老师带n个学生,如果该老师还带研究生,那么研究生也可直接带本科生。

本科生导师制问题中的数据元素具有如下形式:①导师带研究生(老师,((研究生1,(本科生1,…,本科生m1)),(研究生2,(本科生1,…,本科生m2))…))②导师不带研究生:(老师,(本科生1,…,本科生m))导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。

数据结构课程设计报告

数据结构课程设计报告

数据结构课程设计报告班级计科三班学号 ****** 姓名指导老师郭艳日期 2014年6月19日计算命题演算公式的真值一、需求分析所谓命题演算公式是指由逻辑变量(其值为TRUE 或FALSE)和逻辑运算符∧(AND)、∨(OR)和┐(NOT)按一定规则所组成的公式(蕴含之类的运算可以用∧、∨和┐来表示)。

公式运算的先后顺序为┐、∧、∨,而括号()可以改变优先次序。

已知一个命题演算公式及各变量的值,要求设计一个程序来计算公式的真值。

要求:(1)利用二叉树来计算公式的真值。

首先利用堆栈将中缀形式的公式变为后缀形式;然后根据后缀形式,从叶结点开始构造相应的二叉树;最后按后序遍历该树,求各子树之值,即每到达一个结点,其子树之值已经计算出来,当到达根结点时,求得的值就是公式之真值。

(2)逻辑变元的标识符不限于单字母,而可以是任意长的字母数字串。

(3)根据用户的要求显示表达式的真值表。

二、设计1、设计思想(1)数据结构设计(1) 线性堆栈1的数据结构定义typedef char DataType ;typedef struct{DataType stack[MaxStackSize];int top;}SeqStack1;用线性堆栈主要是用来存储输入的字符,它的作用就是将中缀表达式变成后缀表达式。

(2) 线性堆栈2的数据结构定义typedef struct snode{DataType data;Struct snode *next;}LSNode;用于检测表达式的括号匹配。

(3) 定义二叉树的结点BiTreeNodetypedef struct Node{DataType data[MaxStackSize];struct Node *leftChild;struct Node *rightChild;struct Node *parent;}BiTreeNode;(3)算法设计首先实现将中缀表达式变成后缀表达式:在将中缀表达式变成后缀表达式的时候会用到堆栈,因此首先需要初始化一个堆栈。

《数据结构》课程设计报告

《数据结构》课程设计报告
3:选择输出景点方位图时,能正常输出;
总结:
(对程序进行分析、评价运行效果,总结遇到的问题及解决办法)
1:能正常删除景点或路径
2:找到景点间最短路径
3:可以正常输出景点方位图
问题:个别景点间最短路径输出错误
解决办法:更改函数输出的条件,并检查文件读入
注:各部分内容要求填写详尽,如空间不够可自行扩充。
《数据结构》课程设计报告
姓名
学号
实验室214
座位号099
组号
提交日期2014.12.26
成绩
指导教师
问题解析(对问题的分析、解题思路与解题方法):
问题分析:设计校园导游系统,为使用者提供各种查询服务,包括各景点的信息,两景点间的最短路径好,校门到各景点的最短路径等功能,并且允许使用者对景点信息,景点间的路径长度,以及景点的位置信息进行编辑(添加,删除,修改等);
int vexnum,arcnum;//顶点总数,弧(边)总数
}Mgraph;
测试方法、测试数据与测试结果:
删除景点和路径函数正常运行文件中数据正常删除,方位图显示正常。
程序的使用说明:
1:选择删除路径(景点)并输入路径(景点)时会删除路径或景点;
2:选择两地路线查询并输入两地景点名称时会输出最短长度,步行时间,和经过的景点;
解题思路:用无向图表示校园景点平面图,图中的顶点表示校园主要景点,存放景点的各种信息,图中的边表示景点间的道路,存放路径长度信息。
解题方法:建立无线图,图中的结点类中存放景点名称,简介等各种信息,通过求图两点间的最短路径,可以求得两景点间的最短路径,还可以访问结点中各种项以获取景点信息。
任务分工及进度安排:
景点和路径的删除函数,输出图的方位图的函数display(),求任意两景点间的最短路径函数。

《数据结构》课程设计题目表2014

《数据结构》课程设计题目表2014

2014年《数据结构》课程设计题目表1 设计程序按从大到小的次序依次输出函数f(a,b)=2×a2+b2的最小的100个函数值及相应的两个参数的值,其中a和b均为自然数。

要求:(1)作为函数值的存储结构应尽可能节省空间。

(2)所设计算法及整个程序的时间复杂度应尽可能小。

2 设计程序以实现任意两个高次多项式的乘法运算。

要求:(1)所设计的数据结构应尽可能节省存储空间。

(2)程序的运行时间应尽可能小。

3 设计一个模拟计算器的程序,要求对包括加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。

4 采用十字链表表示稀疏矩阵,并实现矩阵的加法运算。

要求:要检查有关运算的条件,并对错误的条件产生报警。

5采用十字链表表示稀疏矩阵,并实现矩阵的乘法运算。

要求:要检查有关运算的条件,并对错误的条件产生报警。

6(2人)选择合适的存储结构表示广义表,并实现下列运算要求:(1)用大写字母表示广义表,用小写字母表示原子,并提供设置广义表的值的功能。

(2)取广义表L的表头和表尾的函数head(L)和tail(L)。

(3)能用这两个函数的复合形式求出广义表中的指定元素。

(4)由广义表的字符串形式到广义表的转换函数Str-To-List(S):Lists,例如Str-To-Lists(‘(a,(a,b),c)’)的值为一个广义表。

(5)由广义表到广义表的字符串形式转换函数Lists-To-Str(L):String。

(6)最好能设置多个广义表。

7 设计程序实现哈夫曼算法,要求如下:(1)可以利用实验工具的有关功能。

(2)要能演示构造过程。

8 采用哈夫曼编码思想实现文件的压缩和恢复功能,并提供压缩前后的占用空间之比。

要求:(1)压缩原文件的规模应不小于5K。

(2)提供恢复文件与原文件的相同性对比功能。

9设计程序完成如下功能:对给定的图结构和起点,产生所有的深度优先搜索遍历序列,并给出求解过程的动态演示。

数据结构课程设计参考题目(一)

数据结构课程设计参考题目(一)

数据结构课程设计参考题目(一)数据结构是计算机科学中的一门基础课程,它主要研究数据的组织、存储、管理和操作等方面的问题。

随着计算机技术的发展,数据结构逐渐成为各个领域必不可少的一门课程。

而数据结构课程设计参考题目是该课程的一项重要内容,它能够帮助学生更好地掌握课程知识,提高对数据结构的理解和应用能力。

以下是几个数据结构课程设计参考题目。

1.链表操作设计一个链表类,使得它能够实现插入、删除、查找和遍历链表的操作。

要求采用单向链表或双向链表实现,并考虑链表的循环操作。

同时,要求能够对链表进行排序操作。

2.栈与队列操作设计一个栈和队列类,使得它们能够实现入栈、出栈、入队和出队的操作。

要求采用数组或链表实现,并可用于表达式转换和括号匹配等相关问题。

3.堆排序算法实现堆排序算法,要求能够对整型数列进行排序,并输出其排序后的结果。

要求堆的构建、删除和调整操作均可用最大堆或最小堆实现。

同时,要求能够对算法的时间复杂度进行分析,并与快速排序等算法进行比较。

4.哈希表实现设计一个哈希表类,使其能够实现插入、删除和查找等操作。

要求采用链地址法或开放地址法实现,同时需要考虑哈希函数和扩容等问题。

要求能够对哈希冲突的解决方法进行比较和分析。

5.树与图的遍历实现二叉树、B树或B+树的遍历操作,要求能够实现先序、中序和后序遍历,并能够循环遍历或递归遍历。

同时,要求能够对树的平衡性进行探究和讨论。

另外,树的遍历也是图的遍历的基础,可以通过深度优先搜索或广度优先搜索实现图的遍历。

以上是一些常见的数据结构课程设计参考题目,它们可以锻炼学生的编程能力、算法分析能力和数据处理能力,同时也可以增强学生对数据结构知识的理解和掌握。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(此文档为word格式,下载后您可任意编辑修改!) 1. 运动会分数统计【问题描述】参加运动会的n个学校编号为1~n。

比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。

由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。

写一个统计程序产生各种成绩单和得分报表。

【基本要求】1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

5)数据存入文件并能随时查询6)规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称输出形式:有中文提示,各学校分数为整型。

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

测试数据:【测试数据】要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

例如,对于n=4,m=3,w =2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。

【实现提示】可以假设n≤20,m≤30,w≤20,姓名长度不超过20 个字符。

每个项目结束时,将其编号、类型符(区分取前五名还是前三名) 输入,并按名次顺序输入运动员姓名、校名(和成绩)。

【选作内容】允许用户指定某项目采取其他名次取法。

2. 集合的并、交和差运算【问题描述】编制一个能演示执行集合的并、交和差运算的程序。

【基本要求】(1) 集合的元素限定为小写字母字符[‘a’..’z’] 。

(2) 演示程序以用户和计算机的对话方式执行。

【测试数据】(1)Set1="magazine",Set2="paper",Set1∪Set2="aegimnprz",Setl ∩Set2="ae",Set1-Set2="gimnz"。

(2)Set1= " 012oper4a6tion89",Set2="error data",Set1∪Set2="adeinoprt",Setl ∩Set2="aeort",Set1-Set2="inp"。

【实现提示】以有序链表表示集合。

【选作内容】(1) 集合的元素判定和子集判定运算。

(2) 求集合的补集。

(3) 集合的混合运算表达式求值。

(4) 集合的元素类型推广到其他类型,甚至任意类型。

3. 一元稀疏多项式计算器【问题描述】设计一个一元稀疏多项式简单计算器。

【基本要求】一元稀疏多项式简单计算器的基本功能是:(1) 输入并建立多项式;(2) 输出多项式,输出形式为整数序列:n,c l,e l,c2,e2,…,c n,e n,其中n是多项式的项数,c i和e i,分别是第i 项的系数和指数,序列按指数降序排列;(3) 多项式a和b相加,建立多项式a +b;(4) 多项式a和b相减,建立多项式a -b。

【测试数据】(1)(2x+5x8-3.1x11) + (7-5x8+11x9)=(-3.lx11+11x9+2x+7)(2)(6x-3-x+4.4x2-1.2x9) -(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x)(3)(1 +x + x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)(4)(x+x3)+(-x-x3)=0(5)(x+x100)+(x100 +x200)=(x+2x100+x200)(6)(x+x2+x3)+0=x+x2+x3(7) 互换上述测试数据中的前后两个多项式【实现提示】用带表头结点的单链表存储多项式。

【选作内容】(1) 计算多项式在x处的值。

(2) 求多项式a 的导函数。

(3) 多项式a和b相乘,建立乘积多项式ab 。

(4) 多项式的输出形式为类数学表达式。

例如,多项式-3x8+6x3-18的输出形式为,x15+(-8)x7-14的输出形式为。

注意,数值为1的非零次项的输出形式中略去系数1,如项1x8的输出形式为x8,项-1x3的输出形式为-x3。

(5) 计算器的仿真界。

4. 池塘夜降彩色雨【问题描述】设计一个程序,演示美丽的“池塘夜雨”景色:色彩缤纷的雨点飘飘洒洒地从天而降,滴滴入水有声,溅起圈圈微澜。

【基本要求】(1) 雨点的空中出现位置、降范过程的可见程度、入水位置、颜色、最大水圈等,都是随机确定的;(2) 多个雨点按照各自的随机参数和存在状态,同时演示在屏幕上。

【测试数据】适当调整控制雨点密度、最大水圈和状态变化的时间间隔等参数。

【实现提示】(1) 每个雨点的存在周期可分为三个阶段:从天而降、入水有声和圈圈微澜,需要一个记录存储其相关参数、当前状态和下一状态的更新时刻。

(2) 在图形状态编程。

雨点下降的可见程度应是断断续续、依稀可见;圈圈水波应是由里至外逐渐扩大和消失。

(3) 每个雨点发生时,生成其记录,并预置下一个雨点的发生时间。

(4) 用一个适当的结构管理当前存在的雨点,使系统能利用它按时更新每个雨点的状态,一旦有雨点的水圈全部消失,就从结构中删去。

【选作内容】(1) 增加“电闪雷鸣”景象。

(2) 增加风的效果,展现“风雨飘摇”的情景。

(3) 增加雨点密度的变化:时而“和风细雨”,时而“暴风骤雨”。

(4) 将“池塘”改为“荷塘”,雨点滴在荷叶上的效果是溅起四散的水珠,响声也不同。

5. 银行业务模拟【问题描述】客户业务分为两种。

第一种是申请从银行得到一笔资金,即取款或借款。

第二种是向银行投入一笔资金,即存款或还款。

银行有两个服务窗口,相应地有两个队列。

客户到达银行后先排第一个队。

处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立刻排入第二个队等候,直至满足时才离开银行;否则业务处理完后立刻离开银行。

每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。

注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。

任何时刻都只开一个窗口。

假设检查不需要时间。

营业时间结束时所有客户立即离开银行。

写一个上述银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平均时间。

【基本要求】利用动态存储结构实现模拟。

【测试数据】一天营业开始时银行拥有的款额为10000(元),营业时间为600(分钟)。

其他模拟参量自定,注意测定两种极端的情况:一是两个到达事件之间的间隔时间很短,而客户的交易时间很长,另一个恰好相反,设置两个到达事件的间隔时间很长,而客户的交易时间很短。

【实现提示】事件有两类:到达银行和离开银行。

初始时银行现存资金总额为total。

开始营业后的第一今事件是客户到达,营业时间从0到closetime。

到达事件发生时随机地设置此客户的交易时间和距下一到达事件之间的时间间隔。

每个客户要办理的款额也是随机确定的,用负值和正值分别表示第一类和第二类业务。

变量total,closetime以及上述两个随机量的上下界均交互地从终端读入,作为模拟参数。

两个队列和一个事件表均要用动态存储结构实现。

注意弄清应该在什么条件下设置离开事件,以及第二个队列用怎样的存储结构实现时可以获得较高的效率。

注意:事件表是按时间顺序有序的。

【选作内容】自己实现动态数据类型。

例如对于客户结点,定义pool为CustNodepoolfMAX];结构类型CustNode含四个域:aITHIne,durtime,amount,next 或者定义四个同样长的,以上述域名为名字的数组。

初始时,将所有分量的next域链接起来,形成一个静态链找,设置一个楼顶元素下标指示量top,top=0表示找空。

动态存储分配函数可以取名为myMalloc,其作用是出钱,将钱顶元素的下标返回。

若返回的值为0,则表示无空间可分配。

归还函数可取名为myFree,其作用是把该分量入钱。

用FOR-TRAN和BASIC等语言实现时只能如此地自行组织。

6. 马踏棋盘【问题描述】设计一个国际象棋的马踏遍棋盘的演示程序。

【基本要求】将马随机放在国际象棋的8×8棋盘Board[8][8]的某个方格中,马按走棋规则进行移动。

要求每个方格只进入一次,走遍棋盘上全部64个方格。

编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个8×8的方阵,输出之。

7. 魔王语言解释【问题描述】有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能昕得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:(1)(2) θθδθδθδδδθδ1121)( -→n n n在这两种形式中,从左到右均表示解释。

试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话。

【基本要求】用下述两条具体规则和上述规则形式(2)实现。

设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用大写字母或小写字母代换的变量。

魔王语言可含人的词汇。

(1)(2)【测试数据】B(ehnxgz)B 解释成tsaedsaeezegexenehetsaedsae若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是“天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅”。

td s ae z g x n h 天 地 上 一只 鹅 追 赶 下 蛋 恨【实现提示】将魔王的语言自右至左进栈,总是处理栈顶字符。

若是开括号,则逐一出栈,将字母顺序入队列,直至闭括号出栈,并按规则要求逐一出队列再处理后入栈。

其他情形较简单,请读者思考应如何处理。

应首先实现栈和队列的基本操作。

【选作内容】(1)由于问题的特殊性,可以实现栈和队列的顺序存储空间共享。

(2)代换变量的数目不限,则在程序开始运行时首先读入一组第一种形式的规则,而不是把规则固定在程序中(第二种形式的规则只能固定在程序中)。

8. 航空客运订票系统【问题描述】航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

相关文档
最新文档