读入文本信息,进行排序

 编写程序实现如下机能

1)使用readData函数将文件读入,保存在内存中。

2)从控制台输入“M”,调用search函数,对所有员工按照部门名称进行分组,并且每个部门的数据按照员工编号升序排列。

3) 将search得到的数据用showData函数输出到控制台,输出时请将员工姓名改为:S+区分+姓名的形式。

 

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
using  System.Data.SqlClient;
using  System.IO;
using  System.Collections;
namespace  D205
{
    
public partial class Form1 : Form
    
{
        
//StreamReader objReader = new StreamReader("c:/test.txt");   
        string       strLine   = "";
        ArrayList    aryText   
= new ArrayList();    //存放文本文件信息
        ArrayList    arynum    = new ArrayList();    //存放员工编号
        ArrayList    arynum1   = new ArrayList();    //存放姓名
        ArrayList    arynum2   = new ArrayList();    //存放部门名称
        ArrayList    arynum3   = new ArrayList();    //存放区分
        public Form1()
        
{
            InitializeComponent();
        }

        
///readData()函数将文件读入,保存在内存中
        public void readData()                       
        
{
            
try
            
{
                StreamReader objReader 
= new StreamReader("c:/test.txt");  
                
while (strLine != null)
                
{
                    strLine 
= objReader.ReadLine();
                    
if (strLine != null)
                        aryText.Add(strLine);
                }

                objReader.Close();
            }

            
catch (Exception e)
            
{
                MessageBox.Show(e.GetBaseException().ToString());
            }

            
        }

        
///search函数,对所有员工按照部门名称进行分组,部门的数据按照员工编号升序排列。
        public void search()                         
        
{
            readData();
            
string stra1;
            
string stra2;
            
string stra3;
            
string stra4;
            
            
for (int i = 0; i < aryText.Count; i++)
            
{
                
string  strb  = (string)aryText[i];
                
int     inta  = strb.IndexOf(" ");
                
string  stro  = strb.Substring(0, inta);             //提出员工编号至arrnum.Add(cc);
                int     intc  = Convert.ToInt32(stro);
                arynum.Add(intc);

                
string  stro1 = strb.Substring(inta + 1);            //提出姓名至arrnum1.Add(ob);                    
                int     inta2 = stro1.IndexOf(" ");
                
string  stro2 = stro1.Substring(inta2 + 1);
                
string  strob = stro1.Substring(0, inta2);       
                arynum1.Add(strob);

                
int     inta3 = stro2.IndexOf(" ");                  //提出部门名称至arrnum2.Add(oo3); 
                string  stro3 = stro2.Substring(0,inta3 + 1);   
                
string  strb1 = stro2.Substring(inta3);              //提出区分至arrnum3.Add(ob1); 
                arynum2.Add(stro3);
                arynum3.Add(strb1);
            }


            
for (int j = 1; j < aryText.Count; j++)                  //对员工编号冒泡排序,同时对另外几个数组中对应的元素进行排序
            {
                
for (int i = 0; i < aryText.Count - 1; i++)
                
{
                    
if ((int)arynum[i] >= (int)arynum[i + 1])
                    
{
                       
int  intob          = (int)arynum[i];
                            stra1          
= (string)arynum1[i];
                            stra2          
= (string)arynum2[i];
                            stra3          
= (string)arynum3[i];
                            arynum[i]      
= arynum[i + 1];
                            arynum1[i]     
= arynum1[i + 1];
                            arynum2[i]     
= arynum2[i + 1];
                            arynum3[i]     
= arynum3[i + 1];
                            arynum[i 
+ 1]  = intob;
                            arynum1[i 
+ 1= stra1;
                            arynum2[i 
+ 1= stra2;
                            arynum3[i 
+ 1= stra3;

                    }

                }

            }

            
for (int i = 0; i < aryText.Count; i++)            //先输出开发部的人员名单
            {
                
if ("kaifabu ".Equals(arynum2[i]))
                
{
                    ListViewItem lvwob;
                    stra1  
= Convert.ToString(arynum[i]);
                    stra3  
= (string)arynum2[i];
                    stra4  
= (string)arynum3[i];
                    stra2  
= "S" + stra4 + (string)arynum1[i];
                    lvwob  
= lvwMylistView.Items.Add(stra1);
                    lvwob.SubItems.Add(stra2);
                    lvwob.SubItems.Add(stra3);
                    lvwob.SubItems.Add(stra4);
                }

            }

            
for (int i = 0; i < aryText.Count; i++)            //输出营业部的人员名单
            {
                
if ("yingyebu ".Equals(arynum2[i]))
                
{
                    ListViewItem lvwob;
                    stra1 
= Convert.ToString(arynum[i]);
                    stra3 
= (string)arynum2[i];
                    stra4 
= (string)arynum3[i];
                    stra2 
= "S" + stra4 + (string)arynum1[i];
                    lvwob 
= lvwMylistView.Items.Add(stra1);
                    lvwob.SubItems.Add(stra2);
                    lvwob.SubItems.Add(stra3);
                    lvwob.SubItems.Add(stra4);
                }

            }

            }


        
private void btnSubmit_Click(object sender, EventArgs e)
        
{
            
if (txtBox.Text == "M")
            
{
                search();
            }

            
else
            
{
                MessageBox.Show(
"输入正确指令");
            }

        }

    }

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值