文章编辑课程设计报告及代码
河南科技大学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版的计算器源代码)

程序功能简介:从最基本的加、减、乘、除,到基本数学函数处理,再到数的进制转换处理。
代码如下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语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(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语言程序设计》课程设计报告设计题目:制作一个文本编辑器分院:电信分院班级:姓名:学号:指导教师:黄建华实验地点:三教机六课设时间:2009-12-20——2009-12-25二OO九年十二月二十五日《Java语言程序设计课程设计》目录一、设计思路…………………………………………… (2)二、设计过程…………………………………………… (3)三、测试结果…………………………………………… (12)四、心得体会…………………………………………… (13)五、程序代码…………………………………………… (14)一、设计思路(一)设计概念要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。
现把我的设计思路简要介绍如下:1、明确设计要求首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。
在编辑菜单下的子菜单复制,可以进行对文本的复制。
在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。
而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。
而且用户也可以根据自己的需要改变窗体的大小。
2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言)(1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);(3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;(4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。
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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间: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指导教师评语。