欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      8通訊錄管理系統(tǒng)C#編程_課程設計_圖文.(大全五篇)

      時間:2019-05-14 04:55:33下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《8通訊錄管理系統(tǒng)C#編程_課程設計_圖文.》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《8通訊錄管理系統(tǒng)C#編程_課程設計_圖文.》。

      第一篇:8通訊錄管理系統(tǒng)C#編程_課程設計_圖文.

      福建工程學院

      課程名稱:C#.NET程序設計 設計題目:通訊錄管理系統(tǒng) 學生班級: 學生姓名: 指導教師: 完成日期:

      一、設計目的(1

      二、需求分析(2 2.1設計題目(2 2.2設計構(gòu)思(2 2.3運行界面需求(3 2.4開發(fā)及運行環(huán)境(3 2.5程序文件清單(3 2.5.1數(shù)據(jù)庫模塊(3

      三、模塊分析及設計(4 3.1系統(tǒng)功能結(jié)構(gòu)圖(4 3.2系統(tǒng)數(shù)據(jù)流程圖(4

      四、數(shù)據(jù)庫設計(5

      4.1數(shù)據(jù)庫需求分析(5 4.2E-R圖(6 4.3數(shù)據(jù)表設計(6 4.3.1登錄用戶信息表(Users(6 4.3.2通訊錄信息表(Contact(7

      五、制作過程及要點(7 5.1IsExist類(7 5.2用戶登錄與注冊模塊詳細設計(8 5.3系統(tǒng)主界面設計(14 5.4通訊錄“顯示全部”模塊(15 5.5通訊錄“添加”模塊(17 5.6通訊錄“查找”模塊(18 5.7通訊錄“修改”模塊(20 5.8通訊錄“刪除”模塊(22

      六、設計總結(jié)(24

      七、主要參考書及手冊(25

      一、設計目的

      日益繁多的人際交往使得我們很難搞清楚與每個人之間的聯(lián)系方式,特別是對于做經(jīng)常出差的人來說更是難,所以通訊錄能夠便捷的給我們帶來所需要的相關(guān)信

      息。而隨著計算機的普及,人們的生活擺脫了傳統(tǒng)式的記事本、電話簿,越來越多的靠計算機來幫助人們記住這些事情,極其簡便。這就需要有一個使用的通訊錄管理系統(tǒng),用戶可以方便的通過自己電腦的通訊錄管理系統(tǒng),來隨時查閱自己所需要的信息,而不必再大費周折去翻開那繁瑣的記事本。

      通訊錄管理系統(tǒng)是一個專門針對儲存用戶聯(lián)系方式以及一些簡單個人信息的實用管理系統(tǒng),它方便了用戶對眾多客戶、朋友、同事等個人信息的儲存和快速查閱的功能,大大減少了查找過程的時間。

      二、需求分析 2.1設計題目 通訊錄管理系統(tǒng) 2.2設計構(gòu)思

      通訊錄管理系統(tǒng)功能需求分析: 通訊錄管理系統(tǒng)主要功能分為五個模塊:用戶登錄與注冊、用戶查詢、添加記錄、修改記錄、刪除記錄。

      用戶登錄與注冊:實現(xiàn)不同用戶的注冊跟登錄通訊錄

      顯示全部:實現(xiàn)用戶對所有存在于數(shù)據(jù)庫中的數(shù)據(jù)的顯示,方便用戶了解數(shù)據(jù)存儲的情況。

      查找記錄:實現(xiàn)用戶在本軟件數(shù)據(jù)庫中查找自己需要的數(shù)據(jù)功能。添加記錄:實現(xiàn)用戶添加一條完整的記錄,包括姓名、生日、電話、郵箱、地址。

      修改記錄:用戶對數(shù)據(jù)庫中已存在的記錄進行修改,然后保存已經(jīng)修改過的數(shù)據(jù)

      刪除記錄:用戶對數(shù)據(jù)庫中已經(jīng)存在的記錄進行行刪除操作,然后保存修改過的數(shù)據(jù)

      2.3運行界面需求 界面應簡潔,使用者易操作 2.4開發(fā)及運行環(huán)境

      本系統(tǒng)開發(fā)平臺及運行環(huán)境如下: 系統(tǒng)開發(fā)平臺:Microsoft Visual Studio2008 系統(tǒng)開發(fā)語言:C# 數(shù)據(jù)庫管理軟件:SQL Server2005 運行平臺:Windows XP(SP2/Windows2000(SP4/Windows Server 2003(SP1 運行環(huán)境:Microsoft.NET Framework SDK v3.0 分辨率:最佳效果1024×768像素

      說明:SP(Service Pack為Windows操作系統(tǒng)補丁。2.5程序文件清單 2.5.1數(shù)據(jù)庫模塊

      數(shù)據(jù)庫名運行平臺編程語言簡要描述 TongXunLu Sql2005SQL Contact表跟Users表

      三、模塊分析及設計 3.1系統(tǒng)功能結(jié)構(gòu)圖

      通訊錄管理系統(tǒng) 注冊側(cè) 登錄 顯示全部 添加查找修改刪 除 退出系統(tǒng)

      3.2系統(tǒng)數(shù)據(jù)流程圖 用戶 注冊登錄 通訊錄管理系統(tǒng) 通訊錄管理系統(tǒng)主界面 顯示全部查 找 記 錄 修 改 記

      錄 刪 除 記 錄 退 出 系 統(tǒng)

      四、數(shù)據(jù)庫設計 4.1數(shù)據(jù)庫需求分析

      1針對通訊錄管理系統(tǒng),分別對用戶登錄、添加通訊錄和查找、刪除以及修改數(shù)據(jù)進行詳細的調(diào)研和分析,總結(jié)出如下的需求信息: 1.每條原始記錄要有姓名、生日、電話、郵箱、地址信息,其中姓

      名不能為空。

      2.保證查詢到的數(shù)據(jù)與姓名相一致 3.根據(jù)相應姓名刪除對應的全部數(shù)據(jù)

      2本數(shù)據(jù)用于登錄用戶實體以及通訊錄信息實體 4.2E-R 圖

      用戶 用戶名密碼 信息 操作 N 1 姓名 生日 郵箱 電話 地址

      4.3數(shù)據(jù)表設計

      ·數(shù)據(jù)庫名稱:TongXunLu,共有2個表:

      1、用戶表(Users

      2、通訊錄聯(lián)系表(Contact 4.3.1登錄用戶信息表(Users

      4.3.2通訊錄信息表(Contact

      五、制作過程及要點 5.1IsExist類

      開發(fā)項目時,以類的形式來組織、封裝一些常用的方法和事件,以便提高代碼的重用率,大大方便了代碼的管理。本系統(tǒng)中創(chuàng)建了一個公共類:IsExist.cs,主要是用來判斷后臺數(shù)據(jù)庫里是否存在用戶輸入 的內(nèi)容如果存在就返回true,否則返回false。using System;using System.Collections.Generic;using System.Text;using System.Data.SqlClient;namespace TongXun { class IsExist { public bool isNameExist(string str { string checkString=“select*from Contact where姓名='”+str+“'”;SqlConnection sqlcon=new SqlConnection(;sqlcon.ConnectionString=“Initial Catalog=TongXunLu;Data Source=(local;Integrated Security=true”;SqlCommand sqlcmd=new SqlCommand(;

      sqlcon.Open(;sqlcmd.CommandText=checkString;sqlcmd.Connection=sqlcon;SqlDataReader dr=sqlcmd.ExecuteReader(;if(dr.HasRows { return true;} else return false;} } } 5.2用戶登錄與注冊模塊詳細設計 初始登錄注冊界面 以下為初始界面:

      主要代碼實現(xiàn)如下: namespace TongXun { public partial class Login:Form { private Input_Check ckInput=new Input_Check(;public Login({ InitializeComponent(;}

      private void Form1_Load(object sender,EventArgs e { } private void register_btn_Click(object sender,EventArgs e { Register_Form reg=new Register_Form(;reg.Show(;this.Hide(;} private void login_btn_Click(object sender,EventArgs e { if(!ckInput.UserNameCheck(textBox_name.Text||!ckInput.PassWordCheck(textBox_pwd.Text { MessageBox.Show(“您輸入的用戶名或密碼格式錯誤!請查正后輸入?!?return;}

      string checkString=“select*from Users where UsersName='”+textBox_name.Text+“'and UsersPwd='”+textBox_pwd.Text+“'”;try { SqlConnection sqlcon=new SqlConnection(;sqlcon.ConnectionString=“Initial Catalog=TongXunLu;Data Source=(local;Integrated Security=true”;SqlCommand sqlcmd=new SqlCommand(;sqlcon.Open(;sqlcmd.CommandText=checkString;sqlcmd.Connection=sqlcon;SqlDataReader dr=sqlcmd.ExecuteReader(;if(dr.HasRows { Home HomePage=new Home(;HomePage.Show(;this.Hide(;} else

      { MessageBox.Show(“用戶名或密碼錯誤!”;} } catch(Exception error { MessageBox.Show(error.ToString(;} } //檢驗輸入數(shù)據(jù)正確性 public class Input_Check { public bool UserNameCheck(string strInput { Regex re=new Regex(@“^[a-zA-Z]w{0,15}$”;if(!re.IsMatch(strInput { return false;}

      return true;} public bool PassWordCheck(string strInput { Regex re=new Regex(@“^{0,20}$”;if(!re.IsMatch(strInput { return false;} return true;} } private void textBox_pwd_KeyPress(object sender,KeyPressEventArgs e { if(e.KeyChar==13 { if(!ckInput.UserNameCheck(textBox_name.Text ||!ckInput.PassWordCheck(textBox_pwd.Text {

      MessageBox.Show(“您輸入的用戶名或密碼格式錯誤!請查正后輸入?!?return;} string checkString=“select*from Users where UsersName='”+ textBox_name.Text+“'and UsersPwd='”+textBox_pwd.Text+“'”;try { SqlConnection sqlcon=new SqlConnection(;sqlcon.ConnectionString=“Initial Catalog=TongXunLu;Data Source=(local;Integrated Security=true”;SqlCommand sqlcmd=new SqlCommand(;sqlcon.Open(;sqlcmd.CommandText=checkString;sqlcmd.Connection=sqlcon;SqlDataReader dr=sqlcmd.ExecuteReader(;if(dr.HasRows { Home HomePage=new Home(;HomePage.Show(;

      this.Hide(;} else { MessageBox.Show(“用戶名或密碼錯誤!”;} } catch(Exception error { MessageBox.Show(error.ToString(;} } } } } 注冊中顯示的界面:

      主要代碼實現(xiàn)如下: namespace TongXun { public partial class Register_Form:Form { public Input_Check ckInput=new Input_Check(;public Register_Form({ InitializeComponent(;} private void button_confirm_Click(object sender,EventArgs e {

      if(!ckInput.UserNameCheck(textBox_name.Text { MessageBox.Show(“請輸入合法用戶名!”;textBox_name.Focus(;return;} else if(!ckInput.PassWordCheck(textBox_pwd.Text { MessageBox.Show(“請輸入符合要求的密碼!”;return;} else if(textBox_pwd.Text!=textBox_ensurePwd.Text { MessageBox.Show(“兩次密碼輸入不同,請重新輸入!”;textBox_ensurePwd.Focus(;textBox_pwd.Focus(;} //若輸入無誤,則與后臺數(shù)據(jù)庫同步 SqlConnection conn=new SqlConnection(;

      conn.ConnectionString=“initial catalog=TongXunLu;Data Source=(local;integrated security=true;”;conn.Open(;SqlCommand cmd=conn.CreateCommand(;string RegisterString=“INSERT INTO Users(UsersName,UsersPwd VALUES('”+textBox_name.Text+“','”+textBox_pwd.Text+“'”;cmd.CommandText=RegisterString;cmd.ExecuteNonQuery(;MessageBox.Show(“注冊成功!”;this.Close(;Login log=new Login(;log.Show(;} //檢驗輸入數(shù)據(jù)正確性 public class Input_Check { public bool UserNameCheck(string strInput { Regex re=new Regex(@“^[a-zA-Z]w{0,15}$”;

      if(!re.IsMatch(strInput { return false;} return true;} public bool PassWordCheck(string strInput { Regex re=new Regex(@“^{0,20}$”;if(!re.IsMatch(strInput { return false;} return true;} } private void button_cancel_Click(object sender,EventArgs e { Login L=new Login(;L.Show(;

      this.Hide(;} } } 5.3系統(tǒng)主界面設計 主界面運行截圖如下:

      主要代碼實現(xiàn)如下: private void button_cancel_Click(object sender,EventArgs e { this.panel_Delete.Show(;

      this.panel_WeIcome.Show(;} 5.4通訊錄“顯示全部”模塊

      用戶進入主界面之后,點擊顯示全部按鈕,則系統(tǒng)將數(shù)據(jù)庫中數(shù)存儲的所有聯(lián)系人的記錄顯示到dataGridView2界面中,按照一定的規(guī)格排列。其中各項中的數(shù)據(jù)則嚴格按照數(shù)據(jù)庫中的要求排列顯示。

      顯示全部功能截圖如下:

      主要代碼實現(xiàn)如下: private void button_ShowAll_Click(object sender,EventArgs e {

      this.panel_ShowAll.Show(;this.panel_add.Hide(;this.panel_Search.Hide(;this.panel_Modify.Hide(;this.panel_Delete.Hide(;this.panel_WeIcome.Hide(;SqlConnection conn=new SqlConnection(;conn.ConnectionString=“initial catalog=TongXunLu;Data Source=(local;integrated security=true;”;conn.Open(;//創(chuàng)建SqlDataAdapter對象實例

      SqlDataAdapter dataSelect=new SqlDataAdapter(“select*from Contact ”,conn;//創(chuàng)建DataTable對象實例 DataTable dt=new DataTable(;dataSelect.Fill(dt;//填充控件

      dataGridView2.DataSource=dt.DefaultView;this.dataGridView2.RowHeadersVisible=true;conn.Close(;

      } 5.5通訊錄“添加”模塊

      用戶進入通訊錄系統(tǒng)主界面,點擊添加,進行通訊錄的添加操作,填寫相應的內(nèi)容,系統(tǒng)會自動判定是否符合規(guī)定要求,例如姓名、生日、年齡、電話號碼、地址不能為空,相應屬性的字段長度不能超出范圍,郵箱格式要符合要求??捎靡讯x的Input_Check類中EmailCheck(方法進行檢驗。相關(guān)運行界面如下:

      主要代碼實現(xiàn)如下: private void button_add_Click(object sender,EventArgs e { if(textBox_Name.Text==“" {

      MessageBox.Show(”請確認姓名輸入是否正確!“;return;} else if(!ckInput.PassWordCheck(textBox_birth.Text { MessageBox.Show(”請確認生日日期是否正確!“;return;} else if(!ckInput.PassWordCheck(textBox_phoneNum.Text { MessageBox.Show(”請確認電話號碼是否正確!“;return;} else if(!ckInput.EmailCheck(textBox_Mail.Text { MessageBox.Show(”請確認電子郵箱格式是否正確!“;return;} else if(textBox_Address.Text==”“

      { MessageBox.Show(”地址不能為空!“;} else { SqlConnection conn=new SqlConnection(;conn.ConnectionString=”initial catalog=TongXunLu;Data Source=(local;integrated security=true;“;conn.Open(;SqlCommand cmd=conn.CreateCommand(;string AddString=”INSERT INTO Contact(姓名,生日,電話,郵箱,地址

      VALUES('“+textBox_Name.Text+”','“+textBox_birth.Text+”','“+textBox_phoneNum.Text+ ”','“+textBox_Mail.Text+”','“+textBox_Address.Text+”'“;cmd.CommandText=AddString;cmd.ExecuteNonQuery(;MessageBox.Show(”添加聯(lián)系人成功!“;conn.Close(;textBox_Name.Clear(;textBox_birth.Clear(;textBox_phoneNum.Clear(;

      textBox_Mail.Clear(;textBox_Address.Clear(;} 5.6通訊錄“查找”模塊

      按姓名查找,若數(shù)據(jù)庫中有要查找的記錄則通過dataGridView1顯示

      出來,若不存在該記錄則返回“沒有您要查找的內(nèi)容!”的消息框。相關(guān)截圖如下:

      主要代碼實現(xiàn)如下: private void button_Search_Click(object sender,EventArgs e { try

      { if(textBox_SearchName.Text==”“ { MessageBox.Show(”查找的姓名不能為空!“;} else if(textBox_SearchName.Text!= ”“&&ise.isNameExist(textBox_SearchName.Text { string searchString=”select*from Contact where姓名='“+ textBox_SearchName.Text+”'“;SqlConnection conn=new SqlConnection(;conn.ConnectionString=”initial catalog=TongXunLu;Data Source=(local;integrated security=true;“;conn.Open(;//創(chuàng)建SqlDataAdapter對象實例

      SqlDataAdapter dataSelect=new SqlDataAdapter(searchString,conn;//創(chuàng)建DataTable對象實例 DataTable dt=new DataTable(;dataSelect.Fill(dt;//填充控件

      dataGridView_Search.DataSource=dt.DefaultView;this.dataGridView_Search.RowHeadersVisible=true;conn.Close(;textBox_SearchName.Clear(;} else { MessageBox.Show(”沒有您要查找的內(nèi)容!“;textBox_SearchName.Text=”“;textBox_SearchName.Focus(;} } catch(Exception exc { MessageBox.Show(exc.ToString(;} } 5.7通訊錄“修改”模塊

      要修改的記錄必需是數(shù)據(jù)庫中已存在的記錄。

      主要代碼實現(xiàn)如下: private void button_Modify_Click(object sender,EventArgs e { if(textBox_ModName.Text==”“ { MessageBox.Show(”請輸入要修改的姓名!“;} else if(textBox_ModName.Text!=”“&& ise.isNameExist(textBox_ModName.Text { SqlConnection conn=new SqlConnection(;

      conn.ConnectionString=”initial catalog=TongXunLu;Data Source=(local;integrated security=true;“;conn.Open(;SqlCommand cmd=conn.CreateCommand(;string ModifyString=”UPDATE Contact SET姓名='“+ textBox_ModName.Text+”',“+”生日='“+textBox_ModBirthDay.Text+”',“+”電話='“+ textBox_ModPhone.Text+”',“+”郵箱='“+textBox_ModMail.Text+”',“+”地址='“+ textBox_ModAddress.Text+”'where姓名='“+textBox_ModName.Text+”'“;cmd.CommandText=ModifyString;cmd.ExecuteNonQuery(;MessageBox.Show(”修改成功!“;textBox_ModName.Clear(;textBox_ModBirthDay.Clear(;textBox_ModPhone.Clear(;textBox_ModMail.Clear(;textBox_ModAddress.Clear(;} else { MessageBox.Show(”您要修改的記錄不存在!“;

      textBox_ModName.Clear(;textBox_ModBirthDay.Clear(;textBox_ModPhone.Clear(;textBox_ModMail.Clear(;textBox_ModAddress.Clear(;} } 5.8通訊錄“刪除”模塊

      在TextBox中輸入要刪除的記錄的姓名,確認刪除后連接數(shù)據(jù)庫進行刪除記錄。若該記錄不存在則返回提示信息,若操作成功,則返回“刪除成功”的信息框提示?!胺祷厥醉摗卑粹o則實現(xiàn)返回到登錄時的界面。

      主要代碼實現(xiàn)如下: private void button_delete_Click(object sender,EventArgs e { if(textBox_deleName.Text==”“ { MessageBox.Show(”請輸入要刪除的姓名!“;} else if(textBox_deleName.Text!=”“&& ise.isNameExist(textBox_deleName.Text { SqlConnection conn=new SqlConnection(;

      conn.ConnectionString=”initial catalog=TongXunLu;Data Source=(local;integrated security=true;“;conn.Open(;SqlCommand cmd=conn.CreateCommand(;string ModifyString=”DELETE FROM Contact WHERE姓名='“+ textBox_deleName.Text+”'“;cmd.CommandText=ModifyString;cmd.ExecuteNonQuery(;MessageBox.Show(”刪除成功!“;textBox_deleName.Text=”“;} else {MessageBox.Show(”您輸入的姓名不存在!“;textBox_deleName.Text = ”";} }

      六、設計總結(jié) 這次的課程設計是對我們這學期 c#學習的一次大檢驗。自己動 手,自己發(fā)現(xiàn)和解決問題。發(fā)現(xiàn)了自己的許多不足。平時沒有掌握好 的知識在這次課程設計中徹底暴露出來,經(jīng)過不斷思考,不斷查閱資 料和上機運行,解決其中大部分問題,當然還存在一些問題沒有解決。我相信在以后的學習能夠解決好它們。當然從這次課程設計使我們學 到了以前沒有學過的很多知識,在具體的程序?qū)嵺`中主要是對數(shù)據(jù)庫 連接和一些控件的應用有了更深的認識。使我們對 VS 程序設計有了 更深層次的認識和理解,懂得了 VS 窗體應用程序基本設計流程和 SQL Server 2000 數(shù)據(jù)庫設計。這次我們是小組作業(yè),為了使各自做的界面能夠更

      好的結(jié)合到一 起,我們這次設計的數(shù)據(jù)庫比較簡單。我們分工合作最后共同努力把 程序的基本功能基本上都實現(xiàn)了。我們通過對課本的研究,通過幾天 的努力終于將已經(jīng)完成了的程序在界面是進行了美化,可以使用戶在 使用的時候能夠賞心悅目。最后,在此由衷的向我的指導老師們表示衷心的感謝,是他們的 悉心指導和嚴格要求,才使我的課程設計有了較為完善的一面,才有

      5-了我能力的提高,得到了充分的鍛煉。

      七、主要參考書及手冊 [1] 李海濤,Visual Studio.NET 2008 開發(fā)一冊通。化學工業(yè)出版社,2010 年 [2] 江維華,江維清,C#.NET 程序設計使用教程,人民郵電出版社,2007 年 [3] 明日科技,Visual C#開發(fā)技術(shù)大全,人民郵電出版社,2007 年 [4](美James Foxall,Visual C# 2008 入門經(jīng)典,人民郵電出版社,2009 年

      第二篇:數(shù)據(jù)結(jié)構(gòu)課程設計—java通訊錄管理系統(tǒng)

      import java.io.*;import java.util.*;public class LittleProgram {

      static boolean isDelete = true;

      static boolean isFind = true;

      public static void main(String [] args)//主方法,程序從這里開始運行

      throws IOException,NumberNotFoundException

      {

      int choice=-1;

      do{

      LittleProgram lp = new LittleProgram();

      System.out.println();

      System.out.println(“t

      #”);

      System.out.println();

      System.out.println(“tt通訊錄管理系統(tǒng)”);

      System.out.println(“t

      請用號碼插入,查找,修改,刪除數(shù)據(jù)”);

      System.out.println();

      System.out.println(“t

      #n”);

      System.out.print(“1.增加號碼:n”+

      “2.查找號碼:n”+

      “3.刪除號碼:n”+ “4.清除所有號碼:n”+ “5.把號碼全部打印到屏幕n”+ “6.把通訊錄按號碼排序n”+

      “7.修改號碼n”+

      “8.統(tǒng)計通碼訊錄的總?cè)藬?shù)n”+

      “9.關(guān)于作者n”+

      “0.退出程序.n” +

      “輸入:”);

      BufferedReader in =

      //從終

      new BufferedReader(//端接

      new InputStreamReader(System.in));//收數(shù)

      String inputLine = in.readLine();

      //字選

      choice= Integer.valueOf(inputLine).intValue();//項;

      switch(choice)

      {

      case 1: {//1.增加號碼

      String str = lp.inputData();

      lp.addData(str);

      System.out.println(“增加號碼成功.”);

      timeOut(1);

      }break;

      case 2: {//2.查找號碼

      long find = 0;

      System.out.print(“請輸入你要查找的號碼:”);

      BufferedReader inn =

      new BufferedReader(new InputStreamReader(System.in));

      String inputLi = inn.readLine();

      find = Integer.valueOf(inputLi).longValue();

      lp.findData(find);

      timeOut(2);

      }break;

      case 3: {//3.刪除號碼

      long deleteNumber = 0;

      System.out.print(“請輸入你想刪除號碼:”);

      BufferedReader bf =

      new BufferedReader(new InputStreamReader(System.in));

      String inputL = bf.readLine();

      deleteNumber = Integer.valueOf(inputL).longValue();

      lp.deleteData(deleteNumber);

      if(isDelete)

      System.out.println(“刪除號碼成功!”);

      timeOut(1);

      }break;

      case 4: {

      lp.clearData();//4.清除所有號碼

      timeOut(1);

      }break;

      case 5: {

      print();//5.把號碼全部打印到屏幕

      timeOut(2);

      }break;

      case 6: {

      lp.numSort();//6.把號碼按號碼排序

      System.out.println(“按照號碼從小到大排序成功!n”+

      “排序后:n”);

      print();

      timeOut(2);

      }break;

      case 7: {

      lp.rewrite();//7.修改號碼

      timeOut(2);

      }break;

      case 8: {

      int count = lp.count();

      System.out.println(“共有”+count+“個號碼記錄.”);

      timeOut(2);

      }break;

      case 9: {

      System.out.print(“tt李雪萍n”+

      “tt安徽理工大學理學院n”+

      “ttQQ:1154646392n”);

      timeOut(4);

      }break;

      }}while(choice!= 0);

      System.out.println(“Bye!^-^”);

      System.exit(0);

      }

      public String inputData()//從終端接收數(shù)據(jù)的方法,返回字符串

      throws IOException,NumberFormatException

      {

      System.out.print(“請依次輸入 :號碼 姓名 地址 生日n” +

      “每項數(shù)據(jù)請用空格隔開:”);

      String all = “";

      try{

      BufferedReader in =

      //從終

      new BufferedReader(//端接

      new InputStreamReader(System.in));

      //收數(shù)

      String inputLine = in.readLine();

      //據(jù)

      StringTokenizer str =

      new StringTokenizer(inputLine,” “);//接收的數(shù)據(jù)用空格隔開,這個類用來提取每個字符串

      long num = Integer.valueOf(str.nextToken()).longValue();//號碼

      String name =(String)str.nextToken();

      //姓名

      String add =(String)str.nextToken();

      // 地址

      String birth =(String)str.nextToken();//出生年月

      all = String.valueOf(num)+” , “+

      name +” , “+

      add +” , “+

      String.valueOf(birth);//把所有的數(shù)據(jù)用” , “隔開然后在連起來放進字符串a(chǎn)ll

      }catch(IOException e){}

      catch(NumberFormatException e){}

      return all;//返回字符串a(chǎn)ll

      }

      public void addData(String str)//增加號碼的方法

      throws IOException

      {

      String s1 =”“,s2=”“ ,s3= ”“;

      File file = new File(”c:data.txt“);

      if(file.exists())//如果文件data.txt存在 {

      try{

      BufferedReader in =

      new BufferedReader(new FileReader(file));

      while((s1=in.readLine())!=null)

      s2+=s1+”n“;//把文件中的每行數(shù)據(jù)全部放進一個字符串s2

      s2+=str+”n“;

      //再把s2于形參str相連放進s2

      BufferedReader in2 =

      //把字符

      new BufferedReader(//串s2也

      new StringReader(s2));

      //就是原

      PrintWriter out =

      //文件+

      new PrintWriter(//形參str(新輸入的一行數(shù)據(jù))

      new BufferedWriter(//重新寫進data.txt

      new FileWriter(file)));

      //覆蓋原來的數(shù)據(jù)

      while((s3=in2.readLine())!= null)

      {

      out.println(s3);

      }

      out.close();

      //System.out.println(”write data true.“);

      }catch(IOException e){}

      }else{

      System.err.println(”File “data” Missing!“);

      }

      }

      public void clearData()//清除data.txt的所有數(shù)據(jù)的方法

      throws IOException

      {

      File file = new File(”c:data.txt“);

      if(file.exists())//如果文件在{

      try{

      PrintWriter out =

      new PrintWriter(new BufferedWriter(new FileWriter(file)));

      out.print(”“);//在文件data.txt里寫進一個空字符,所以清除了原來的內(nèi)容

      out.close();//關(guān)閉文件

      System.out.println(”clear data true!“);

      }catch(IOException e){}

      }else{

      System.err.println(”File “data” Missing!“);

      }

      }

      public void deleteData(long deleteNumber)//刪除某條號碼數(shù)據(jù)

      throws IOException,FileNotFoundException

      {

      isDelete = true;

      try{

      DataMap mp = new DataMap();//生成一個自己編寫的容器

      long j=0;

      String s1=”“,s2=”“,s3=”“;

      BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s1=in.readLine())!=null)

      {

      j=numberTokenizer(s1);

      mp.put(j,s1);

      }

      try{

      if(mp.containsKey(String.valueOf(deleteNumber).toString()))

      {

      mp.remove(deleteNumber);

      }else

      throw new NumberNotFoundException();

      Collection c = mp.values();

      Iterator iter = c.iterator();

      while(iter.hasNext())

      {

      s1 =(String)iter.next();

      s3 +=s1+”n“;

      }

      BufferedReader in2 =

      new BufferedReader(new StringReader(s3));

      PrintWriter out =

      new PrintWriter(new BufferedWriter(new FileWriter(”c:data.txt“)));

      //System.out.println(”delete No“+deleteNumber);

      while((s1 = in2.readLine())!=null)

      {

      out.println(s1);

      } out.close();}catch(NumberNotFoundException e){

      isDelete = false;

      System.out.println(deleteNumber+” no found :(“);

      }

      }catch(IOException e){}

      }

      public long numberTokenizer(String s)

      throws IOException

      {

      StringTokenizer st =

      new StringTokenizer(s,” “);

      return Integer.valueOf((st.nextToken())).longValue();

      }

      public void findData(long find)//查找數(shù)據(jù)

      throws IOException,NumberNotFoundException

      {

      isFind = true;

      String s = ”“,findString =”“;long i;DataMap dm = new DataMap();BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s=in.readLine())!=null)

      {

      i=numberTokenizer(s);

      dm.put(i,s);

      }

      //in.close();

      try{

      if(dm.containsKey(String.valueOf(find).toString()))

      {

      findString = dm.get(find);

      System.out.println(”學號“+find+”學生的資料是:“);

      System.out.println(findString);

      }else

      throw new NumberNotFoundException();

      }catch(NumberNotFoundException e){

      System.out.println(find+” no found :(“);

      isFind = false;

      }

      }

      public static void print()//讀取文本文件把數(shù)據(jù)打印到終端的方法

      throws IOException

      {

      try{

      BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      String read = ”“;

      while((read = in.readLine())!=null)

      System.out.println(read);

      }catch(IOException e){}

      }

      public static void timeOut(double sec)//停頓短暫時間的一個方法完全可以不要這個功能

      {

      double seconds = sec;

      long t = System.currentTimeMillis()+(int)(seconds*1000);

      while((System.currentTimeMillis())

      ;

      }

      public void numSort()//按學號排序

      throws IOException

      {

      long i = 0;

      String s = ”“;

      try{

      DataArrayList dal = new DataArrayList();

      BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s=in.readLine())!=null)

      {

      i=numberTokenizer(s);

      dal.add(i);

      }

      Collections.sort(dal);

      DataMap dm = new DataMap();

      BufferedReader in2 =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s=in2.readLine())!=null)

      {

      i=numberTokenizer(s);

      dm.put(i,s);

      }

      PrintWriter out =

      new PrintWriter(new BufferedWriter(new FileWriter(”c:data.txt“)));

      Iterator it = dal.iterator();

      long temp = 0;

      String tempStr = ”“;

      while(it.hasNext())

      {

      temp = Integer.valueOf((String)it.next()).longValue();

      tempStr = dm.get(temp);

      out.println(tempStr);

      }

      out.close();

      }catch(IOException e){}

      }

      public void rewrite()

      throws IOException,NumberNotFoundException

      {

      try{

      System.out.print(”請輸入你要修改的學生號碼:“);

      BufferedReader in =

      new BufferedReader(new InputStreamReader(System.in));

      String inputLine = in.readLine();

      long num = Integer.valueOf(inputLine).longValue();

      findData(num);

      if(isFind)

      { deleteData(num);System.out.print(”請重新輸入該號碼:“);String str = inputData();

      addData(str);

      System.out.println(”rewrite true!“);

      }

      }catch(IOException e){}

      catch(NumberNotFoundException e){}

      }

      public int count()

      throws IOException

      {

      DataArrayList dal = new DataArrayList();

      try{

      String s = ”“;

      long i =0;

      BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s=in.readLine())!=null)

      {

      i=numberTokenizer(s);

      dal.add(i);

      }

      }catch(IOException e){}

      return dal.size();

      } } /* *

      * @author RangWei * TODO 這是個寫的一個容器,繼承公共類HashMap * 大概的功能就相當一個數(shù)組

      *

      */ class DataMap extends HashMap//一個存儲數(shù)據(jù)的Map

      {

      public void put(long i,String str)//把學號和數(shù)據(jù)放進這個Map

      {

      //以后一個學號(key)對應的是一個人的數(shù)據(jù)(value)

      put(String.valueOf(i).toString(),str);

      }

      public void remove(long i)//接收學號,然后刪除學號(key)和它對應的數(shù)據(jù)(value)

      {

      remove(String.valueOf(i).toString().toString());

      }

      public String get(long i)//接收一個學號,然后返回這個key對應的value

      {

      String s = String.valueOf(i).toString();

      if(!containsKey(s))

      {

      System.err.println(”Not found Key: "+s);

      }

      return(String)get(s);

      } } /*

      *

      * @author RangWei * * TODO 這個類繼承ArrayList * 用來按數(shù)字排序,在用號碼排序時要用到它

      *

      */ class DataArrayList extends ArrayList {

      public void add(long num)

      {

      String numToString = String.valueOf(num).toString();

      add(numToString);

      } } /* *

      * @author RangWei * * TODO 增加的一個Exception,主要是在文件里沒有要找

      * 的號碼就拋出

      *

      */ class NumberNotFoundException extends Exception {

      public NumberNotFoundException()

      {} }

      第三篇:通訊錄管理系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設計報告

      信息科學與技術(shù)學院 程序設計基礎(chǔ)課程設計報告

      題目名稱: 通信管理系統(tǒng) 學生姓名: 學 號: 專業(yè)班級: 指導教師:

      2016年 12月 31日

      目錄

      1.課程設計題目與要求........................1

      1.1設計題目..........................................1 1.2設計要求..........................................1

      2.總體設計..................................2

      2.1 總體功能框架......................................2 2.2 數(shù)據(jù)結(jié)構(gòu)概要設計..................................2

      3.詳細設計..................................3

      3.1 數(shù)據(jù)結(jié)構(gòu)詳細設計..................................3 3.2 系統(tǒng)功能詳細設計.................................10

      4.運行結(jié)果.................................16 5.課程設計總結(jié).............................20

      5.1 編程中的問題及解決方法...........................20 5.2 小結(jié).............................................20 5.3 心得體會.........................................20 5.4 程序設計方法.....................................20

      參考文獻...................................21

      1.課程設計題目與要求

      1.1設計題目 通信管理系統(tǒng) 1.2設計要求

      用C/C++設計出模擬手機通信錄管理系統(tǒng),實現(xiàn)對手機中的通信錄進行管理。

      (一)功能要求

      (1)查看功能:選擇此功能時,列出下列三類選擇。

      A 辦公類 B 個人類 C 商務類,當選中某類時,顯示出此類所有數(shù)據(jù)中的姓名和電話號碼)

      (2)增加功能:能錄入新數(shù)據(jù)(一個結(jié)點包括:姓名、電話號碼、分類(可選項有:A 辦公類 B 個人類 C 商務類)、電子郵件)。例如

      楊春 *** 商務類 Chuny@126.C++om 當錄入了重復的姓名和電話號碼時,則提示數(shù)據(jù)錄入重復并取消錄入;當通信錄中超過15條信息時,存儲空間已滿,不能再錄入新數(shù)據(jù);錄入的新數(shù)據(jù)能按遞增的順序自動進行條目編號。

      (3)拔號功能:能顯示通信錄中所有人姓名,當選中某個姓名時,屏幕上模擬打字機的效果依次顯示此人電話號碼中的各個數(shù)字,并伴隨相應的拔號聲音。

      (4)修改功能:選中某個人的姓名時,可對此人的相應數(shù)據(jù)進行修改(5)刪除功能:選中某個人的姓名時,可對此人的相應數(shù)據(jù)進行刪除,并自動調(diào)整后續(xù)條目的編號。

      (二)其它要求:

      (1)只能使用C/C++語言,源程序要有適當?shù)淖⑨專钩绦蛉菀组喿x(2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3)建議使用結(jié)構(gòu)和鏈表等數(shù)據(jù)結(jié)構(gòu)

      (4)學生可自動增加新功能模塊(視情況可另外加分)2.總體設計

      2.1 總體功能框架

      新增聯(lián)系人查看通信錄撥號

      功能模塊

      修改信息刪除聯(lián)系人導入通信錄導出通信錄

      退出系統(tǒng)

      圖 2-1 總體功能框架圖

      2.2 數(shù)據(jù)結(jié)構(gòu)概要設計

      本通信管理系統(tǒng)采用的數(shù)據(jù)結(jié)構(gòu)為線性表中的鏈表。鏈表的結(jié)構(gòu)體成員分為數(shù)據(jù)域和指針域。數(shù)據(jù)域為聯(lián)系人(contacts)結(jié)構(gòu)體,成員有聯(lián)系人姓名(name)、聯(lián)系人電話號碼(teleNum)、聯(lián)系人類別(classes)、電子郵件(email)四個。

      圖 2-2 數(shù)據(jù)結(jié)構(gòu)組成 3.詳細設計

      3.1 數(shù)據(jù)結(jié)構(gòu)詳細設計

      結(jié)構(gòu)體名稱:contact,LNode,*LinkList typedef struct {

      string name;//姓名

      string teleNum;//電話號碼

      int classes;//分類

      string email;//電子郵件

      }contacts;

      typedef struct LNode { contacts data;//數(shù)據(jù)域

      struct LNode* next;//指針域 }LNode,*LinkList;

      具體操作:

      InitList(&L)操作結(jié)果:初始化鏈表 具體代碼:

      int InitList(LinkList &L){ L = new LNode;L->next = NULL;return 0;}

      CreateList_H(&L,n)操作結(jié)果:前插法創(chuàng)建一個鏈表

      具體代碼:

      void CreateList_H(LinkList &L,int n){ LinkList p;for(int i = 0;i < n;i++)//根據(jù)聯(lián)系人個數(shù)創(chuàng)建鏈表 { p = new LNode;cout <<“請輸入聯(lián)系人的姓名:”;

      cin >> p->data.name;cout <<“請輸入聯(lián)系人的電話號碼:”;cin >> p->data.teleNum;cout <<“請輸入聯(lián)系人的分類(分類如下,輸入相應序號即可)”<< endl;cout <<“1 辦公類 2 個人類 3 商務類”<< endl;cin >> p->data.classes;cout <<“請輸入聯(lián)系人的電子郵件:”;cin >> p->data.email;p->next = L->next;L->next=p;} }

      CheckAll(L,c)

      操作結(jié)果:顯示類別為c的聯(lián)系人姓名和電話號碼

      具體代碼:

      void CheckAll(LinkList L,int c)//c是聯(lián)系人類別 {

      LinkList p;

      p = L->next;

      cout <<“姓名tt”<<“電話號碼”<< endl;//表頭

      while(p)//當鏈表沒到尾部時

      {

      if(p->data.classes==c)//若符合類別則輸出聯(lián)系人姓名和電話號碼

      {

      cout << p->data.name <<“tt”<< p->data.teleNum << endl;

      }

      p=p->next;

      } } CheckAll(L)

      操作結(jié)果:顯示已有聯(lián)系人的姓名 具體代碼:

      void CheckAll(LinkList L){ LinkList p;p=L->next;while(p)

      { cout << p->data.name << endl;p=p->next;} } Search(L, name)

      操作結(jié)果:找到名為name的聯(lián)系人位置

      具體代碼:

      LinkList Search(LinkList L,string name){ LinkList p;p=L->next;while(p&&p->data.name!=name)//當鏈表沒到尾部且沒找到聯(lián)系人時 { p=p->next;} return p;}

      IfExist(L, c)操作結(jié)果:判斷是否存在聯(lián)系人contacts 具體代碼:

      char IfExist(LinkList L,contacts c){ LinkList p;p=L->next;while(p&&p->data.name!=c.name)//根據(jù)姓名查找是否存在該聯(lián)系人

      { p=p->next;} if(!p)//若到達鏈表尾部,則不存在 return 'n';if(p->data.teleNum==c.teleNum)//若找到聯(lián)系人姓名 if(p->data.classes==c.classes)//依次判斷電話號碼、類別、電子郵件是否相同

      if(p->data.email==c.email)return 'y';return 'n';} Length(L)

      操作結(jié)果:獲取鏈表的長度 具體代碼:

      int Length(LinkList L){ int i=0;LinkList p=L->next;while(p){ ++i;p=p->next;} return i;} Add(&L, c)操作結(jié)果:把contacts添加到鏈表中 具體代碼:

      int Add(LinkList &L,contacts c){ LinkList p,s;if(Length(L)>=MAXSIZE)//判斷鏈表長度是否達到最大值

      { cout <<“存儲空間已滿,無法新增聯(lián)系人!”<< endl;return 0;} if(IfExist(L,c)=='y')//判斷輸入的聯(lián)系人是否已經(jīng)存在 { cout <<“對不起,您輸入的聯(lián)系人已存在!”<< endl;return 0;} //若通訊錄中不存在該聯(lián)系人,則增加到通信錄 p=L;s=new LNode;s->data=c;s->next=p->next;p->next=s;return 0;} Dail(L,name)

      操作結(jié)果:撥打姓名為name的聯(lián)系人的電話 具體代碼:

      void Dail(LinkList L,string name){ LinkList p,s;p=L->next;s=Search(L,name);//根據(jù)姓名查找聯(lián)系人所在

      //模擬打字機效果,輸出聯(lián)系人電話號碼 string tele=s->data.teleNum;for(int i=0;i

      cout << endl;//播放聲音

      PlaySound(“E:670.wav”,NULL,SND_FILENAME|SND_ASYNC);}

      ChangeInfo(&L,name)操作結(jié)果:修改姓名為name的聯(lián)系人的信息

      具體代碼:

      void ChangeInfo(LinkList &L,string name){ LinkList p;p=Search(L,name);//找到聯(lián)系人的位置所在 cout <<“ 請輸入要修改的信息(輸入對應序號即可):”<< endl;cout <<“1 姓名”<< endl;cout <<“2 電話號碼”<< endl;cout <<“3 分類”<< endl;cout <<“4 電子郵件”<< endl;

      //根據(jù)選擇修改聯(lián)系人信息 int elec;cin >> elec;switch(elec){ case 1: { cout <<“姓名改為:”<< endl;string newName;cin >> newName;p->data.name=newName;break;} case 2: {

      cout <<“電話號碼改為:”<> newTele;p->data.teleNum=newTele;break;} case 3: {

      cout <<“分類改為(分類如下,輸入相應序號即可)”;cout <<“1 辦公類 2 個人類 3 商務類”<< endl;int newCalsses;cin >> newCalsses;p->data.classes=newCalsses;break;} case 4: {

      cout <<“電子郵件改為:”<< endl;string newEmail;cin >> newEmail;p->data.email=newEmail;break;} } }

      Delete(&L,name)操作結(jié)果:刪除姓名為name的聯(lián)系人 具體代碼:

      void Delete(LinkList &L,string name){ LinkList p=L,s;//找到需刪除聯(lián)系人的前一個位置

      while(p->next&&p->next->data.name!=name){ p=p->next;} s=p->next;p->next=s->next;delete s;//刪除聯(lián)系人 } Read(L)操作結(jié)果:從文件中讀入信息到鏈表

      具體代碼:

      void Read(LinkList L){ LinkList p;

      //打開文件導入通信錄

      ifstream fin;fin.open(“通信錄.txt”,ios::in);string s1,s2,s3,s4;fin >> s1 >> s2 >> s3 >> s4;

      while(!fin.eof())//當沒有到文件尾時

      {

      string s5;

      contacts c;

      fin >> c.name >> c.teleNum >> s5 >> c.email;

      if(s5.compare(“辦公類”)==0)

      c.classes=1;

      if(s5.compare(“個人類”)==0)

      c.classes=2;

      if(s5.compare(“商務類”)==0)

      c.classes=3;

      Add(L,c);//將聯(lián)系人c增加到鏈表中

      } fin.close();}

      操作結(jié)果:將所有聯(lián)系人導出到文件里保存 具體代碼:

      void Write(LinkList L)Write(L){

      endl;

      } LinkList p=L->next;int l=Length(L);//打開文件寫入通信錄

      ofstream fout(“通信錄.txt”,ios::out|ios::trunc);fout <<“姓名t”<<“電話號碼t”<<“分類t”<<“電子郵件 ”<< for(int i=0;idata.name <<“t”<< p->data.teleNum <<“t”;switch(p->data.classes){

      case 1:

      {

      fout <<“辦公類”;

      break;

      }

      case 2:

      {

      fout <<“個人類”;

      break;

      }

      case 3:

      {

      fout <<“商務類”;

      break;

      } } fout <<“t”<< p->data.email;if(i<(l-1))

      fout << endl;p=p->next;} fout.close();3.2 系統(tǒng)功能詳細設計

      3.2.1 文件數(shù)據(jù)讀出(1)函數(shù)原型: void CreateList_H(LinkList &L,int n)(2)函數(shù)功能: 創(chuàng)建鏈表,給鏈表增加n個聯(lián)系人

      (3)函數(shù)形參: CreateList_H(&L,n),其中L是鏈表指針,n是增加的聯(lián)系人的數(shù)目

      (4)函數(shù)算法流程:如圖3-1所示

      3-1算法流程圖1 3.2.2 文件數(shù)據(jù)讀出

      (1)函數(shù)原型: int Add(LinkList &L,contacts c)(2)函數(shù)功能: 單個增加聯(lián)系人

      (3)函數(shù)形參: Add(&L, c),其中L是鏈表指針,c是具體的聯(lián)系人(4)函數(shù)算法流程:如圖3-2所示

      3-2算法流程圖2 3.2.3 文件數(shù)據(jù)讀出

      (1)函數(shù)原型:void Dail(LinkList L,string name)(2)函數(shù)功能: 撥打姓名為name的聯(lián)系人的電話,在撥打時依次顯示此人電話號碼中的各個數(shù)字,并伴隨相應的拔號聲音

      (3)函數(shù)形參: Dail(L, name),其中L為鏈表指針,name為撥號的聯(lián)系人的姓名

      (4)函數(shù)算法流程:如圖3-3所示

      3-3 算法流程圖3 3.2.4 文件數(shù)據(jù)讀出

      (1)函數(shù)原型: void ChangeInfo(LinkList &L,string name)(2)函數(shù)功能: 修改姓名為name的聯(lián)系人的信息

      (3)函數(shù)形參: ChangeInfo(&L,name),其中L為鏈表指針,name為將要修改信息的聯(lián)系人的姓名

      (4)函數(shù)算法流程:如圖3-4所示

      3-4 算法流程圖4 3.2.5 文件數(shù)據(jù)讀出

      (1)函數(shù)原型: void Delete(LinkList &L,string name)(2)函數(shù)功能: 從鏈表中刪除姓名為name的聯(lián)系人

      (3)函數(shù)形參: Delete(&L,name),其中L為鏈表指針,name為將要刪除的聯(lián)系人的姓名

      (4)函數(shù)算3-5所示

      法流程:如圖

      3-5 算法流程圖5 3.2.6 文件數(shù)據(jù)讀出

      (1)函數(shù)原型: void Read(LinkList L)(2)函數(shù)功能: 將文件中的聯(lián)系人信息導入通信管理系統(tǒng)中(3)函數(shù)形參:Read(L),其中L為鏈表指針(4)函數(shù)算法流程:如圖3-6所示

      3-6 算法流程圖6 3.2.7 文件數(shù)據(jù)讀出

      (1)函數(shù)原型: void Write(LinkList L)(2)函數(shù)功能: 將通信管理系統(tǒng)中所有聯(lián)系人的各項信息有序的導出,保存在文件里

      (3)函數(shù)形參: Write(L),其中L為鏈表指針(4)函數(shù)算法流程:如圖3-7所示

      3-7 算法流程圖7 4.運行結(jié)果

      (1)打開系統(tǒng),顯示主菜單界面,如圖4-1所示:

      圖4-1 主菜單界面

      (2)輸入數(shù)字1,進行新增聯(lián)系人的操作。接著輸入1選擇批量增加,輸入數(shù)字2選擇單個增加。批量增加如圖4-2所示,單個增加如圖4-3所示:

      圖4-2 批量增加聯(lián)系人

      圖4-3 單個增加聯(lián)系人

      (3)輸入數(shù)字2,進行查看通信錄的操作,然后選擇聯(lián)系人的類別,查看此類中的所有聯(lián)系人姓名及電話號碼,如圖4-4所示:

      圖4-4 按類別查看聯(lián)系人

      (4)輸入數(shù)字3,進行撥號操作,如圖4-5所示:

      圖4-5 撥號

      (5)輸入數(shù)字4,進行修改信息操作,然后輸入將要修改信息的聯(lián)系人姓名,再選擇學要修改的信息項,如圖4-6所示:

      圖4-6 修改聯(lián)系人信息

      (6)輸入數(shù)字5,然后輸入將要刪除的聯(lián)系人姓名,進行刪除聯(lián)系人的操作,如圖4-7所示:

      圖4-7 刪除聯(lián)系人

      (7)輸入數(shù)字6,進行導入通信錄操作,將文件“通訊錄.txt”中的聯(lián)系人信息導入通訊管理系統(tǒng),如圖4-8所示:

      圖4-8 導入通信錄

      (8)輸入數(shù)字7,進行導出通信錄操作,如圖4-9所示;導出的通信錄如圖4-10所示:

      圖4-9 導出通信錄

      圖4-10 已導出通信錄列表

      (9)輸入數(shù)字0,退出通信管理系統(tǒng),如圖4-11所示:

      圖4-11 退出通信管理系統(tǒng) 5.課程設計總結(jié)

      5.1 編程中的問題及解決方法

      在本次程序設計過程中,遇到的主要問題是模擬打字機效果輸出聯(lián)系人電話號碼以及從導入通信錄。

      前者是由于對字符串的理解不到位,后來查閱了相關(guān)資料后意識到可以將字符串看作字符數(shù)組,從而獲取單個的字符,然后在每個字符的輸出后利用系統(tǒng)的休眠函數(shù)Sleep設置停頓,從而達到想要的效果。

      后者是因為在導出通信錄的時候多輸出了一個回車換行符,導致在進行文件讀入時多讀入一個回車換行符,以至于總是多一個聯(lián)系人。然后便在導出文件時,不再在末尾輸出回車換行符,從而解決了該問題。5.2 小結(jié)

      總的來說這次課程設計完成總體較好。首先在已經(jīng)學習了的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上,我很快的想出了具體的設計思路,接著利用課余時間寫出了大體的框架。再寫出大題框架后隨即進行了細節(jié)的完善,最后大概用了兩天時間進行各項功能的調(diào)試。在代碼的編寫過程中并未產(chǎn)生太大瓶頸,遇到問題在查閱相關(guān)資料以及仔細調(diào)試后也得到了很好地解決,這是一次能好的體驗,也是對自己能力的一次考驗。5.3 心得體會

      經(jīng)過這次課程設計,我對數(shù)據(jù)結(jié)構(gòu)這門課程有了更深刻的了解,不再僅僅是書本上抽象的代碼,還對如和將數(shù)據(jù)結(jié)構(gòu)應用到具體的實例中有了更好的認識。編程不僅需要對理論知識的理解,更重要的是它實際的應用,只有具體地進行過程序的設計,才能有更深刻的記憶和領(lǐng)會。同時通過查閱資料和讀別人的代碼,我也學會到一些新的內(nèi)容和一些巧妙的思想。5.4 程序設計方法

      本程序設計主要采用的方法是利用結(jié)構(gòu)體進行編程,而采用的數(shù)據(jù)結(jié)構(gòu)是線性表中的鏈表結(jié)構(gòu)。參考文獻

      [1] 嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(c語言版)[M].2.北京:清華大學出版社,2016 [2] 陳維新,林小茶.c++面向?qū)ο笳n程設計教程[M].清華大學出版社

      第四篇:C#學生成績管理系統(tǒng)課程設計剖析

      目錄

      一、設計目的.............................................1

      二、需求分析.............................................2 2.1系統(tǒng)需求簡介.......................................2 2.1.1系統(tǒng)目標......................................2 2.1.2功能需求分析..................................2 2.1.3性能需求分析..................................2 2.2系統(tǒng)業(yè)務功能分析...................................2 2.2.1具體分析有兩個角色:老師和學生................3 2.2.2流程圖.......................................3

      三、模塊分析及設計.......................................3

      四、數(shù)據(jù)庫設計...........................................4 4.1數(shù)據(jù)字典..........................................4 4.1.1數(shù)據(jù)流.......................................4 4.1.2 數(shù)據(jù)存儲.....................................4 4.2 E-R圖...........................................5 4.3系統(tǒng)數(shù)據(jù)庫的設計...................................6

      五、設計過程及要點.......................................9 5.1數(shù)據(jù)庫及窗體設計...................................9 5.2 主要代碼........................................11

      六、設計總結(jié)............................................12

      七、參考資料............................................12

      一、設計目的

      為了提高高校學生成績信息的管理效率,方便學生和教師對學生成績信息進行查詢、方便學校里面管理員去管理和查詢學生信息,建立一個學生成績管理系統(tǒng),使學生信息管理工作規(guī)范化,系統(tǒng)化,程序化,避免學生成績管理的隨意性,提高信息處理的速度和準確性,能夠及時、準確、有效的查詢和修改學生信息是必須而且十分迫切的工作。本次課程設計題目為《學生成績管理系統(tǒng)》,涉及成績管理系統(tǒng)的登錄界面、老師對學生成績的查詢、學生對學生成績的查詢、以及老師對學生成績的增刪改查分析統(tǒng)計等內(nèi)容。本功能實現(xiàn)對學生信息、教師信息情況信息的管理和統(tǒng)計、課程信息和成績信息查看及維護。

      本課程設計的目的是使學生能熟練掌握簡單的簡單Windows窗體應用程序的設計和數(shù)據(jù)庫的應用,希望通過本次課程設計鍛煉學生使用C#語言解決實際問題的能力。本系統(tǒng)后臺數(shù)據(jù)庫采用Microsoft SQL Server 數(shù)據(jù)庫,該數(shù)據(jù)庫系統(tǒng)在安全性、準確性和運行速度方面有絕對的優(yōu)勢,并且處理數(shù)據(jù)量大,效率高;前臺采用Microsoft 公司的Visual Studio 2008作為主要開發(fā)工具,可與SQL Server 2005數(shù)據(jù)庫無縫鏈接。本報告詳細的介紹了學生信息管理系統(tǒng)的開發(fā)過程,主要涉及到的工作如下:設計目的、需求分析、模塊分析及設計、數(shù)據(jù)庫設計、制作過程及要點、設計總結(jié)。

      二、需求分析

      2.1系統(tǒng)需求簡介

      2.1.1系統(tǒng)目標

      根據(jù)查詢條件實現(xiàn)學生信息的查詢 學生選課信息查詢、成績信息的查詢

      (3)學生信息、課程信息、成績信息的增加、刪除、修改(4)對基本信息完成增加、刪除、修改時,需注意表與表之間的關(guān)聯(lián)

      2.1.2功能需求分析

      本系統(tǒng)的功能需求分析如下:

      學生信息查詢:學生可以根據(jù)學號、姓名、專業(yè)進行查詢.學生信息管理:主要是用于學生信息更新、插入、刪除; 學生成績錄入:用于學生成績管理,錄入學生成績,也可以更新。

      2.1.3性能需求分析

      (1)登錄、用戶界面需求:簡潔、易懂、易用、友好的用戶界面。(2)安全保密性需求:只有憑借用戶名和密碼登陸系統(tǒng),才能進行信息的管 理等。

      2.2系統(tǒng)業(yè)務功能分析

      2.2.1具體分析有兩個角色:老師和學生

      學生只能有查詢的權(quán)利,其中包括按學號查詢,按姓名查詢和按課程號查詢;

      而老師則有查詢以及對學生成績增刪改查分析統(tǒng)計功能,而分析主要是分析每一課程的及格人數(shù),不及格人數(shù)和及格率等,統(tǒng)計則是統(tǒng)計各個班級和課程成績的升序排序等。

      2.2.2流程圖

      圖一 總流程圖

      三、模塊分析及設計

      《學生成績管理系統(tǒng)》包括 5個模塊:登錄及主界面,成績添加,成績查詢,成績增刪改,成績分析與統(tǒng)計。登陸及主界面:用戶人員在登錄界面中輸入用戶名與密碼。通過用戶名與數(shù)據(jù)庫里的用戶表相比配,將學生與教師區(qū)分開,二者各自進入自己的頁面。二者擁有各自權(quán)限,分別擁有不同的功能。

      成績添加:主要實現(xiàn)學生成績的添加功能,將學生的各種信息添加到數(shù)據(jù)庫中。

      成績查詢:主要三種方式,按學號,按姓名,按課程號查詢學生的成績。

      成績增刪改:主要是老師對學生的各項信息或成績的修改,刪除,添加等,以實現(xiàn)學生成績管理系統(tǒng)的及時更新。

      成績分析統(tǒng)計:對學生成績的分析統(tǒng)計包括各個學生或課程的及格人數(shù),不及格人數(shù),及格率,學生成績的排序等等。

      四、數(shù)據(jù)庫設計

      4.1數(shù)據(jù)字典

      4.1.1數(shù)據(jù)流

      課程信息:課程號,課程名稱,學期,課程時間,學分等信息 學生信息:學號,姓名,專業(yè),性別,生日,年齡,現(xiàn)狀等信息 教師信息:教師編號,姓名等信息 4.1.2 數(shù)據(jù)存儲

      成績表:包括學生姓名,學號,課程號,成績等信息 登錄信息表:包括學生學號,密碼及教師編號,密碼等信息 4.2 E-R圖

      圖二 學生信息E-R圖

      圖三 課程信息E-R圖

      圖四 教師信息E-R圖

      圖五 總E-R圖

      4.3系統(tǒng)數(shù)據(jù)庫的設計

      綜合以上分析,要實現(xiàn)系統(tǒng)功能,應該建立如下表:

      表一 課程表

      表二 學生表

      表三 成績表

      表四 教師表

      表五 用戶表

      五、設計過程及要點

      這次課程設計我主要做數(shù)據(jù)庫和登陸界面的設計并實現(xiàn)該系統(tǒng)的登錄功能。

      5.1數(shù)據(jù)庫及窗體設計

      其中數(shù)據(jù)庫我一共設計了五個表,分別是學生表,課程表,成績表,教師表和用戶表,這些表的詳細信息已經(jīng)在上面有了介紹。

      然后就是登錄功能的實現(xiàn)。

      圖六 登錄窗體

      登錄窗體主要用了3個label控件,2個textbox控件,2個radioButton控件,2個button控件,實現(xiàn)了教師跟學生的登錄,用戶名跟密碼輸入正確后,選擇老師或者學生后分別進入各自的主界面,在主界面中可以對學生的成績進行查詢,刪除等等操作。老師和學生的主界面分別如下圖:

      圖七 學生主界面

      圖八 教師主界面

      5.2 主要代碼

      namespace WindowsFormsApplication1 { public partial class 登錄 : Form { public 登錄(){

      InitializeComponent();sqlhelper = new Sqlhelper(“server=.;database=xscj;integrated security=true”);} Sqlhelper sqlhelper private void button1_Click(object sender, EventArgs e){ string sn;string str = “server=.;database=xscj;integrated security=true”;SqlConnection conn = new SqlConnection(str);conn.Open();

      if(radioButton1.Checked){ textBox1.Text.Trim()+ “'and password='” +textBox2.Text.Trim()+ “'”;SqlCommand comm = new SqlCommand(cstr, conn);SqlDataReader dr = comm.ExecuteReader();if(dr.Read()){ sn = textBox1.Text.Trim();教師界面 f1 = new 教師界面();f1.Show();this.Visible = false;} else { MessageBox.Show(“輸入有誤,請重新輸入!”);textBox1.Text = “";textBox2.Text = ”“;} } if(radioButton2.Checked){ string cstr = ”select * from [user] where type='教師'and uid='“ + 11

      string cstr = ”select * from [user] where type='學生'and uid='“ +textBox1.Text.Trim()+ ”'and password='“ + textBox2.Text.Trim()+ ”'“;SqlCommand comm = new SqlCommand(cstr, conn);SqlDataReader dr = comm.ExecuteReader();if(dr.Read()){ sn = textBox1.Text.Trim();學生界面 f2 = new 學生界面();f2.Show();this.Visible = false;} else { MessageBox.Show(”輸入有誤,請重新輸入!“);textBox1.Text = ”“;textBox2.Text = ”";} } conn.Close();conn.Dispose();} } }

      六、設計總結(jié)

      為期一周的課程設計結(jié)束了,在老師和同學的幫助下,我基本完成系統(tǒng)的設計。我們小組按照系統(tǒng)工程軟件設計的要求,從設計目的、需求分析、模塊分析及設計、數(shù)據(jù)庫設計等各個步驟,分步完成系統(tǒng)的各項任務,實現(xiàn)了系統(tǒng)中的學生信息查詢,學生信息增刪改,學生信息添加等模塊的功能。

      在這短短的五天里收獲如下: 鞏固和加深了對C#的理解,提高綜合運用本課程所學知識的能力。

      2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。

      3、通過實際編譯系統(tǒng)的分析設計、編程調(diào)試,掌握應用軟件的分析方法和工程設計方法。

      4、更加深刻的了解了小組團隊協(xié)作的重要性,只有整個小組的人通力合作才可能會完成一個項目并且進步。

      根據(jù)我在課程設計中遇到的問題,我將在以后的學習當中注意以下幾點:

      認真上好專業(yè)實驗課,多在實踐中鍛煉自己。

      2、寫程序的過程中要考慮周到,嚴密。

      3、在做設計的時候要有信心,有耐心,切勿浮躁。

      4、認真的學習課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學會靈活運用。

      5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。

      七、參考資料

      [1] 錢能.C++程序設計,2008,16(2):233-237 [2] 錢能.C++程序設計試驗指導,2008.34(3):35-38 [3] 譚浩強.C程序設計.北京:清華大學出版社,2001 13

      第五篇:通訊錄管理系統(tǒng)

      課 程 設 計 任 務 書

      C語言課程設計

      (部)

      業(yè)

      學生姓名

      06 月

      信息科學與電氣工程學院

      計算機科學與技術(shù)

      計職141

      王雪

      140819139 日至

      07 月

      04 日

      周 指導教師

      2015 年 6月 23日

      一、課程設計目的

      將理論教學中涉及到的知識點貫穿起來,對不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設計題目進行綜合性應用,對所學知識達到融會貫通的程度。通過課程設計,學生在下述各方面的能力應該得到鍛煉:

      (1)進一步鞏固、加深學生所學專業(yè)課程《C++程序設計語言》的基本理論知識,理論聯(lián)系實際,進一步培養(yǎng)學生綜合分析問題,解決問題的能力。

      (2)全面考核學生所掌握的基本理論知識及其實際業(yè)務能力,從而達到提高學生素質(zhì)的最終目的。

      (3)利用所學知識,開發(fā)小型應用系統(tǒng),掌握運用C++語言編寫調(diào)試應用系統(tǒng)程序,訓練獨立開發(fā)應用系統(tǒng),進行數(shù)據(jù)處理的綜合能力。

      (4)對于給定的設計題目,如何進行分析,理清思路,并給出相應的數(shù)學模型。

      (5)掌握結(jié)構(gòu)化程序設計方法,熟悉面向?qū)ο蟪绦蛟O計方法。(6)熟練掌握C++語言的基本語法,靈活運用各種數(shù)據(jù)類型。(7)進一步掌握在集成環(huán)境下如何調(diào)試程序和修改程序。設計功能

      錄入聯(lián)系人信息(包括姓名、電話號碼、地址等信息);通訊錄管理系統(tǒng)要求實現(xiàn)以下功能:

      1、輸入每一位聯(lián)系人記錄,將其信息存入文件中。

      2、查詢所有聯(lián)系人的信息,并按可選的自定義規(guī)則進行排序;

      3、記錄修改,將修改的記錄信息保存于文件中。設計要求

      1、設一個通信錄由以下幾項數(shù)據(jù)信息構(gòu)成: 數(shù)據(jù)項 類型

      姓名 字符串

      地址 字符串

      郵政編碼 字符串

      電話號碼 字符串

      試為通信錄數(shù)據(jù)定義類型和定義通信錄變量,實現(xiàn)功能:存取、顯示、刪除記錄、查詢記錄等功能。

      2、要求:界面友好,易于操作 總體設計 系統(tǒng)功能模塊圖:

      添加:可以添加通訊錄記錄,依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱等后,會提示是否繼續(xù)添加。

      顯示:可以以表格形式輸出所有通訊錄里的記錄

      刪除:輸入欲刪除的那個人的名字后,會自動刪除他(她)的記錄內(nèi)容 查詢:可以選擇用姓名、電話、地址三種方式查詢

      修改:輸入欲修改的那個人的名字后,再依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱即可完成修改

      保存:,輸入文件名(帶后綴名)后,即可將通訊錄信息保存到文件

      課程設計名稱及內(nèi)容

      課程設計名稱:單項選擇題標準化考試系統(tǒng)

      設計內(nèi)容:設計并實現(xiàn)一個單項選擇題標準化考試系統(tǒng)。該系統(tǒng)可以完成試題錄入、試題抽取、自動判卷等功能。

      任務和要求

      功能要求:

      (1)用文件保存試題庫。(每個試題包括題干、4個備選答案、標準答案)(2)試題錄入:可隨時增加試題到試題庫中

      (3)試題抽?。好看螐脑囶}庫中可以隨機抽出N道題(N由鍵盤輸入)(4)答題:用戶可實現(xiàn)輸入自己的答案

      (5)自動判卷:系統(tǒng)可根據(jù)用戶答案與標準答案的對比實現(xiàn)判卷并給出成績。

      (二)其它要求:

      (1)只能使用C/C++語言,源程序要有適當?shù)淖⑨?,使程序容易閱讀(2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3)學生可自動增加新功能模塊(視情況可另外加分)

      主要知識點

      l 面向?qū)ο蟪绦蛟O計方法

      l 界面制作,switch的應用。l 類和對象。l 動態(tài)數(shù)組(鏈表)類模板。l 文件的讀寫。

      五、其他

      程序設計可在Microsoft VC++6.0、Borland C++ Builder環(huán)境下進行。

      六、參考資料

      【1】《C語言程序設計》,譚浩強編,清華大學出版社,2008年 出版 【2】《C語言程序設計》,吳明發(fā)編,北京理工大學出版社,2007年出版 【3】《C語言參考手冊》邱仲潘 機械工業(yè)出版社,2004年出版

      【4】《C語言課程設計案例精編》 姜靈之 清華大學出版社 2008年出版

      詳細設計(1).通訊錄: 主要代碼

      #include #include #include struct student

      //結(jié)構(gòu)體 {

      };class inter { private: student st[35];char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];public: void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);

      void del(char name[20]);void find1(char no[13]);void find2(char name[20]);void list1();void list2();int correct(char name[20]);void read();void write();void format();int back(){

      cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      } void print(int i){

      cout<<“學號:”<>back;if(back=='R'||back=='r')return 1;else return 0;

      };

      } cout<<“電話號碼:”<

      inter a;a.format();char select1;cout<

      計職141

      ” <

      <<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” <

      ※” <

      通 迅 錄

      ※” <

      ※” <

      ※” <

      ※” <

      ※” <

      <<“tt

      ”<

      <<“ttt選擇 :”;cin>>select1;

      switch(select1){ case '1':cout<<“

      (1)添加:”<

      cout<<“

      (2)刪除:”<

      (3)修改:”<

      請選擇:”<>select2;switch(select2){ case '1':cout<<“

      輸入添加的資料:”<

      char name[20];

      char address[100];

      char tel_no[12];

      char post_code[7];

      char e_mail[40];

      cout<<“

      輸入學號:”<>no;cout<<“

      輸入姓名:”<>name;cout<<“

      輸入地址:”<>address;cout<<“

      輸入電話號碼:”<>tel_no;cout<<“

      輸入郵編:”<>post_code;

      cout<<“

      輸入E_mail:”<>e_mail;a.add(no,name,address,tel_no,post_code,e_mail);

      cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      char back_add;cin>>back_add;if(back_add=='R'||back_add=='r')goto top;else goto bottom;break;case '2':cout<<“

      輸入要刪除人的姓名:”<

      char name2[20];cin>>name2;a.del(name2);

      cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      char back_del;cin>>back_del;if(back_del=='R'||back_del=='r')goto top;else goto bottom;break;case '3':cout<<“

      輸入需要修改人的姓名:”<

      char name3[20];cin>>name3;if(a.correct(name3))

      } goto top;else goto bottom;break;break;case '2':cout<<“

      (1)根據(jù)姓名查找”<

      cout<<“

      (2)根據(jù)學號查找”<

      請選擇: ”;cin>>select3;switch(select3){ case '1':char name4[20];

      cout<<“

      輸入姓名: ”;cin>>name4;a.find2(name4);

      cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r')goto top;else goto bottom;break;case '2':char no4[13];cout<<“

      輸入學號: ”;cin>>no4;

      a.find1(no4);

      cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      } break;char back_f2;cin>>back_f2;if(back_f2=='R'||back_f2=='r')goto top;else goto bottom;break;case '3':a.write();cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      char back_w;cin>>back_w;if(back_w=='R'||back_w=='r')goto top;else goto bottom;break;case '4':cout<<“

      (1)按學號排序:”<

      cout<<“

      (2)按姓名排序:”<

      請選擇:”;char select4;cin>>select4;switch(select4){ case '1':a.list1();

      cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      char back;cin>>back;if(back=='R'||back=='r')goto top;else goto bottom;break;case '2':a.list2();

      cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      } break;char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;else goto bottom;break;case '5':a.read();cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      char back_r;cin>>back_r;if(back_r=='R'||back_r=='r')

      goto top;else goto bottom;break;case '6':cout<<“

      請確認刪除所有資料!(Y/N)

      ”;

      char select5;cin>>select5;if(select5=='Y'||select5=='y')a.format();cout<<“

      返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      ”;

      } char back_f;cin>>back_f;if(back_f=='R'||back_f=='r')goto top;else goto bottom;break;bottom:cout<<“

      ★★★★★★★★★★★★歡迎使用本軟件!★★★★★★★★★★★

      ”<

      void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){ int x=1;for(int i=0;i<35;i++)return 0;

      } {

      } if(!strcmp(st[i].no,“0”)){

      } if(x==0)break;strcpy(st[i].address,address);strcpy(st[i].e_mail,e_mail);strcpy(st[i].name,name);strcpy(st[i].no,no);strcpy(st[i].post_code,post_code);strcpy(st[i].tel_no,tel_no);x=0;//刪除聯(lián)系人

      void inter::del(char name[20]){

      int x=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].name,name)){

      strcpy(st[i].address,“0”);

      strcpy(st[i].e_mail,“0”);strcpy(st[i].name,“0”);strcpy(st[i].no,“0”);strcpy(st[i].post_code,“0”);strcpy(st[i].tel_no,“0”);

      }

      } } else x=0;if(x==0)cout<<“

      error:輸入姓名錯誤!”<

      int inter::correct(char name[30]){

      int x;for(int i=0;i<35;i++){

      } char select;cout<<“

      (1)修改姓名:”<

      (2)修改學號:”<

      (3)修改地址:”<

      (4)修改郵編:”<

      (5)修改電話號碼:”<

      (6)修改E_MAIL:”<

      請選擇:”;cin>>select;switch(select){ case '1':cout<<“

      輸入要修改的姓名:”;char name1[30];if(!strcmp(st[i].name,name))x=i;

      cin>>name1;strcpy(st[x].name,name1);cout<<“

      修改成功!”<

      輸入要修改的學號:”;

      char no1[13];cin>>no1;strcpy(st[i].no,no1);cout<<“

      修改成功!”<

      輸入要修改的地址:”;

      char address1[100];cin>>address1;strcpy(st[x].address,address1);cout<<“

      修改成功!”<

      輸入要修改的郵編:”;

      char post_code1[7];cin>>post_code1;strcpy(st[x].post_code,post_code1);cout<<“

      修改成功!”<

      輸入要修改的電話號碼:”;char tel_no1[12];

      cin>>tel_no1;strcpy(st[x].tel_no,tel_no1);cout<<“

      修改成功!”<

      輸入要修改的E_MAIL:”;

      char e_mail1[40];

      cin>>e_mail1;

      strcpy(st[x].e_mail,e_mail1);

      cout<<“

      修改成功!”<

      return back();

      break;} } //按學號查詢聯(lián)系人

      void inter::find1(char no[13]){ int x,y=1,z=1;for(int i=0;i<35;i++){

      if(!strcmp(st[i].no,no))

      {

      x=i;

      z=0;

      }

      else y=0;

      if(z==0)break;

      }

      if(y==0)cout<<“

      輸入的學號查找不到??!”<

      print(x);} //按姓名查詢聯(lián)系人

      void inter::find2(char name[20]){

      } //讀取文件 void inter::read(){ int x,y=1,z=1;for(int i=0;i<35;i++){

      } if(y==0)cout<<“

      輸入的姓名查找不到!!”<

      } else y=0;if(z==0)break;x=i;z=0;

      print(x);

      char name1[20];cout<<“

      輸入你要導入的文件名: ”;cin>>name1;strcat(name1,“.txt”);ifstream file(name1);char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120);while(!file.eof()){

      for(int k=0;k<35;k++){

      if(time==0){ strcpy(no,line);time=1;for(int i=0;i<120;i++){

      if(no[i]==':'){ i++;for(int j=0;j<13;j++)

      }

      } {

      }

      st[k].no[j]=no[i];i++;file.getline(line,120,'n');} if(time==1){

      } if(time== 2){ strcpy(name,line);time=2;

      for(int i=0;i<120;i++){

      } file.getline(line,120,'n');if(name[i]==':'){

      } i++;for(int j=0;j<20;j++){

      }

      st[k].name[j]=name[i];i++;

      } strcpy(address,line);time=3;for(int i=0;i<120;i++){

      } file.getline(line,120,'n');if(address[i]==':'){

      } i++;for(int j=0;j<100;j++){

      }

      st[k].address[j]=address[i];i++;if(time==3){

      strcpy(tel_no,line);time=4;for(int i=0;i<120;i++){

      if(tel_no[i]==':'){

      i++;for(int j=0;j<12;j++){

      st[k].tel_no[j]=tel_no[i];

      }

      }

      } }

      i++;file.getline(line,120,'n');

      if(time==4){

      } if(time==5){ strcpy(e_mail,line);strcpy(post_code,line);time=5;for(int i=0;i<120;i++){

      } file.getline(line,120,'n');if(post_code[i]==':'){

      } i++;for(int j=0;j<7;j++){

      }

      st[k].post_code[j]=post_code[i];i++;

      }

      }

      } } time=0;for(int i=0;i<120;i++){

      } file.getline(line,120,'n');if(e_mail[i]==':'){

      } i++;for(int j=0;j<40;j++){

      }

      st[k].e_mail[j]=e_mail[i];i++;

      file.close();//寫入文件 void inter::write(){

      char name[20];cout<<“

      輸入要保存的文件名

      ”;cin>>name;strcat(name,“.txt”);ofstream savefile(name);for(int i=0;i<35;i++)

      } {

      } savefile.close();savefile << “學號:”<

      savefile << “姓名:”<

      savefile << “地址:”<

      savefile << “電話號碼:”<

      savefile << “郵編:”<

      savefile << “E_MAIL:”<

      strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);for(int i=0;i<34;i++){

      for(int j=0;j<35-i;j++){

      if(strcmp(st[j].no,st[j+1].no)>0){ char no[13];

      char name[20];

      char address[100];

      char tel_no[12];

      char post_code[7];

      char e_mail[40];

      strcpy(st[j+1].no,no);

      strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name);

      strcpy(address,st[j].address);

      } for(int k=0;k<35;k++){ int x=0;if(strcmp(st[k].no,“0”))

      }

      } strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address);

      strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no);

      strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code);

      strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail);

      {

      } if(x==1){ cout<

      } } } //按姓名排序 void inter::list2(){

      for(int i=0;i<34;i++){

      for(int j=0;j<35-i;j++){

      if(strcmp(st[j].name,st[j+1].name)>0){ char no[13];

      char name[20];

      char address[100];

      char tel_no[12];

      char post_code[7];

      char e_mail[40];

      strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);strcpy(st[j+1].no,no);

      strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name);

      strcpy(address,st[j].address);

      } for(int k=0;k<35;k++){

      }

      } strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address);

      strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no);

      strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code);

      strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail);

      }

      } int x=0;if(strcmp(st[k].no,“0”)){

      } if(x==1){

      } cout<

      void inter::format(){

      } for(int i=0;i<35;i++){

      } strcpy(st[i].address,“0”);strcpy(st[i].e_mail,“0”);strcpy(st[i].name,“0”);strcpy(st[i].no,“0”);strcpy(st[i].post_code,“0”);strcpy(st[i].tel_no,“0”);

      (2).工作流程圖:

      1.通訊錄主界面

      2.添加:添加通訊錄記錄

      3.顯示:查詢通訊錄記錄

      4.刪除:刪除通訊錄記錄

      5.修改:修改通訊錄記錄

      小結(jié)(收獲和建議)這次的程序?qū)嵲O計實驗是對我們進入大學以來學習程序設計語言結(jié)果的一次大檢驗,面對許多不懂得知識,通過他人的幫助,以及參考他人的成果,自己動手嘗試,修改等,才完成。這個課程設計,花費了我近兩個星期的時間,這也是因為書本不熟悉。通過這次設計,使我對《C語言》這門課程有了更深一步的了解。它不僅是計算機程序設計的重要理論技術(shù)基礎(chǔ),也在我們電子與信息專業(yè)的學習中占據(jù)著十分重要的地位。同時也使我們知道,要學好這門課程,僅學習書本上的知識是不夠的,還要有較強的實踐能力。因為我們學習知識就是為了實踐。而只有多實踐,多編寫程序,才能更好的理解與掌握書本上的東西。利用計算機來編寫程序,也讓我感受到了編程的樂趣,極大的激發(fā)了我的興趣。

      下載8通訊錄管理系統(tǒng)C#編程_課程設計_圖文.(大全五篇)word格式文檔
      下載8通訊錄管理系統(tǒng)C#編程_課程設計_圖文.(大全五篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        通訊錄管理系統(tǒng)

        摘 要 為了人們對他人信息的記憶方便而設計,開發(fā)的一套“通訊錄管理系統(tǒng)“軟件。 通過該題目的設計過程,可以培養(yǎng)學生結(jié)構(gòu)化程序設計的思想,加深對高級語言基本語言要素和控制......

        學生通訊錄管理系統(tǒng)(C語言課程設計實驗報告)

        C語言課程設計報告——劉顯安 C語言課程設計 姓名:劉顯安 學號:09041131 班級:090411 專業(yè):計算機科學與技術(shù) 學院:信息工程學院 設計題目:學生通訊錄管理系統(tǒng) 指導教師:宋文琳 提......

        C語言課程設計學生通訊錄管理系統(tǒng)設計

        C語言課程設計學生通訊錄管理系統(tǒng)設計一、題目內(nèi)容的描述學生通訊錄管理系統(tǒng)設計設計一個學生通信錄,學生通迅錄數(shù)據(jù)信息構(gòu)成內(nèi)容可自行設計(如:姓名、家庭地址、郵政編碼、電......

        C++通訊錄管理系統(tǒng)

        黑龍江工程學院 第一章 問題分析和任務定義 1.1 問題分析 問題: 編寫一個通訊錄管理系統(tǒng)。要求包括通訊錄建立、增加號碼、刪除號碼、查詢號碼(按姓名、按號碼)、修改號碼、......

        通訊錄管理系統(tǒng)[推薦5篇]

        1.題目名稱通訊錄管理系統(tǒng) 2.基本功能 (1)顯示:將所有聯(lián)系人的信息顯示出來 (2)查找:按姓名、手機號碼、QQ號碼進行查找 (3)添加:從鍵盤上錄入聯(lián)系人的有關(guān)信息,包括姓名、手機號碼......

        學生通訊錄管理系統(tǒng)

        “學生通訊信息記錄系統(tǒng)”的設計與實現(xiàn) 一、設計要求 1. 問題的描述 “學生通訊信息記錄系統(tǒng)”是為了實現(xiàn)快速的對學生信息進行錄入、刪除、查找、顯示。各個功能靠函數(shù)實現(xiàn)......

        手機通訊錄管理系統(tǒng)

        #include #include #include #include #include #include class Information { char name[20]; char tel[12]; char kind; char email[50]; public: Information(){} Inform......

        C語言課程設計-通訊錄管理范文合集

        課程設計報告 課程設計題目: 通訊錄管理學生姓名: 專業(yè): 班級:指導教師: 2009年6月16日 實驗題目: 《通訊錄管理》 實驗時間、地點: 2009-6-8到2009-6-12日 信工樓307 實驗......