文章编辑课程设计报告及代码

合集下载

河南科技大学C语言课程设计报告设计报告含源代码

河南科技大学C语言课程设计报告设计报告含源代码

. . . .设计报告学院:电子信息工程学院班级:自动化101班XX:高贤哲学号:一、综合训练的任务及要求任务:C语言综合训练是为了提高学生综合使用本学期我们所学的C语言知识编写大型程序的能力,了解大型程序设计的开发步骤,以上机为主,每个学生按照要求使用C语言设计一个大型程序,并提供相关的设计文档和源程序,从提交。

要求:已知在磁盘上有一个文本文件(stuin.txt),此文件存放了一组学生的成绩信息,按照如下格式存放:1001 stuname1 891002 stuname2 781003 stuname3 60……1100 stuname100 87请按照如下要求编写程序:a.定义一个结构体类型数组,结构体类型含有学号、XX和成绩三个域;b.将文本文件的内容读入到结构体数组中;c.显示成绩最高的人的学号、XX和成绩(如果有相同的人要全部显示);d.显示平均成绩、高于、低于和等于平均成绩的人数;e.显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百比分;f.将以上显示的信息存放到stuout.txt文件中。

二、程序实现的功能、算法描述和程序实现的流程图程序的功能:a.将指定文本文件的内容读入到程序定义的结构体数组中;b.显示成绩最高的人的学号、XX和成绩(如果有相同的人全部显示);c.显示平均成绩、高于、低于和等于平均成绩的人数;d.显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百分比;e.将以上显示的信息存放到指定文件中。

算法描述:S1:定义一个结构体类型struct student数组student[100],结构体类型struct student含有int num、char name[20]、float score三个域;定义全局整型变量i,score_max,sum,more_than,equal,less_than,A,B,C,D,E;定义全局浮点型变量aveS2:以”r”的方式打开文本文件stuin.txtS3:将文本文件stuin.txt的内容读入到结构体数组student[100]中S4:score_max=student[0].scoreS5:i=1S6:若student[i].score>score_max执行S7;否则,执行S8S7:score_max=student[i].scoreS8:i=i+1S9:若i<100,返回S6;否则,执行S10S10:输出所有student[i].score=score_max的student[i]的成员student[i].num、student[i].name和student[i].score到屏幕;以”w”的方式打开文本文件stuout.txt,输出所有student[i].score=score_max的student[i]的成员student[i].num、stuout.txtS11:sum=0S12:i=0S13:sum=sum+student[i].scoreS14:i=i+1S15:若i<100,返回S13;否则,执行S16S16:ave=sum/100S17:输出ave到屏幕;以”a”的方式打开文本文件stuout.txt,输出ave到文本文件stuout.txt,然后关闭文本文件stuout.txtS18:i=0S19:more_than=0S20:equal=0S21:less_than=0S22:若student[i].score>ave执行S23;否则,执行S24S23:more_than=more_than+1,执行S27S24:若student[i].score=ave执行S25;否则,执行S26S25:equal=equal+1,执行S27S26:less_than=less_than+1S27:i=i+1S28:若i<100,返回S22;否则,执行S29S29:输出more_than、equal、less_than到屏幕;以”a”的方式打开文本文件stuout.txt,输出more_than、equal、less_than到文本文件stuout.txt,然后关闭文本文件stuout.txtS31:A=0S32:B=0S33:C=0S34:D=0S35:E=0S36:若90≤student[i].score≤100执行S37;否则,执行S38S37:A=A+1,执行S46S38:若80≤student[i].score≤89执行S39;否则,执行S40S39:B=B+1,执行S46S40:若70≤student[i].score≤79执行S41;否则,执行S42S41:C=C+1,执行S46S42:若60≤student[i].score≤69执行S43;否则,执行S44S43:D=D+1,执行S46S44:若0≤student[i].score≤59执行S45S45:E=E+1S46:i=i+1S47:若i<100,返回S36;否则,执行S48S48:输出A,B,C,D,E和A/100*100“%”,B/100*100“%”,C/100*100“%”,D/100*100“%”,E/100*100“%”到屏幕;以”a”的方式打开文本文件stuout.txt,输出A,B,C,D,E和A/100*100“%”,B/100*100“%”,C/100*100“%”,D/100*100“%”,E/100*100“%”到文本文件stuout.txt,然后关闭文本文件stuout.txt S49:关闭文本文件stuin.txt,stuout.txt,然后算法结束三、程序的调试调试过程中遇到fread函数使用错误,导致文件读取失败。

课程设计过程及源代码

课程设计过程及源代码

课程设计过程及源代码一、教学目标本课程的教学目标是使学生掌握XX学科的基本概念、原理和方法,能够运用所学知识解决实际问题;提高学生的科学思维能力和创新能力;培养学生对XX学科的兴趣和好奇心,增强学生的学习动力和自主学习能力。

具体分解为以下三个目标:1.知识目标:学生能够掌握XX学科的基本概念、原理和方法,了解学科的发展趋势和应用领域。

2.技能目标:学生能够运用所学知识解决实际问题,具备科学的探究方法和技巧。

3.情感态度价值观目标:学生对XX学科产生兴趣和好奇心,树立科学的世界观和价值观,培养团队合作意识和创新精神。

二、教学内容根据课程目标,本课程的教学内容主要包括XX学科的基本概念、原理和方法,以及实际应用案例。

具体安排如下:1.第一章:XX学科的基本概念和原理2.第二章:XX学科的方法和技巧3.第三章:XX学科在实际应用中的案例分析4.第四章:XX学科的发展趋势和前景三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

具体运用如下:1.讲授法:用于传授基本概念、原理和方法,引导学生掌握学科基础知识。

2.讨论法:鼓励学生积极参与课堂讨论,培养学生的思维能力和创新能力。

3.案例分析法:通过分析实际案例,使学生了解XX学科在实际应用中的方法和技巧。

4.实验法:学生进行实验,培养学生的实践能力和科学探究精神。

四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备以下教学资源:1.教材:选用国内权威出版的XX学科教材,确保知识的科学性和系统性。

2.参考书:推荐学生阅读相关领域的经典著作和最新研究成果,拓宽知识面。

3.多媒体资料:制作课件、视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。

4.实验设备:保障实验教学的顺利进行,提供必要的实验设备和材料。

五、教学评估本课程的评估方式包括平时表现、作业和考试等,旨在全面、客观地评价学生的学习成果。

具体评估方法如下:1.平时表现:通过课堂参与、提问、讨论等环节,记录学生的表现,占总评的30%。

文章编辑课程设计报告及代码

文章编辑课程设计报告及代码

*****工学院数据结构课程设计报告选题名称:文章编辑系(院):***工程学院专业:班级:姓名:** 学号:指导教师:学年学期:2009 ~ 2010 学年第 2 学期2010 年 6 月16 日设计任务书摘要:随着社会的高速发展,现在人们对信息的处理要求越来越高,使得文章内容、数量也越变庞大,所以,随之而来的就是对文章的处理变得越来越复杂。

设计此程序以方便人们对文章的处理。

此程序的功能有查找文章中某个字符串出现的次数,统计文章中数字,字母,空格等信息出现的次数,分行显示用户输入的文章,输入一字符串并删除文章中所有该字符串,最后,此程序功能简单,操作方便,所以,试验证明,本程序是一款很实用的程序。

关键字:文章编辑;字符查找;统计;删除目录1需求分析 (5)2概要设计 (5)2.1主要模块的描述 (5)2.2程序流程框图如图1所示 (6)2.3各功能函数描述 (6)3详细设计和实现 (7)3.1存储结构设计 (7)3.2主要算法设计 (7)3.3程序运行流程说明 (9)4调试与操作说明 (9)1需求分析这一次数据结构课程设计,我做的课题是文章编辑。

任务与要求包括:输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80个字符,共N行;要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。

存储结构使用线性表,分别用几个子函数实现相应的功能;void InitList(wzbj *L) //查找文章结尾有无结束符“#”void StrNo(wzbj *L) //统计某一字符串出现的次数wzbj *DelStr(wzbj *L) //删除某一字段void print1(wzbj *L) //分行输出用户的输入的各行字符void print2(wzbj *L, int &p1, int &p2, int &p3, int &n) //统计字符信息输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

高校程序设计课程设计源代码与文档范例

高校程序设计课程设计源代码与文档范例

高校程序设计课程设计源代码与文档范例源代码与文档范例在高校的程序设计课程中,学生们通常需要进行项目设计和编码实现。

正确编写源代码和撰写文档是一个程序开发过程中非常重要的环节。

本文将为大家提供一份高校程序设计课程设计源代码与文档的范例,以供参考。

源代码范例下面是一个简单的源代码范例,用Python编写一个求解斐波那契数列的函数:```pythondef fibonacci(n):if n <= 0:return "Input must be a positive integer."elif n == 1:return 0elif n == 2:return 1else:fib_list = [0, 1]for i in range(2, n):fib_list.append(fib_list[i-1] + fib_list[i-2])return fib_list[n-1]# 测试代码n = 10print(f"The {n}th fibonacci number is: {fibonacci(n)}")```上述代码定义了一个名为fibonacci的函数,用于计算斐波那契数列中的第n个数。

代码中使用了循环和列表等基本编程概念,力求简洁明了。

同时,还包含了测试代码,用于验证函数的正确性。

文档范例除了源代码外,编写完善的文档也是程序设计中必不可少的一部分。

下面是一个文档范例,包含了对上述源代码的说明和使用指南:```# 斐波那契数列计算器## 简介本程序用于计算斐波那契数列中的第n个数。

## 源代码```pythondef fibonacci(n):if n <= 0:return "Input must be a positive integer."elif n == 1:return 0elif n == 2:return 1else:fib_list = [0, 1]for i in range(2, n):fib_list.append(fib_list[i-1] + fib_list[i-2])return fib_list[n-1]```## 使用方法用户需要提供一个正整数n作为输入参数,函数将返回斐波那契数列中的第n个数。

课程设计报告(java版的计算器源代码)

课程设计报告(java版的计算器源代码)

程序功能简介:从最基本的加、减、乘、除,到基本数学函数处理,再到数的进制转换处理。

代码如下import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends Frame implements ActionListener, WindowListener{private Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField; //计算结果显示区private String lastCommand; //保存+,-,*,/,=命令0private double result; //保存计算结果private boolean start; //判断是否为数字的开始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,button_plus,button_minus,button_multiply,button_divide,button_point,button_equal,button_log,button_tan,button_cos,button_sin,button_exp;public Calculator() //构造方法设置布局、为按钮注册事件监听器{super("Calculator");this.setLocation(240,200);this.setSize(350,300);this.setResizable(true);this.setLayout(new GridLayout(7,1));this.addmyMenu(); //调用成员方法添加菜单displayField=new JTextField(30);this.add(displayField);displayField.setEditable(true);start=true;result=0;lastCommand = "=";JPanel panel0=new JPanel();panel0.setLayout(new GridLayout(1,4,4,4));JPanel panel1=new JPanel();panel1.setLayout(new GridLayout(1,5,4,4));button_sqrt=new JButton("sqrt");button_plusminus=new JButton("+/-");button_exp=new JButton("exp");button_CE=new JButton("退格");button_cancel=new JButton("C");JPanel panel2=new JPanel();panel2.setLayout(new GridLayout(1,5,4,4));this.add(panel2);button_7=new JButton("7");button_8=new JButton("8");button_9=new JButton("9");button_log=new JButton("log");button_divide=new JButton("/");JPanel panel3=new JPanel();panel3.setLayout(new GridLayout(1,5,4,4));this.add(panel3);button_4=new JButton("4");button_5=new JButton("5");button_6=new JButton("6");button_tan=new JButton("tan");button_multiply=new JButton("*");JPanel panel4=new JPanel();panel4.setLayout(new GridLayout(1,5,4,4));this.add(panel4);button_1=new JButton("1");button_2=new JButton("2");button_3=new JButton("3");button_cos=new JButton("cos");button_minus=new JButton("-");JPanel panel5=new JPanel();panel5.setLayout(new GridLayout(1,5,4,4));this.add(panel5);button_0=new JButton("0");button_point=new JButton(".");button_equal=new JButton("=");button_sin=new JButton("sin");button_plus=new JButton("+");panel1.add(button_sqrt);panel1.add(button_plusminus);panel1.add(button_exp);panel1.add(button_CE);panel1.add(button_cancel);panel2.add(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_log);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_tan);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.add(button_cos);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_sin);panel5.add(button_plus);button_sqrt.addActionListener(this);button_plusminus.addActionListener(this);button_exp.addActionListener(this);button_CE.addActionListener(this);button_cancel.addActionListener(this);button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_log.addActionListener(this);button_divide.addActionListener(this);button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionListener(this);button_tan.addActionListener(this);button_multiply.addActionListener(this);button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_cos.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_point.addActionListener(this);button_equal.addActionListener(this);button_sin.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(new WinClose()); //注册窗口监听器this.setVisible(true);}private void addmyMenu() //菜单的添加{JMenuBar menubar=new JMenuBar();this.add(menubar);JMenu m1=new JMenu("选项");JMenu m2=new JMenu("进制转换");JMenuItem m1_exit=new JMenuItem("退出");m1_exit.addActionListener(this);JMenuItem m2_ejz=new JMenuItem("二进制");m2_ejz.addActionListener(this);JMenuItem m2_bjz=new JMenuItem("八进制");m2_bjz.addActionListener(this);JMenu m3 = new JMenu(" 帮助");JMenuItem m3_Help = new JMenuItem("用法");m3_Help.addActionListener(this);dialog = new Dialog(this,"提示",true); //模式窗口dialog.setSize(240,80);label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐dialog.add(label_dialog);dialog.addWindowListener(this); //为对话框注册窗口事件监听器m1.add(m1_exit);menubar.add(m1);m2.add(m2_ejz);m2.add(m2_bjz);menubar.add(m2);m3.add(m3_Help);menubar.add(m3); }public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法{if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||e.getSource().equals(button_3)||e.getSource().equals(button_4)||e.getSource().equals(button_5)|| e.getSource().equals(button_6)||e.getSource().equals(button_7)|| e.getSource().equals(button_8)||e.getSource().equals(button_9) ||e.getSource().equals(button_0)||e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||e.getSource().equals(button_cancel)||e.getSource().equals(button_CE)){ //非运算符的处理方法String input=e.getActionCommand();if (start){displayField.setText("");start=false;if(input.equals("+/-"))displayField.setText(displayField.getText()+"-");}if(!input.equals("+/-")){String str=displayField.getText();if(input.equals("退格")) //退格键的实现方法{if(str.length()>0)displayField.setText(str.substring(0,str.length()-1));}else if(input.equals("C")) //清零键的实现方法{displayField.setText("0");start=true;}elsedisplayField.setText(displayField.getText()+input);}}else if (e.getActionCommand()=="二进制") //二进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toBinaryString(n));}else if (e.getActionCommand()=="八进制") //八进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toOctalString(n));}else if (e.getActionCommand()=="退出") //选项中退出的处理方法{System.exit(0);}else if (e.getActionCommand()=="用法") //按下'帮助'菜单栏中用法的处理方法{label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n");dialog.setLocation(400,250);dialog.setVisible(true);}else //各运算符的识别{String command=e.getActionCommand();if(start){lastCommand=command;}else{calculate(Double.parseDouble(displayField.getText()));lastCommand=command;start=true;}}}public void calculate(double x) //各运算符的具体运算方法{double d=0;if (lastCommand.equals("+"))result+= x;else if (lastCommand.equals("-"))result-=x;else if (lastCommand.equals("*"))result*=x;else if (lastCommand.equals("/"))result/=x;else if (lastCommand.equals("="))result=x;else if (lastCommand.equals("sqrt")){d=Math.sqrt(x);result=d;}else if (lastCommand.equals("exp")){d=Math.exp(x);result=d;}else if (lastCommand.equals("log")){d=Math.log(x);result=d;}else if (lastCommand.equals("tan")){d=Math.tan(x);result=d;}else if (lastCommand.equals("cos")){d=Math.cos(x);result=d;}else if (lastCommand.equals("sin")){d=Math.sin(x);result=d;}displayField.setText(""+ result);}public void windowClosing(WindowEvent e){if(e.getSource()==dialog)dialog.setVisible(false); //隐藏对话框 elseSystem.exit(0);}public void windowOpened(WindowEvent e) { }public void windowActivated(WindowEvent e) { }public void windowDeactivated(WindowEvent e) { }public void windowClosed(WindowEvent e) { }public void windowIconified(WindowEvent e) { }public void windowDeiconified(WindowEvent e) { }public static void main(String args[]){Calculator calculator=new Calculator();}}class WinClose implements WindowListener{public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法{System.exit(0); //结束程序运行}public void windowOpened(WindowEvent e){}public void windowActivated(WindowEvent e){}public void windowDeactivated(WindowEvent e){}public void windowClosed(WindowEvent e){}public void windowIconified(WindowEvent e){}public void windowDeiconified(WindowEvent e){}}运行结果截图:程序功能实现:1.运用两个面板的叠加做出界面。

c语言课程设计+报告+源代码

c语言课程设计+报告+源代码

西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。

二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。

用户密码的修改。

而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。

三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。

2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。

3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。

4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。

5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。

6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。

b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。

C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。

7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。

8.输出现有职工的信息: 会显示现在记录的职工的各项信息。

制作一个文本编辑器-java课程设计报告

制作一个文本编辑器-java课程设计报告

制作一个文本编辑器-java课程设计报告封面《Java语言程序设计》课程设计报告设计题目:制作一个文本编辑器分院:电信分院班级:姓名:学号:指导教师:黄建华实验地点:三教机六课设时间:2009-12-20——2009-12-25二OO九年十二月二十五日《Java语言程序设计课程设计》目录一、设计思路…………………………………………… (2)二、设计过程…………………………………………… (3)三、测试结果…………………………………………… (12)四、心得体会…………………………………………… (13)五、程序代码…………………………………………… (14)一、设计思路(一)设计概念要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。

现把我的设计思路简要介绍如下:1、明确设计要求首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。

在编辑菜单下的子菜单复制,可以进行对文本的复制。

在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。

而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。

而且用户也可以根据自己的需要改变窗体的大小。

2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言)(1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);(3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;(4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。

c课程设计报告含代码

c课程设计报告含代码

c课程设计报告含代码 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#C++课程设计报告专业:学号:姓名:同组人:提交日期:【设计目的】1、通过设计一个较为简单的《商场库存货物管理系统》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。

2、了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。

【设计内容】1、设计某公司的库存管理系统。

此程序是为了更好的处理货物的详细信息。

包括货物的货物的入库、出库、查询、统计。

并且能够很好的让使用者了解库存货物的有关信息。

2、系统要求能够按编号显示、查找、增加、删除、和保存各类货物的信息。

输入和输出货物的有关信息并且对输入保存文件里确定程序至少具备以下功能:查询模块、增加模块、删除模块、货物的有关信息数据存盘等的基本模块。

3、系统具有“货物的有关信息数据存盘”的功能,所以货物的有关信息数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出货物的有关信息,可以方便用户使用,避免数据重复录入,考虑到系统实现简洁,货物数据文件采用文本文件,货物数据文件名:。

4、作为一个完整的系统,除了具有增加货物,删除货物的信息模块,还应该具有修改货物相关信息的功能,所以本系统具备了“商品入库”、“商品出库”、“查询统计”、“商品报损”、“退出系统”,这5个基本功能,就可以以最简捷的方式实现对货物的管理,也就实现了系统的要求。

5、下图中黑体字部分程序块为我完成的代码块【实验环境】1.硬件环境:(1)电脑型号戴尔 Inspiron 5557 笔记本电脑 (扫描时间:2017年01月11日)(2)操作系统Windows 10 Enterprise 64位 ( DirectX 12 )(3)处理器英特尔 Core i7-6500U @ 双核(4)主板戴尔 03XTY7 ( 英特尔 PCI 标准主机 CPU 桥 - 100 Series 芯片组Family/eSPI Controller - 9D48 )(5)内存8 GB ( 镁光 DDR3L 1600MHz )(6)主硬盘三星 SSD 850 EVO 500GB ( 500 GB / 固态硬盘 )(7)显卡Nvidia GeForce 930M ( 4 GB )(8)显示器友达 AUO38ED ( 英寸 )2.软件环境:Windows 10 Enterprise 64位 ( DirectX 12 )、Visual Studio 2015【设计中使用函数说明】char manage::first_face()品入库3.商品查询4.按商品名查询5.按商品价格查询6.按商品大类查询7.商品报损【设计总结】经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。

文章编辑课程设计报告

文章编辑课程设计报告

文章编辑课程设计报告文章编辑一、目的数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

1.提高对数据逻辑结构的特点以及存储表示方式的认识,培养在具体应用中选择合适的数据结构和存储结构的能力。

2.熟悉软件开发的基本过程,初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等阶段基本任务和技能方法。

3.培养自己的算法设计和算法分析能力,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。

4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的工作方法、作风和相互合作的精神。

5.综合运用链表的查找、插入和删除,理论结合实际,将其运用到文章编辑这一实验中。

使这些知识得到进一步巩固、加深和拓展。

利用模块的思想,模块之间用指针连接,减少了不必要的麻烦。

巩固加深指针的用途,理解模块的优点。

加深对链表的理解,全面认识链表操作的字符串的模式匹配操作。

二、需求分析功能:输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80个字符,共N行;要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。

存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、 "空格个数"、"文章总字数"和输出删除某一字符串后的文章;用链表存放数据非常灵活,只要内存足够大,对链表可以做任意扩充和修改。

文本编辑器课程设计报告

文本编辑器课程设计报告

青岛农业大学理学与信息科学学院高级语言课程设计报告设计题目文本编辑器学生专业班级计算机科学与技术学生姓名(学号)设计小组其他同学姓名(学号)指导教师完成时间 2011-11-03 设计地点信息楼机房2011年 11 月 05 日一、课程设计目的和任务为了方便处理文本内容,减少在处理文本时的额外活动,设计了本程序。

比如在统计文本中的中英文字母数和空格数以及整篇文章的总字数时,可以利用本程序,这样比较方便、省时。

又比如统计某一字符串在文章中出现的次数,并输出该次数,也可利用本程序。

还可以利用本程序将文本的某一子串删除并将后面的字符前移。

二、分析与设计1.程序的基本功能:(1)分别统计出其中英文字母数和空格数以及整篇文章的总字数。

(2)统计某一字符串在文章中出现的次数,并输出该次数。

(3)删除某一子串,并将后面的字符前移。

2.系统总框图:(1)、统计字符个数算法流程图(2)、删除某一字符串算法流程图(3)、查找某一字符串出现的次数算法流程图3.定义的函数及说明:此程序由12个函数构成。

(1)存储结构:char wz[N][80]存储文章的字符数组,为全局变量(2)输入函数:readdat()通过此函数从文件中读取文本(3)输出函数:out()将文本内容输出(4)字符数统计函数:int countword(int n1,int n2)统计ASC 码在n1与n2之间的字符(5)字符串出现次数统计函数:int cz(char *s)查找某一字符串出现的次数(6)字符删除函数:void del(char *s)删除要删除的字符串(7)主函数:void main()通过主函数调用各个子函数完成程序功能(8)文件函数open("E:/yy/wzin.dat","r+")打开文件(9) 字符串位置函数strstr(wz[i],s);字符串s 在文章第i行首次出现的位置(10) 字符串长度函数strlen(wz[i]);文章第i 行的长度(11) 字符串比较函数strcmp(s1,"@@")比较字符串内容当为@@时停止输入(12) 字符串复制函数strcpy(wz[i],s1);/*将s1中的内容复制到wz[i]中4.算法设计:本程序要求储存结构为线性表结构,可以输入大小写的英文字母,任何数字和标点符号。

文本编辑器课程设计报告

文本编辑器课程设计报告

目录一、问题描述-------------------------------------------------------------------------21、基本要求----------------------------------------------------------------------22、提高要求----------------------------------------------------------------------2二、需求分析-------------------------------------------------------------------------2三、概要设计-------------------------------------------------------------------------3四、详细设计-------------------------------------------------------------------------51、文件操作----------------------------------------------------------------------52、编辑操作----------------------------------------------------------------------103、工具操作----------------------------------------------------------------------194、关于操作----------------------------------------------------------------------20五、编码与调试分析----------------------------------------------------------------20六、使用说明-------------------------------------------------------------------------22七、测试结果-------------------------------------------------------------------------22八、自学知识-------------------------------------------------------------------------26九、课程设计心得体会-------------------------------------------------------------27一、问题的描述设计并编写一个小型文本编辑器,使其具有通常文本编辑器(如Vi、Edlin)应具备的基本功能。

文章编辑课程设计报告

文章编辑课程设计报告
return (p);
}
int Search(LNode *L,char item) //查找元素
{
int j=0;
LNode *p;
p=L;
while(p)
{
if(p->data ==item)
j++;
p=p->next ;
}
return j;
}
int InsertLinkList(LNode *L,int item,int pos) //链表的插入
struct LNode
{
char data;
LNode *next;
};
LNode *LinkList;
HANDLE hout;
string S ;
int sum=0,Punnum=0,Fignum=0,Spacenum=0,English=0; //定义全局变量,统计数字字母空格标点符号的个数
int next[Max]; //定义next数组
}
int DeleteLinkList(LNode *L,int pos) /Node *p,*q;
p=SearchLinkList(L,pos-1);
if(!p)
return -1;
q=p->next ;
p->next =p->next ->next ;
English++;
else if((ch[i]>=33 && ch[i]<=64) || (ch[i]>=91 && ch[i]<=96) || (ch[i]>=123 && ch[i]<=126))

C#课程设计报告(精简版部分代码)

C#课程设计报告(精简版部分代码)

西安科技大学《C#语言程序设计》课程设计报告题目简单记事本的设计院、系(部)计算机科学与技术学院专业及班级计算机网络技术姓名牛德洋日期2013/1/171 题目要求使用C#语言设计一个Windows自带记事本,软件界面美观大方,操作简洁易用,功能完备可靠,必须上机调试通过。

程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。

2 功能需求实现记事本软件的基本功能,具有文本文件的新建、打开、保存功能,文字的全选、剪切、复制、粘贴、删除、撤销、查找、替换功能,字体类型、格式的设置、显示当前日期与时间的功能,并在此记事本程序基础上增加设置字体颜色,添加状态栏功能。

3 总体设计4 详细设计Program.cs:代码如下using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace note{static class Program{/// <summary>/// 应用程序的主入口点。

/// </summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}}}Form1.cs代码如下:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace note{public partial class Form1 : Form{public Form1(){InitializeComponent();}Form2 form2 = new Form2();//实例化查找窗体Form3 form3 = new Form3();//实例化替换窗体public string filepath = "";//文件路径//新建记事本public void new_Click(object sender, EventArgs e){if (richTextBox1.Modified)//判断输入区是否被修改{save_Click(sender, e);richTextBox1.Text = "";//清空输入框}elserichTextBox1.Text = "";}//打开文件public void open_Click(object sender, EventArgs e){//“打开”对话框,主要用于打开文件OpenFileDialog openFileDialog1 = new OpenFileDialog();//设置打开文件格式openFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"; if (openFileDialog1.ShowDialog() == DialogResult.OK){//对文件进行读写操作StreamReader sTmp = new StreamReader(openFileDialog1.FileName, Encoding.Default);richTextBox1.Text = "";this.Text=openFileDialog1.SafeFileName+" - 记事本";//读取文件内容richTextBox1.Text = sTmp.ReadToEnd();}}//保存文件public void save_Click(object sender, EventArgs e){//另存为对话框,用于将文本保存到指定的位置SaveFileDialog saveFileDialog1 = new SaveFileDialog();//定义要打开的文件格式saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"; //显示一个"提示框"if (MessageBox.Show("需要保存文件吗?", "提示框", MessageBoxButtons.YesNo) == DialogResult.Yes){if (saveFileDialog1.ShowDialog() == DialogResult.OK){if (filepath.Length == 0){//获取要打开文件的绝对路径filepath = saveFileDialog1.FileName;}StreamWriter sTmp = new StreamWriter(filepath);sTmp.Write(richTextBox1.Text);//输出流sTmp.Flush();//清除缓存sTmp.Close();}}}//另存为public void saveWhere_Click(object sender, EventArgs e){save_Click(sender, e);}//打印public void print_Click(object sender, EventArgs e){//打印对话框,用于选择打印机,打印页数及确定其他与打印机相关的设置 PrintDialog pd = new PrintDialog();//显示一个模态打印对话框pd.ShowDialog();}//退出public void exit_Click(object sender, EventArgs e){save_Click(sender, e);this.Close();}//字体public void font_Click(object sender, EventArgs e){//字体对话框,用于设置字体FontDialog fontDialog1 = new FontDialog();if (fontDialog1.ShowDialog() == DialogResult.OK){richTextBox1.Font = fontDialog1.Font;}}//打印设置public void set_Click(object sender, EventArgs e){PrintDialog pd = new PrintDialog();pd.ShowDialog();}//撤消public void return_Click(object sender, EventArgs e){//撤消最新的撤消命令。

数据结构课程设计:文章编辑系统源代码

数据结构课程设计:文章编辑系统源代码

数据结构课程设计:文章编辑系统源代码#include"stdio.h"#include"string.h"#include"math.h"#include"malloc.h"#include#include#include"time.h"#include#include#include#include"stdlib.h"#pragma comment(lib,"WinMM.Lib")typedef struct Line{char data[100];//每行内容用这样一个结点存放struct Line *next;}Line,*Article;int m=0;//该全局变量用来改变系统所使用的语言..登录时默认语言为中文int times;//此全局变量为删除和替换字符串时使用int ii;//跟times同一功能int tt=0;int colori=1;int music=0;//设置系统颜色void color(){int col;col=colori;if(m!=1){printf("\t\t ¤1.黑底白字");printf("\t\t●2.蓝底红字\n");printf("\t\t ¤3.白底黑字");printf("\t\t●4.绿底红字\n");printf("\t\t ¤5.红底绿字");printf("\t\t●6.白底紫字\n");printf("\t\t ¤7.紫底白字");printf("\t\t●8.黑底黄字\n");printf("\t\t ¤9.黑底蓝字");printf("\t\t●10.黑底灰字\n");printf("\t\t ¤11.白底红字");printf("\t●0.返回\n\n");printf("\t 请输入你要更换的颜色并回车:"); scanf("%d",&colori);if(colori==0)colori=col;switch(colori){case 1:system("color 07");break;case 2:system("color 9c");break;case 3:system("color f0");break;case 4:system("color 2c");break;case 5:system("color c2");break;case 6:system("color fd");break;case 7:system("color df");break;case 8:system("color 0e");break;case 9:system("color 09");break;case 10:system("color 08");break;case 11:system("color fc");break;case 0:break;default:printf("\t\t输入错误!");system("pause");break;}}else{printf("\t ¤1.Black and White");printf("\t\t●2.Blue and Red\n");printf("\t ¤3.White and Black");printf("\t\t●4.Green and Red\n");printf("\t ¤5.Red and Green");printf("\t\t●6.White and purple\n");printf("\t ¤7.Purple and White");printf("\t●8.Black and Yellow\n");printf("\t ¤9.Black and Blue");printf("\t\t●10.Black and Gray\n");printf("\t ¤11.White and Red");printf("\t\t●0.Exit\n\n");printf("\t Please select the number of color and then preass enter:");scanf("%d",&colori);if(colori==0)colori=col;switch(colori){case 1:system("color 07");break;case 2:system("color 9c");break;case 3:system("color f0");break;case 4:system("color 2c");break;case 5:system("color c2");break;case 6:system("color fd");break;case 7:system("color df");break;case 8:system("color 0e");break;case 9:system("color 09");break;case 10:system("color 08");break;case 11:system("color fc");break;case 0:break;default:printf("\t\tERROR!");system("pause");break; }}}void restorecolor(){switch(colori){case 1:system("color 07");break;case 2:system("color 9c");break;case 3:system("color f0");break;case 4:system("color 2c");break;case 5:system("color c2");break;case 6:system("color fd");break;case 7:system("color df");break;case 8:system("color 0e");break;case 9:system("color 09");break;case 10:system("color 08");break;case 11:system("color fc");break;}}//从文件中读取void ReadFile(Article &head){Line *p,*tail=head;char s[100];FILE *fp;if((fp=fopen("D:\\article.txt","r"))==NULL)//先判断文章是否存在{if(m!=1)printf("\n\t\t无法读取article.txt文件中的文章!\n");elseprintf("\n\t\tthe file of article.txt can't be read!\n");return;}while((fgets(s,100,fp))!=NULL){s[strlen(s)-1]='\0';p=(Line*)malloc(sizeof(Line));p->next=NULL;strcpy(p->data,s);if(head==NULL)head=p;elsetail->next=p;tail=p;}if(m!=1)printf("\n\t\t已成功从D盘的article.txt目录中读取文章!\n");elseprintf("\n\t\tThe article in D:\article.txt has succeed to read!\n");fclose(fp);}//更改后保存到文件中void SaveArticle(Article head){FILE*fp;char s[100];int n;Line *p=head;if((fp=fopen("D:\\article.txt","w"))==NULL){if(m!=1)printf("\n\t\t无法打开article.txt文件中的文章!\n");elseprintf("\n\t\tCan not open file article.txt!\n");return;}while(p != NULL) //将文章写入文件中{strcpy(s,p->data);n=strlen(s);s[n]='\n';s[n+1]='\0';fputs(s,fp);p=p->next;}fclose(fp);}//是否要保存到文本中??...新建文章void CreateFile(Article head){FILE*fp;char s[100];int n;Line *p=head;if((fp=fopen("D:\\article.txt","w"))==NULL){if(m!=1)printf("\n\t\t无法打开article.txt文件中的文章!\n"); elseprintf("\n\t\tCan not open file article.txt!\n"); return;}while(p!=NULL) //将文章写入文件中{strcpy(s,p->data);n=strlen(s);s[n]='\n';s[n+1]='\0';fputs(s,fp);p=p->next;}if(m!=1)printf("\n\t\t文章已成功写入D盘的article.txt目录中!\n");elseprintf("\n\t\tThe article has been successfully written in the D:article.txt!\n");fclose(fp);}//是否现在输入内容在指定盘里存放该文章void CreateArticle(Article &head){Line *p,*tail;char ch[100];if(m!=1)printf("\n\t\t请输入文章内容(按ctrl+e结束):\n");elseprintf("\n\t\tPlease input the content,end with (ctrl+e):\n");while(1){gets(ch);p=(Line*)malloc(sizeof(Line));p->next=NULL;strcpy(p->data,ch);if(p->data[strlen(p->data)-1]==5) {p->data[strlen(p->data)-1]='\0'; break;}if(head==NULL){head=p;tail=p;}else{tail->next=p;tail=tail->next;}}if(strlen(p->data)>0){if(head==NULL){head=p;tail=p;}else{tail->next=p;tail=tail->next;}}}//是否保存文章到指定目录的文件void IsSave(Article head){char ch;if(m!=1)printf("\t\t是否要将文章保存到指定目录的文件中?\n\t\t若是,请输入Y,若否,按其它任意键:");elseprintf("\t\tDo you want to save the file to the directory?\n\t\tIf yes,please input Y,or input any keys:");ch=getchar();if(ch=='Y'||ch=='y')CreateFile(head);}//计算中文个数int CountChinese(Article head){int num=0;Line *p=head;int i;int n;while(p!=NULL){n=strlen(p->data);for(i=0;i<n;i++){if(p->data[i]<0)num++;}p=p->next;}return num/2;}//计算字母个数int CountLetter(Article head){int num=0;Line *p=head;int i;int n;while(p!=NULL){n=strlen(p->data);for(i=0;i<n;i++){if(('a'<=p->data[i]&&'z'>=p->data[i])||('A'<=p->data[i]&&' Z'>=p->data[i]))num++;}p=p->next;}return num;}//计算空格个数int CountSpace(Article head) {int num=0;Line *p=head;int i;int n;while(p!=NULL){n=strlen(p->data);for(i=0;i<n;i++){if(p->data[i]==' ')num++;}p=p->next;}return num;}//计算数字个数int CountFigure(Article head){int num=0;Line *p=head;int i;int n;while(p!=NULL){n=strlen(p->data);for(i=0;i<n;i++){if('0'<=p->data[i]&&p->data[i]<='9')num++;}p=p->next;}return num;}//计算总字数int CountArticle(Article head){int num=0;num=CountLetter(head)+CountSpace(head)+CountFigure(h ead)+CountChinese(head);return num;}//找串...统计某一字符串在文章中出现的次数,并输出该次数int FindString(Article head,char *s){int num=0;Line *p=head;int i,j,k=1,t;int n,mm;while(p!=NULL){n=strlen(p->data);mm=strlen(s);for(i=0;i<=(n-mm);){k=1;for(j=i,t=0;t<mm;j++,t++)if(p->data[j]!=s[t]){k=0;break;}if(k){num++;i=i+strlen(s);}else}p=p->next;}return num;}//删除模块(删除全部要删除的串)char* delstring1(char *ch,char *s) {int n=strlen(ch),mm=strlen(s); int i,j,k,t;for(i=0;i<=n-mm;){k=1;for(j=i,t=0;t<mm;j++,t++)if(ch[j]!=s[t]){k=0;break;}if(k){for(j=i;j<n;j++)ch[j]=ch[j+mm];ch[j]='\0';}elsen=strlen(ch);}return ch;}//全部删除void DeleteString1(Article &head,char *s){Line *p=head;while(p!=NULL){strcpy(p->data,delstring1(p->data,s));p=p->next;}if(m!=1)printf("\t\t全部已成功删除!\n");elseprintf("\t\tDelete all successfully!\n");}void delprint(char *ch,char *s){int i;int mm=strlen(s);char c[100];int k;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_G</n;j++)</mm;j++,t++)</mm;j++,t++)</n;i++)</n;i++)</n;i++)</n;i++)REEN);for(i=ii,k=0;i<ii+mm;i++,k++)c[k]=ch[i];c[k]='\0';printf("%s",c);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HAN DLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);}//判断该行是否出现该字符串,出现返回1int deljudge(char *ch,char *s){int n=strlen(ch),mm=strlen(s);int i,j,k,t;for(i=ii;i<=n-mm;i++){k=1;for(j=i,t=0;t<mm;j++,t++)if(ch[j]!=s[t])k=0;break;}if(k){times++;ii=i;return 1;}}return 0;}char* delstring2(char *ch,char *s) {int n=strlen(ch),mm=strlen(s); int i,j,k,t;for(i=ii;i<=n-mm;i++){k=1;for(j=i,t=0;t<mm;j++,t++)if(ch[j]!=s[t]){k=0;break;}if(k)for(j=i;j<n;j++)ch[j]=ch[j+mm];ch[j]='\0';ii=i;break;}}if(m!=1)printf("\t\t删除成功!\n");elseprintf("\t\tDelete successfully!\n");return ch;}//删除模块(删除一个指定位置要删除的串)void DeleteString2(Article &head,char *s){Line *p=head;int flag;char c;int mm=strlen(s);int i;ii=0;times=0;while(p!=NULL) //这里出现的问题应该还是读入问题1!!{flag=deljudge(p->data,s);if(flag)if(m!=1)printf("\t\t第%d次出现该字符串的所在行如下:\n",times);elseprintf("\t\tThe line that this string appears the %d time is:\n",times);for(i=0;i<ii;i++)printf("%c",p->data[i]);delprint(p->data,s);for(i=ii+mm;idata);i++)printf("%c",p->data[i]);printf("\n");if(m!=1)printf("\t\t是否要删除?\n\t\tY是,N否:");elseprintf("\t\tDelete or not?\n\t\tY to yes,N to no:");c=getchar(); getchar();if(c=='Y'||c=='y')strcpy(p->data,delstring2(p->data,s));elseii+=mm;printf("\n");if(m!=1)printf("\t\t是否要继续删除?\n\t\tY是,N否:");elseprintf("continue to delete?\n\t\tY to yes ,N to no:");c=getchar();getchar();if(c=='N'||c=='n')break;}else{p=p->next;ii=0;}}if(m!=1)printf("\t\t删除结束!\n");elseprintf("\t\tDeleting ends!\n");}//删除管理模块void deletemanage(Article &head,char *s){int choice;if(m!=1)printf("\t\t1.全部删除\n\t\t2.部分删除\n\n\t\t请选择:");elseprintf("1.Delete all\n 2.Delete sections\n\n\t\tPlease select:"); scanf("%d",&choice);getchar();if(choice==1)DeleteString1(head,s);elseDeleteString2(head,s);}//字符串替换//全部替换char* repstring1(char *ch,char *s1,char *s2) {int n,mm,x,y;int i,j,k,t;n=strlen(ch);mm=strlen(s1);for(i=0;i<=n-mm;){k=1;for(j=i,t=0;t<mm;t++,j++)if(ch[j]!=s1[t]){k=0;break;}if(k){x=strlen(s2);if(x<=mm){for(j=i,t=0;t<x;t++,j++)ch[j]=s2[t</x;t++,j++)</mm;t++,j++)</ii;i++)</n;j++)</mm;j++,t++)</mm;j++,t++)</ii+mm;i++,k++)];for(t=mm+i;j<n;j++,t++)ch[j]=ch[t];ch[j]='\0';}else{y=x-mm;for(t=n-1;t>=mm+i;t--)ch[t+y]=ch[t];ch[n+y]='\0';for(j=i,t=0;t<x;t++,j++)ch[j]=s2[t];}i=i+x;}elsei++;}return ch;}void ReplaceString1(Article &head,char *s1,char *s2)//s2替换s1{Line *p=head;while(p!=NULL){strcpy(p->data,repstring1(p->data,s1,s2));p=p->next;}if(m!=1)printf("\t\t全部已成功替换!\n");elseprintf("\t\tReplace all successfully!\n");}//部分替换void repprint(char *ch,char *s){int i;int mm=strlen(s);char c[100];int k;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HAN DLE), FOREGROUND_RED | FOREGROUND_GREEN);for(i=ii,k=0;i<ii+mm;i++,k++)c[k]=ch[i];c[k]='\0';printf("%s",c);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HAN DLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);}int repjudge(char *ch,char *s){int n=strlen(ch),mm=strlen(s);int i,j,k,t;for(i=ii;i<=n-mm;i++){k=1;for(j=i,t=0;t<mm;j++,t++)if(ch[j]!=s[t]){k=0;break;}if(k){times++;ii=i;return 1;}}return 0;}char* repstring2(char *ch,char *s1,char *s2) {int n,mm,x,y;int i,j,k,t;n=strlen(ch);mm=strlen(s1);for(i=ii;i<=n-m;i++){k=1;for(j=i,t=0;t<mm;t++,j++)if(ch[j]!=s1[t]){k=0;break;}if(k){x=strlen(s2);if(x<=mm){for(j=i,t=0;t<x;t++,j++)ch[j]=s2[t];for(t=mm+i;j<n;j++,t++)ch[j]=ch[t];ch[j]='\0';}else{y=x-mm;for(t=n-1;t>=mm+i;t--)ch[t+y]=ch[t];ch[n+y]='\0';for(j=i,t=0;t<x;t++,j++)ch[j]=s2[t];}ii=i+strlen(s2);break;}}if(m!=1)printf("\t\t替换成功!\n");elseprintf("\t\tReplace successfully!\n");return ch;}void ReplaceString2(Article &head,char *s1,char *s2)//s2替换s1{Line *p=head;int flag;char c;int i;int mm=strlen(s1);ii=0;times=0;while(p!=NULL){flag=repjudge(p->data,s1);if(flag){if(m!=1)printf("\t\t第%d次出现该字符串的所在行如下:\n",times);elseprintf("\t\tThe line that this string appears the %d time is:\n",times);for(i=0;i<ii;i++)printf("%c",p->data[i]);repprint(p->data,s1);for(i=ii+mm;idata);i++)printf("%c",p->data[i]);printf("\n");if(m!=1)printf("\t\t是否要替换?\n\t\tY是,N否:");elseprintf("\t\tReplace or not?\n\t\tY to yes ,N to no:");c=getchar(); getchar();if(c=='Y'||c=='y')strcpy(p->data,repstring2(p->data,s1,s2));elseii+=mm;printf("\n");if(m!=1)printf("\t\t是否要继续替换?\n\t\tY是,N否:");elseprintf("\t\tContinue to replace?\n\t\tY to yes ,N to no:");c=getchar();getchar(</ii;i++)</x;t++,j++)</n;j++,t++)</x;t++,j++)</mm;t++,j++)</mm;j++,t++)</ii+mm;i++,k++)</x;t++,j++)</n;j++,t++));if(c=='N'||c=='n')break;}else{p=p->next;ii=0;}}if(m!=1)printf("\t\t替换结束!\n");elseprintf("\t\tReplacing ends!\n");}void PrintArticle(Article head);//删除和替换结束后是否输出删除后或替换后的文章void IsPrint(int mm,Article head){char ch;if(mm==1){if(m!=1)printf("\t\t是否要输出续写后的文章?\n\t\tY是,N否:");elseprintf("\t\tDo you want to output the followed article?\n\t\tY to yes,N to no:");ch=getchar();if(ch=='Y'||ch=='y')PrintArticle(head);}if(mm==2){if(m!=1)printf("\t\t是否要输出替换后的文章?\n\t\tY是,N否:");elseprintf("\t\tDo you want to output the replaced article?\n\t\tY to yes,N to no:");ch=getchar();if(ch=='Y'||ch=='y')PrintArticle(head);}}//替换管理模块void replacemanage(Article &head,char *s1,char*s2){int choice;if(m!=1)printf("\t\t1.全部替换\n\t\t2.部分替换\n\n\t\t请选择:");elseprintf("\t\t1.Replace all\n\t\t2.Replace sections\n\n\t\tPlease select:");scanf("%d",&choice);getchar();if(choice==1)ReplaceString1(head,s1,s2);elseReplaceString2(head,s1,s2);}void PrintArticle(Article head){Line *p;int n,i;p=head;if(head==NULL){if(m!=1)printf("\t\t该文章中没有内容!\n");elseprintf("\t\tThe article is empty!\n"); }else{if(m!=1){ printf("\n\n\n ┎━━━━━━━━━━┒\n"); printf(" ┃ 该文章的内容如下┃\n"); printf(" ┖━━━━━━━━━━┚\n\n");}else{printf("\n\n\n ┎━━━━━━━━━━┒\n"); printf(" ┃ The article is ┃\n");printf(" ┖━━━━━━━━━━┚\n\n");}}while(p!=NULL){n=strlen(p->data);for(i=0;i<n;i++)printf("%c",p->data[i]);printf("\n");p=p->next;}}//追加模块void CatchArticle(Article &head){Line*p=head,*tail;char ch[100];if(m!=1)printf("\t\t请输入要续写的文章内容(按ctrl+e结束):\n");elseprintf("\t\tPlease input the content following with the article(end with ctrl+e):\n");if(head==NULL){CreateArticle(head);}else{while(p->next!=NULL)p=p->next;tail=p;while(1){gets(ch);p=(Line*)malloc(sizeof(Line));p->next=NULL;strcpy(p->data,ch);if(p->data[strlen(p->data)-1]==5){p->data[strlen(p->data)-1]='\0';break;}tail->next=p;tail=tail->next;}if(strlen(p->data)>0){tail->next=p;tail=tail->next;}}}void diaoshi();void menu(){int i;if(m!=1){if(tt!=0){printf("\n\n");diaoshi();printf("\n\n\n\</n;i++)n");}for(i=1;i<=19;i++)printf("★☆"); printf("\n☆ ★");printf("\n★ 这里是文章编辑系统☆"); printf("\n★ ☆\n");for(i=1;i<=19;i++)printf("☆★");printf("\n\n");printf("\t\t¤1.新建文章\t\t");printf("●2.读取文章\n");printf("\t\t¤3.输出文章\t\t");printf("●4.文章统计\n");printf("\t\t¤5.文章编辑\t\t");printf("●6.更改语言\n");printf("\t\t¤7.选择颜色\t\t");printf("●8.帮助说明\n");//关于系统使用的介绍说明及关于我们的团队介绍printf("\t\t¤9.背景音乐");printf("\t\t●0.返回\n");printf("\n");}else{if(tt!=0){printf("\n\n");diaoshi();printf("\n\n\n\n");}for(i=1;i<=19;i++)printf("☆★");printf("\n★ ☆");printf("\n☆ This is article editing system ★");printf("\n☆ ★\n");for(i=1;i<=19;i++)printf("★☆");printf("\n\n");printf("\t¤1.creat a new article\t\t");printf("●2.read the article\n");printf("\t¤3.output the article\t\t");printf("●4.article statistic\n");printf("\t¤5.edit the article\t\t");printf("●6.change language\n");printf("\t¤7.select color\t\t");printf("●8.help(about)\n");printf("\t¤9.background music\t\t");printf("●0.exit\n");}}void tongjimenu(Article head){if(m!=1){printf("\n\n\n ┎━━━━━━━━━━┒\n");printf(" ┃ 统计结果如下┃\n");printf(" ┖━━━━━━━━━━┚\n\n");printf("\t\t\t文章中的字母数为:%d\n",CountLetter(head)); printf("\t\t\t文章中的空格数为:%d\n",CountSpace(head)); printf("\t\t\t文章中的数字数为:%d\n",CountFigure(head)); printf("\t\t\t文章中的汉字数为:%d\n",CountChinese(head)); printf("\t\t\t文章的总字数为:%d\n",CountArticle(head));}else{printf("\n\n\n ┎━━━━━━━━━━━━━━┒\n");printf(" ┃ The statistical result is ┃\n");printf(" ┖━━━━━━━━━━━━━━┚\n\n");printf("\t\t\tthe number of letters is:%d\n",CountLetter(head));printf("\t\t\tthe number of blank space is:%d\n",CountSpace(head));printf("\t\t\tthe number of figures is:%d\n",CountFigure(head));printf("\t\t\tthe number of Chinese is:%d\n",CountChinese(head));printf("\t\t\tthe number of the total words is:%d\n",CountArticle(head));}}void editmenu(){if(m!=1){printf("\n\n\n\t\t ┏━━━━━━━━━━━━━━━━━━━━┓\n");printf("\t\t ┃ 文章编辑┃\n");printf("\t\t ┗━━━━━━━━━━━━━━━━━━━━┛\n");printf("\t\t / ┃ ┃ \\\n");printf("\t\t / ┃ ┃ \\\n");printf("\t\t ↙ ┃ ┃ ↘\n");printf("\t\t ┏━━┓ ┏━━┓ ┏━━┓ ┏━━┓\n");printf("\t\t ┃1、┃ ┃2、┃ ┃3、┃ ┃4、┃\n");printf("\t\t ┃字符┃ ┃字符┃ ┃字符┃ ┃续写┃\n");printf("\t\t ┃ 串┃ ┃ 串┃ ┃ 串┃ ┃ ┃\n");printf("\t\t ┃统计┃ ┃删除┃ ┃替换┃ ┃文章┃\n");printf("\t\t ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃\n");printf("\t\t ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃\n");printf("\t\t ┗━━┛ ┗━━┛ ┗━━┛ ┗━━┛\n\n");printf("\t\t ●-● ●-● ●-● ●-●\n");printf("\t\t ¤ ¤\n");printf("\t\t ¤ 0、返回上层菜单¤\n");printf("\t\t ¤ ¤\n");printf("\t\t ●-● ●-● ●-● ●-●\n");}else{printf("\n\n\n\t\t ┏━━━━━━━━━━━━━━━━━━━━┓\n");printf("\t\t ┃ edit the article ┃\n");printf("\t\t ┗━━━━━━━━━━━━━━━━━━━━┛\n");printf("\t\t / ┃ ┃ \\\n");printf("\t\t / ┃ ┃ \\\n");printf("\t\t ↙ ┃ ┃ ↘\n");printf("\t\t ┏━━━━┓ ┏━━━━┓ ┏━━━━┓┏━━━━┓\n");printf("\t\t ┃1、┃ ┃2、┃ ┃3、┃┃4、┃\n");printf("\t\t ┃sum up ┃ ┃delete ┃ ┃replace ┃┃continue┃\n"); printf("\t\t ┃ ┃ ┃ ┃ ┃ ┃┃to write┃\n");printf("\t\t ┃string ┃ ┃string ┃ ┃string ┃┃ the ┃\n");printf("\t\t ┃ ┃ ┃ ┃ ┃ ┃┃ article┃\n");printf("\t\t ┃ ┃ ┃ ┃ ┃ ┃┃ ┃\n");printf("\t\t ┗━━━━┛ ┗━━━━┛ ┗━━━━┛┗━━━━┛\n\n");printf("\t\t ●-● ●-● ●-● ●-● ●-● ●-●\n");printf("\t\t ¤ ¤\n");printf("\t\t ¤ 0、Return to the above menu ¤\n");printf("\t\t ¤printf("\t\t ●-● ●-● ●-● ●-● ●-● ●-●\n");}}//文章编辑模块的实现void editmanage(Article &head){int choice;Line *p=head;char cc;int num;char s[100],s1[100],s2[100];do{editmenu();if(m!=1)printf("\t\t请输入您的选择(若要返回上层菜单,请按0):");elseprintf("\t\tPlease input your choice(return to the above menu,please press 0):");scanf("%d",&choice);getchar();//在这里读入得好好处理一下,因为读入整型后就要读入一个字符型。

python课程设计报告题目和代码

python课程设计报告题目和代码

python课程设计报告题目和代码【原创实用版】目录:1.介绍 Python 课程设计报告的目的和意义2.列出课程设计的题目和代码3.分析题目和代码的实现过程4.总结 Python 课程设计的学习收获正文一、Python 课程设计报告的目的和意义Python 作为一门广泛应用于人工智能、数据分析和网络开发等领域的编程语言,其课程设计旨在帮助学生掌握 Python 的基本语法、数据结构和编程思想。

通过完成课程设计报告,学生可以巩固课堂所学知识,提高编程实践能力,为今后的学习和工作奠定基础。

二、课程设计的题目和代码本课程设计的题目为“Python 课程设计报告”,主要包括以下内容:1.题目一:计算两个矩阵的乘积2.题目二:实现一个简单的文本编辑器3.题目三:设计一个类,模拟学生的成绩管理系统代码部分将分别针对以上三个题目进行编写。

三、题目和代码的实现过程1.题目一:计算两个矩阵的乘积```pythondef matrix_multiply(matrix1, matrix2):result = [[0, 0], [0, 0]]for i in range(2):for j in range(2):for k in range(2):result[i][j] += matrix1[i][k] * matrix2[k][j]return result```2.题目二:实现一个简单的文本编辑器```pythondef text_editor():text = ""while True:print("请输入文本(输入"q"退出):")line = input()if line == "q":breaktext += line + ""print("编辑完成后的文本为:")print(text)text_editor()```3.题目三:设计一个类,模拟学生的成绩管理系统```pythonclass Student:def __init__(self, name, score): = nameself.score = scoredef display(self):print("姓名:", , "成绩:", self.score)students = [Student("张三", 95),Student("李四", 85),Student("王五", 75)]for student in students:student.display()```四、总结 Python 课程设计的学习收获通过完成本次 Python 课程设计报告,我对 Python 编程语言有了更深入的了解,掌握了 Python 的基本语法、数据结构和编程思想。

文本编辑器课程设计报告

文本编辑器课程设计报告

.Java课程设计报告目:文本编辑器题班级:号:学姓名:绩:成日日期:月年..目录一、综合设计的目的与要求3……………………………………二、综合设计正文3…………………………………………………1.系统分析 (3)1.1……………………3系统开发背景、开发范围、建设目标与必要性开发1.2..................................................................3需求分析2.系统设计 (3)2.1…………………………………………………………3功能设计2.2...................................................4系统运行环境与开发工具3 .系统实施 (4)3.1……………………………………………………………4源程序3.2......................................................12 . 系统测试及部分截图三、综合设计总结或结论 (13)四、参考文献 (13)..《文本编辑器》一、综合设计的目的与要求要求在学生能够较熟练使用java程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统的练习。

二、综合设计正文1 系统分析1.1系统开发背景、开发范围、建设目标与必要性随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。

1.2需求分析程序设计主要分为两大部分:简单GUI设计和程序功能设计。

通过GUI设计实现图形用户界面,提供图形菜单,方便用户操作。

使用Java语言编写一个能够对输入文字进行操作,具有合理的界面,能够在界面中实现右键快捷方式,对文档内容进行编辑操作,并且能够顺利退出的程序。

C++课程设计报告(简易文本编辑器)

C++课程设计报告(简易文本编辑器)

面向对象程序设计课程设计报告(2011/2012学年第二学期)题目名称简单文本编辑器的设计系部专业计算机科学与技术班级学生完成时间 2012年 6 月指导老师在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。

文字存放于一个装着这样的薄卡片的盒子里,可以用读卡器来阅读它。

第一个文本编辑器是一种行编辑器,它运行在打字机型的终端上,这种编辑器并不具备在窗口和屏幕中显示的功能。

它包含了一些非常短的命令(为了减少打字量)。

其中一个命令能够把文件的指定部分通过打字机打印出来。

编辑光标是想象中的一个插入点,通过特殊命令,可以把它移动到特定内容字符串所在的行。

随后,内容字符串又被扩展成正则表达式。

如果想看到文件的变化,你需要把它打印出来。

相对于穿孔机来说,人们认为这种基于行的文本编辑器具有革命性的进步。

如果没有它,用户就需要把那些处理文本的命令打成专用的卡片,并在编辑文件时使用这些卡片。

当带有显示屏的计算机终端出现后,基于显示屏的文本编辑器开始流行起来。

最早的全屏编辑器中,有一种叫做O26,它是于1967年为CDC 6000系列机器的操作控制台而作的。

另外一个早期的全屏编辑器是vi。

vi诞生于20世纪70年代,至今,它仍是Unix和Linux的标准编辑器。

全屏编辑器对视频终端的销售起到了促进的作用。

文本编辑器在Windows的应用中是一个非常重要的项目,在过去十数年中,微软对windows文本编辑器有多个版本的升级改进,而基于其他的编程环境的文本编辑器也是多如牛毛,今天我们用MFC可视化编译环境做一个简易的文本编辑器。

引言 (2)1.课程设计目的和意义 (4)2.详细设计 (4)2.1需求描述 (4)2.1.1文件 (4)2.1.2编辑 (4)2.1.3应用 (5)2.1.4帮助 (5)2.1.5高级 (5)2.2功能描述 (5)2.2.1文本编辑区 (5)2.2.2文件 (7)2.2.3编辑 (15)2.2.4应用 (16)2.2.5帮助 (21)2.2.6高级 (22)2.2.7菜单栏 (25)2.2.7图标 (26)2.3程序运行说明 (27)3.课程设计总结 (30)3.1编程日志 (30)3.3测试报告 (31)4.心得体会 (31)5.参考文献 (31)1.课程设计目的和意义《面向对象程序设计》课程设计是实践性教学环节之一,是《面向对象程序设计》课程的辅助教学课程。

python课程设计报告题目和代码

python课程设计报告题目和代码

python课程设计报告题目和代码一、报告题目:基于Python的图像处理课程设计二、设计背景:本课程设计旨在让学生通过实践操作,掌握Python在图像处理中的应用,了解图像处理的基本原理和技术,培养学生在实际问题中应用Python进行图像处理的综合能力。

三、设计内容:1.设计要求:设计一个基于Python的图像处理程序,可以对图像进行基本的处理操作,如灰度转换、色彩调整、滤波等。

同时,需要实现一些常见的图像处理算法,如边缘检测、霍夫变换等。

2.设计思路:a.读取图像文件:使用Python内置的图像处理库PIL,读取需要处理的图像文件。

b.图像预处理:对图像进行灰度转换、色彩调整等操作,使其更适合后续的处理算法。

c.边缘检测:使用OpenCV库中的Canny算法,对图像进行边缘检测。

d.霍夫变换:对图像中的直线、圆等进行检测,得到相应的参数。

e.图像保存:将处理后的图像保存到本地文件系统中。

3.代码实现:```pythonimportcv2importnumpyasnp#读取图像文件img=cv2.imread('image.jpg')#灰度转换gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#色彩调整color=cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)color[:,:,2]=np.random.randint(0,255,size=color.shape[0]) *0.5+0.5#随机调整色彩#边缘检测edges=cv2.Canny(color,50,150)#霍夫变换检测直线lines=cv2.HoughLines(edges,rho=1,theta=np.pi/180)forlineinlines:x1,y1,x2,y2=line[0]cv2.line(color,(x1,y1),(x2,y2),(0,0,255),2)#在原图上绘制直线cv2.circle(color,(x1,y1),5,(0,255,0),-1)#在原图上绘制圆心点cv2.putText(color,str(line[0].shape[0]),(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,0,255),1)#在原图上标注直线数量和圆心坐标#保存图像文件cv2.imwrite('processed_image.jpg',color)```四、总结:本课程设计通过实践操作,让学生掌握了Python在图像处理中的应用,了解了图像处理的基本原理和技术,培养了学生的实践能力、创新能力和团队协作能力。

课程设计报告代码格式

课程设计报告代码格式

课程设计报告代码格式一、教学目标本课程的教学目标是让学生掌握XX学科的基本概念、原理和方法,能够运用所学知识解决实际问题。

具体来说,知识目标包括了解XX学科的基本概念、原理和方法,熟悉XX学科的研究现状和发展趋势;技能目标包括能够运用XX学科的知识解决实际问题,具备良好的科学实验能力和数据处理能力;情感态度价值观目标包括培养学生对XX学科的兴趣和热情,提高学生的科学素养,培养学生的创新意识和团队合作精神。

二、教学内容根据课程目标,本课程的教学内容主要包括XX学科的基本概念、原理和方法,以及实际应用案例。

教学大纲将按照教材的章节顺序进行安排,每个章节都会有详细的内容讲解和案例分析。

具体的教学内容安排如下:第1章:XX学科的基本概念和原理第2章:XX学科的方法和技术第3章:XX学科的应用案例分析三、教学方法为了达到课程目标,我们将采用多种教学方法进行教学,包括讲授法、讨论法、案例分析法和实验法等。

通过多样化的教学方法,激发学生的学习兴趣和主动性,帮助学生更好地理解和掌握知识。

具体的教学方法安排如下:第1章:讲授法结合案例分析法,让学生了解XX学科的基本概念和原理第2章:实验法结合讨论法,让学生掌握XX学科的方法和技术第3章:讲授法结合案例分析法,让学生了解XX学科的应用案例四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备适当的教学资源。

教材将是主要的教学资源,我们将选择一本权威的、适合学生水平的教材。

此外,我们还会提供参考书籍、多媒体资料和实验设备等,以丰富学生的学习体验。

具体的教学资源如下:教材:XX学科导论参考书籍:XX学科研究方法、XX学科案例分析多媒体资料:教学PPT、实验视频实验设备:实验室仪器、实验材料五、教学评估为了全面、客观地评估学生的学习成果,我们将采用多种评估方式。

平时表现将占最终成绩的30%,包括课堂参与度、提问和回答问题的积极性等;作业将占最终成绩的30%,包括课后作业和小论文等;考试将占最终成绩的40%,包括期中考试和期末考试。

课程设计模板代码

课程设计模板代码

课程设计模板代码一、教学目标本课程的教学目标是让学生掌握XX学科的基本知识,理解XX学科的基本概念和原理,能够运用XX学科的知识解决实际问题。

具体来说,知识目标包括:1.掌握XX学科的基本知识和概念;2.了解XX学科的发展历程和现状;3.理解XX学科的基本原理和规律。

技能目标包括:1.能够运用XX学科的知识解决实际问题;2.具备XX学科的基本实验技能;3.能够进行XX学科的文献查阅和分析。

情感态度价值观目标包括:1.培养对XX学科的兴趣和热情;2.增强对科学探究的积极性和主动性;3.培养科学思维和创新能力。

二、教学内容根据课程目标,本课程的教学内容主要包括XX学科的基本知识、概念和原理的讲解,实际问题的解决,以及相关实验技能的培养。

具体的教学大纲如下:1.第一章:XX学科的基本概念和知识–节1.1:XX学科的定义和发展历程–节1.2:XX学科的基本原理和规律2.第二章:XX学科的实际应用–节2.1:XX学科在生活中的应用–节2.2:XX学科在热点问题中的应用3.第三章:XX学科的实验技能培养–节3.1:XX学科实验的基本方法–节3.2:XX学科实验的操作技巧三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

具体方法如下:1.讲授法:通过教师的讲解,让学生掌握XX学科的基本知识和概念。

2.讨论法:通过小组讨论,培养学生的思考能力和团队合作精神。

3.案例分析法:通过分析实际案例,让学生学会将XX学科知识运用到实际问题中。

4.实验法:通过实验操作,培养学生的实验技能和科学探究能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的XX学科教材,作为学生学习的主要参考资料。

2.参考书:推荐学生阅读相关的XX学科参考书籍,拓宽知识面。

3.多媒体资料:制作多媒体课件,通过图片、视频等形式,生动展示XX学科知识。

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

*****工学院数据结构课程设计报告选题名称:文章编辑系(院): ***工程学院专业:班级:姓名: ** 学号:指导教师:学年学期:2009 ~ 2010 学年第 2 学期2010 年 6 月16 日设计任务书摘要:随着社会的高速发展,现在人们对信息的处理要求越来越高,使得文章内容、数量也越变庞大,所以,随之而来的就是对文章的处理变得越来越复杂。

设计此程序以方便人们对文章的处理。

此程序的功能有查找文章中某个字符串出现的次数,统计文章中数字,字母,空格等信息出现的次数,分行显示用户输入的文章,输入一字符串并删除文章中所有该字符串,最后,此程序功能简单,操作方便,所以,试验证明,本程序是一款很实用的程序。

关键字:文章编辑;字符查找;统计;删除目录1需求分析 (5)2概要设计 (5)2.1主要模块的描述 (5)2.2程序流程框图如图1所示 (6)2.3各功能函数描述 (6)3详细设计和实现 (7)3.1存储结构设计 (7)3.2主要算法设计 (7)3.3程序运行流程说明 (9)4调试与操作说明 (9)1需求分析这一次数据结构课程设计,我做的课题是文章编辑。

任务与要求包括:输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80个字符,共N行;要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。

存储结构使用线性表,分别用几个子函数实现相应的功能;void InitList(wzbj *L) //查找文章结尾有无结束符“#”void StrNo(wzbj *L) //统计某一字符串出现的次数wzbj *DelStr(wzbj *L) //删除某一字段void print1(wzbj *L) //分行输出用户的输入的各行字符void print2(wzbj *L, int &p1, int &p2, int &p3, int &n) //统计字符信息输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;运行环境包括: Windows2000以上操作系统、Visual C++6.0以上编译环境。

2概要设计对于文章的处理,我用的是for语句查找,即将符合条件的字符查找出来,然后通过函数实现字符的统计,删除等操作。

同时,存储用线性表的链表结构,然后通过设计四个函数,实现设计要求的4个基本功能。

2.1主要模块的描述while(L->next){for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++) if (p->wz!= *q) break;if (*q == '\0') n++;L = L->next;}将链表指针指向输入的字符串开始字符,和文章中字符的首位,然后使用循环语句,将字符串的每一个字符依次比较,判断相同的字符,以便实现其他的查找,统计,删除等功能。

2.2 程序流程框图如图1所示图1 流程图2.3各功能函数描述本次设计共分为四个函数,分别实现四个功能:分行输出用户的输入的各行字符,函数为:void print1(wzbj *L);文章中的字符数,空格数,数字等统计,函数为:void print2(wzbj *L, int &p1, int &p2, int &p3, int &n);字符串删除,函数为: wzbj *DelStr(wzbj *L);统计某一字符串出现的次数,函数为:void StrNo(wzbj *L)3详细设计和实现3.1存储结构设计线性表是最基本、最简单、也是最常用的一种数据结构。

线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。

线性表的逻辑结构简单,便于实现和操作。

因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。

在实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。

本程序中采用链式存储结构。

3.2 主要算法设计本课程设计中用指针链表,配合循环语句,完成字符串比较功能,从而完成统计字符串,删除字符串,统计字符信息的功能。

字符串删除:如果,输入字符的第一个字母与文本中的元字符有相同的时候,执行第一个for循环语句,对原文中的字符依次和输入的字符串比较,有不相同的跳出,如果完全相同,则将P指针给H指针,从而达到删除的作用。

然后,进行上述操作,完成删除操作。

wzbj *DelStr(wzbj *L) // 删除某一字段{wzbj *H = L;char s[80], *q;wzbj *p;cout<<"输入一子串: ";cin>>s;if (H->wz == *s){for (p=H->next, q=s+1; *q!='\0' && p->next; p=p->next,q++) if (p->wz!=*q) break;if (*q=='\0') H=p; // 删除}while(L->next){for (p=L->next,q=s;*q!='\0' && p->next;p=p->next,q++)if (p->wz!=*q) break;if (*q=='\0') L->next=p;else L=L->next;}return H;}统计某一字符,操作也是如此,两个字符比较,如果发现字符相同时统计数字N就加1函数为:void StrNo(wzbj *L) // 统计某一字符串出现的次数{int n = 0;char s[80], *q;wzbj *p;cout<<"输入一字符串: ";cin>>s;while(L->next) {for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++) if (p->wz != *q) break;if (*q == '\0') n++;L = L->next;}cout<<"字符串 "<<s<<" 出现 "<<n<<" 次\n";}统计字符信息用循环语句,如果有信息符合就让统计数字叠加,最后得出统计的字符数。

函数为: void print2(wzbj *L, int &p1, int &p2, int &p3, int &n)// 统计字符信息{ n=p1=p2=p3=0;for( ; L->next; L=L->next,n++)if(isalpha(L->wz)) p1++;else if(isdigit(L->wz)) p2++; // 统计数字else if(L->wz!='\n ') p3++; // 统计空格else if(L->wz=='\n') n--; // 统计文章总字数cout<<"\n全部字母数: "<<p1;cout<<"\n数字个数: "<<p2;cout<<"\n空格个数: "<<p3;cout<<"\n文章总字数: "<<n<<endl;}同时在其中引用了两个函数进行数字和字符的统计,分别为isalpha isdigit3.3程序运行流程说明程序运行时首先从主函数开始,先判断选择的操作。

然后根据要求进行相应的查找、删除、统计、显示等操作,一次操作完之后,会回到开始的选择界面,用户可重新选择操作,如果用户选择退出,程序就停止。

4调试与操作说明首先,在程序中输入一段文字,以“#”符做结尾。

按回车enter显示选择操作,便实现统计这段文字中英文字符,空格,数字,和文章总字数的功能,如下图4-1和4-2所示:图4-1图4-2接着,选择1—回车enter出现文章中全部字母数、数字个数、空格个数及文章总字数,如下图4-3所示:图4-3按选择2—回车enter 输入一字符串:you 统计其在文章中出现的次数,如图4-4所示:图4-4对文字的输出处理,按选择4—回车enter 分行显示用户输入的各行字符,如下图4-5所示:图4-5按选择3—回车enter 实现对输入的某一子串进行删除并将其后面字符前移,输出删除后的文章,如下图4—6所示:图4-6按选择0—回车enter 出现 Press any key to continue 结束程序图4-7总结致谢参考文献1 苏仕华.数据结构课程设计.北京:机械工业出版社,20052 王红梅,胡明,王涛,数据结构(C++版)学习辅导与实验指导.北京:清华大学出版社,20053 数据结构(用面向对象方法与C++语言描述)4 丁有和,郑进,周怡君.VC++实用教程(第3版).北京:电子工业出版社,20075 于永彦,王志坚,娄渊胜.C++程序设计基础案例教程.北京:北京大学出版社,20096 Adam Drozdek.数据结构与算法,北京:清华大学出版社,2006指导教师评语。

相关文档
最新文档