C語言課程設計及任務書-學生信息管理系統(tǒng)_第1頁
C語言課程設計及任務書-學生信息管理系統(tǒng)_第2頁
C語言課程設計及任務書-學生信息管理系統(tǒng)_第3頁
C語言課程設計及任務書-學生信息管理系統(tǒng)_第4頁
C語言課程設計及任務書-學生信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、內蒙古科技大學課程設計說明書內蒙古科技大學本科生課程設計說明書題 目:c語言課程設計 學生信息管理系統(tǒng)學生姓名:王佳星學 號:1176807329專 業(yè):2011-計算機班 級:3班指導教師:余金林27內蒙古科技大學課程設計任務書課程名稱c語言課程設計設計題目學生信息管理系統(tǒng)指導教師余金林時間一、教學要求1. 鞏固和加深學生對c語言課程的基本知識的理解和掌握2. 掌握c語言編程和程序調試的基本技能3. 利用c語言進行基本的軟件設計4. 掌握書寫程序設計說明文檔的能力5. 提高運用c語言解決實際問題的能力二、設計資料及參數(shù)每個學生在教師提供的課程設計題目中任意選擇一題,獨立完成,題目選定后不可更

2、換。某班學生基本信息管理,包括以下功能:v 從鍵盤輸入包括學號、姓名、性別、出生年月日、籍貫、所在院系、專業(yè)、獎懲信息等,并將其保存在磁盤文件里v 具有進行單項查詢或多項查詢的功能(即按照給定的關鍵字姓名等找出滿足條件的紀錄)v 具有插入、修改和刪除信息的功能v 具有輸出文件數(shù)據(jù)信息的功能三、設計要求及成果1. 分析課程設計題目的功能需求(可選用數(shù)組或鏈表實現(xiàn),可多人(最多3人)協(xié)作完成一個題目)2. 寫出詳細設計說明(至少包括功能實現(xiàn)分析和模塊流程圖)3. 編寫程序代碼,調試程序使其能正確運行(代碼書寫要規(guī)范,標示符要見名知意,要有必要的注釋,每人至少3個函數(shù),每人至少200行代碼,不包括注

3、釋和花括號)4. 設計完成的軟件要便于操作和使用5. 設計完成后提交課程設計報告(請嚴格按照模板進行排版)四、進度安排第一天 選擇課程設計題目,分析課題的要求第二天 編程第三天 編程及調試第四天 寫課程設計報告第五天 提交課程設計報告(打印稿及電子稿)五、評分標準1. 根據(jù)平時上機考勤、表現(xiàn)和進度,教師將每天點名和檢查2. 根據(jù)課程設計完成情況,必須有可運行的軟件。3. 根據(jù)課程設計報告的質量,如有雷同,則所有雷同的所有人均判為不及格。六、建議參考資料1c語言程序設計,譚浩強,清華大學出版社2c語言程序設計課程設計,劉振安,機械工業(yè)出版社目 錄內蒙古科技大學課程設計任務書i第一章 需求分析31

4、.1引言31.2任務概述31.3數(shù)據(jù)描述31.4功能需求31.5性能需求3第二章概要設計42.1總體設計42.2數(shù)據(jù)類型設計(或數(shù)據(jù)結構設計)62.3接口設計 /函數(shù)聲明62.4運行界面設計6第三章詳細設計83.1輸入模塊設計83.2輸出模塊設計83.3查找模塊設計93.4保存及讀取模塊設計10第四章測試分析114.1測試程序執(zhí)行情況11第五章課程設計總結14附錄:程序代碼15參考文獻26致謝26第一章 需求分析1.1 引言學生基本信息管理系統(tǒng)1.2 任務概述1.建立學生信息,信息至少包含學生姓名,學號,性別,年齡,出生日期,家庭地址,e-mail,電話地址等;2.能夠提供新建、瀏覽、查找、修

5、改和刪除通訊錄信息的功能;3.能夠提供安不同方式查詢的功能;如按姓名或電話等查詢;1.3 數(shù)據(jù)描述struct student char no20; char name20; int age; char sex3; /*f表示性別男,m表示性別女*/ char birthday10; char address30; char phone20; char e_mail20; struct student *next; /下個結點;1.4 功能需求1、輸入功能:一次可以完成自定義學生人數(shù)的學生信息記錄的輸入。2、刪除功能:對指定學生的信息進行刪除。3、修改功能:對指定學生的信息進行修改。4、查詢功

6、能:選擇某種方式并輸入該信息查詢符合條件的學生信息。5排序功能:以英語課程的分數(shù)為依據(jù)對學生信息進行排序。6顯示功能:將以上功能操作后的學生信息顯示出來。7退出主菜單。1.5 性能需求1、輸入功能:一次可以完成自定義學生人數(shù)的學生信息記錄的輸入。2、刪除功能:對指定學生的信息進行刪除。3、修改功能:對指定學生的信息進行修改。4、查詢功能:選擇某種方式并輸入該信息查詢符合條件的學生信息。5排序功能:以英語課程的分數(shù)為依據(jù)對學生信息進行排序。6顯示功能:將以上功能操作后的學生信息顯示出來。7退出主菜單。第二章 概要設計2.1 總體設計總體結構我們采取模塊化方式進行程序設計,要求程序的功能設計、數(shù)據(jù)

7、結構設計及整體結構設計合理。也可根據(jù)自己對題目的理解增加新的功能模塊。系統(tǒng)以菜單界面方式(至少采用文本菜單界面,如能采用圖形菜單界面更好)工作,運行界面友好,演示程序以用戶和計算機的對話方式進行2、輸入要刪除的學生的編號,刪除學生信息。1輸入學生的信息: 學生姓名,學號,性別年齡,出生日期,電話 菜單1. 新增學生信息2. 刪除學生信息3. 導入學生信息4. 學生信息搜索5. 學生信息保存6. 退出7保存學生信息:提示保存成功4、輸入你要查找你學生姓名3、輸出學生的學生姓名,學號,性別,年齡,出生日期,家庭地址,e-mail,電話8、退出系統(tǒng)學生管理系統(tǒng)功能模塊圖2.2 數(shù)據(jù)類型設計(或數(shù)據(jù)結

8、構設計)struct student char no20; char name20; int age; char sex3; /*f表示性別男,m表示性別女*/ char birthday10; char address30; char phone20; char e_mail20; struct student *next; /下個結點;2.3 接口設計 /函數(shù)聲明表2.1:函數(shù)列表函數(shù)名函數(shù)格式 /即函數(shù)首部函數(shù)功能void show_menu(); void顯示菜單void menu(); void執(zhí)行菜單void creat_stu();void建立鏈表void insert_stu(

9、); void學生信息錄入void print_stu();void學生信息瀏覽void search_no();void以學號方式查詢信息void search_name();void以姓名方式查詢信息void arrage_stu();void排序void del_stu(); void刪除學生信息void revise_stu();void修改學生信息void save(); void保存信息2.4 運行界面設計主菜單模塊采用switch()函數(shù)從鍵盤選擇相應菜單的對應功能。switch(c) getchar(); case 1:insert_stu();break; /學生信息錄入 c

10、ase 2:print_stu();break; /學生信息瀏覽 case 3:search_no(); break; /以學號方式查詢信息 case 4:search_name(); break; /以姓名方式查詢信息 case 5:del_stu(); break; /刪除學生信息 case 6:revise_stu(); break; /修改學生信息 case 7:arrage_stu();break; /保存信息 case 0:exit(0); /退出 第三章 詳細設計3.1 輸入模塊設計數(shù)據(jù)插入模塊采用scanf( )函數(shù)輸入新聯(lián)系人信息插入至結構數(shù)組中。pf(tt輸入學生學號:t)

11、; scanf(%s,p1-no); /學號 pf(tt輸入學生姓名:t); scanf(%s,p1-name); /姓名 pf(tt輸入學生年齡:t); scanf(%d,&p1-age); /年齡 pf(tt輸入學生性別:t); scanf(%s,p1-sex); /性別 pf(tt輸入學生出生年月:t); scanf(%s,p1-birthday); /出生年月 pf(tt輸入學生地址:t); scanf(%s,p1-address); /地址 pf(tt輸入學生電話:t); scanf(%s,p1-phone); /電話 pf(tt輸入學生e-mail:t); scanf(%s,p1-

12、e_mail); /e-mail n+;3.2 輸出模塊設計數(shù)據(jù)瀏覽模塊采用分屏顯示,每屏3條記錄。用fread或fscanf讀文件,輸出結果。for(p=head-next;p!=null;p=p-next) /讀出信息 pf(學生信息瀏覽n); pf(tt學生學號:t%sn,p-no); pf(tt學生姓名:t%sn,p-name); pf(tt學生年齡:t%dn,p-age); pf(tt學生性別:t%sn,p-sex); pf(tt學生出生年月:t%sn,p-birthday); pf(tt學生地址:t%sn,p-address); pf(tt學生電話:t%sn,p-phone); p

13、f(tt學生e-mail:t%sn,p-e_mail); pf(n); /輸出信息3.3 查找模塊設計1) 按姓名查找模塊通過鍵盤輸入要查找的學生姓名,然后與結構數(shù)組中的姓名信息逐一比對,找出學生信息并輸出void search_name() /學生姓名信息查找 stu *p=null; char name20; if(head=null) /判斷鏈表是否為空 pf(文檔中無記錄!n); return; pf(輸入學生姓名:); scanf(%s,name); for(p=head-next;p!=null;p=p-next) /讀出信息 if(!strcmp(p-name,name)3) 按

14、學號查找模塊通過鍵盤輸入要查找的學生學號,然后與結構數(shù)組中的電話信息逐一比對,找出學生信息并輸出void search_no() /學生學號信息查找 stu *p=null; char no20; if(head=null) /判斷鏈表是否為空 pf(文檔中無記錄!n); return; pf(請輸入學生學號:); scanf(%s,no); for(p=head-next;p!=null;p=p-next) /讀出信息 if(!strcmp(p-no,no)3.4 保存及讀取模塊設計void save() printf(保存信息并結束n); stu *p=null; file *fp; ch

15、ar *filename=fname.txt; if(fp=fopen(fname.txt,w)=null) /出錯檢測 printf(n打不開文件!n); return; if(head-next=null) printf(n信息為空!n); return; else p=head-next; while(p!=null) fprintf(fp,%s %s %d %s %s %s %s %sn,p-no,p-name,p-age, p-sex,p-birthday,p-address,p-phone,p-e_mail);/存入文件 p=p-next; printf(保存完畢!n); fclo

16、se(fp); 第四章 測試分析4.1 測試程序執(zhí)行情況主菜單輸入學生信息學生信息瀏覽按學號查找學生信息按姓名查找學生信息修改學生信息第五章 課程設計總結在我們上機調試程序的過程中,我遇到了很多的問題,說實話這次課程設計自己沒有出多大的力,大部分都是借鑒同學的設計成果,自己設計是總是覺得沒有頭緒,無從下手??吹酵瑢W認真看程序的樣子,還有修改程序時的熟練,我很羨慕他,我想,我也要將c+學好,在將來能為我的就業(yè)加分。在這期末考試前期,學院給我們安排的課程設計周,總讓我們覺的有些為難我們,這樣一個復雜困難而又繁瑣的作業(yè),似乎弄得我們既沒有時間也沒有心情復習,我曾一度地抱怨過學院,在完成它之后,我發(fā)現(xiàn)

17、我錯了,課程設計不僅讓我們鞏固了所學的知識,還使得我們學習到了更多平時所忽略的,最重要的是,它磨礪了我們,讓我們在大學的下一個階段能更好的成長。附錄:程序代碼#include #include #include #define pf printf#define len sizeof(struct student)/定義結構體struct student char no20; char name20; int age; char sex3; /*f表示性別男,m表示性別女*/ char birthday10; char address30; char phone20; char e_mail20

18、; struct student *next; /下個結點;typedef struct student stu;stu *head=null; /全局指針int n,i=0; /全局變量/自定義函數(shù)void show_menu(); /顯示菜單void menu(); /執(zhí)行菜單void creat_stu(); /建立鏈表 void insert_stu(); /學生信息錄入void print_stu(); /學生信瀏覽void search_no(); /以學號方式查詢信息void search_name(); /以姓名方式查詢信息void arrage_stu(); /排序void

19、del_stu(); /刪除學生信息void revise_stu(); /修改學生信息void save(); /保存信息void main() creat_stu(); menu();/創(chuàng)建鏈表void creat_stu() file *fp; long size; stu *p1,*p2; head=(stu *)malloc(sizeof(stu); head-next=null; if(fp=fopen(fname.txt,r)=null) printf(這是新表n); return; fseek(fp,0l,2); size=ftell(fp); if(!size) printf

20、(這是空表n); return; /開始創(chuàng)建鏈表 rewind(fp); /移動到文件首 p2=head-next; /找到但前位置 while(!feof(fp) p1=(stu *)malloc(sizeof(stu); fscanf(fp,%s %s %d %s %s %s %s %sn,p1-no,p1-name,&p1-age, p1-sex,p1-birthday,p1-address,p1-phone,p1-e_mail); p1-next=null; /創(chuàng)建節(jié)點完 if(head-next=null) head-next=p1; else p2-next=p1; p2=p1;

21、n+; p2-next=null; fclose(fp);/執(zhí)行菜單void menu() int c; show_menu(); while(1) scanf(%d,&c); switch(c) getchar(); case 1:insert_stu();break; case 2:print_stu();break; case 3:search_no(); break; case 4:search_name(); break; case 5:del_stu(); break; case 6:revise_stu(); break; case 7:arrage_stu();break; c

22、ase 0:exit(0); /執(zhí)行菜單選項 show_menu(); /顯示菜單void show_menu() pf(n); pf(n菜單n); pf(tt1.輸 入 學 生 信 息 n); pf(tt2.瀏 覽 學 生 信 息 n); pf(tt3.以學號方式查詢信息n); pf(tt4.以姓名方式查詢信息n); pf(tt5.刪 除 學 生 信 息 n); pf(tt6.修 改 學 生 信 息 n); pf(tt7 排 序 n); pf(tt0. 退 出 n); pf(n); pf(n請選擇n);/學生信息錄入void insert_stu() /學生信息錄入 n=0; stu *p1

23、=null,*p2=null; p1=(stu *)malloc(sizeof(stu); pf(n錄入學生信息n); /錄入學生信息 pf(tt輸入學生學號:t); scanf(%s,p1-no); /學號 pf(tt輸入學生姓名:t); scanf(%s,p1-name); /姓名 pf(tt輸入學生年齡:t); scanf(%d,&p1-age); /年齡 pf(tt輸入學生性別:t); scanf(%s,p1-sex); /性別 pf(tt輸入學生出生年月:t); scanf(%s,p1-birthday); /出生年月 pf(tt輸入學生地址:t); scanf(%s,p1-addr

24、ess); /地址 pf(tt輸入學生電話:t); scanf(%s,p1-phone); /電話 pf(tt輸入學生e-mail:t); scanf(%s,p1-e_mail); /e-mail n+; if(head-next=null) head=(stu *)malloc(len); head-next=p1; else for(p2=head;p2-next!=null;p2=p2-next); /*找到最后的結點,然后 將增加的結點掛在它上面*/ p2-next=p1; p1-next=null; save();/保存到文件 /學生信息瀏覽void print_stu() /學生信

25、瀏覽 stu *p=null; if(head=null) /判斷鏈表是否為空 pf(文檔中無記錄!n); return; for(p=head-next;p!=null;p=p-next) /讀出信息 pf(學生信息瀏覽n); pf(tt學生學號:t%sn,p-no); pf(tt學生姓名:t%sn,p-name); pf(tt學生年齡:t%dn,p-age); pf(tt學生性別:t%sn,p-sex); pf(tt學生出生年月:t%sn,p-birthday); pf(tt學生地址:t%sn,p-address); pf(tt學生電話:t%sn,p-phone); pf(tt學生e-ma

26、il:t%sn,p-e_mail); pf(n); /輸出信息 /學生姓名信息查找void search_name() /學生姓名信息查找 stu *p=null; char name20; if(head=null) /判斷鏈表是否為空 pf(文檔中無記錄!n); return; pf(輸入學生姓名:); scanf(%s,name); for(p=head-next;p!=null;p=p-next) /讀出信息 if(!strcmp(p-name,name) pf(您查找的學生是n); pf(tt學生學號:t%sn,p-no); pf(tt學生姓名:t%sn,p-name); pf(tt

27、學生年齡:t%dn,p-age); pf(tt學生性別:t%sn,p-sex); pf(tt學生出生年月:t%sn,p-birthday); pf(tt學生地址:t%sn,p-address); pf(tt學生電話:t%sn,p-phone); pf(tt學生e-mail:t%sn,p-e_mail); pf(n); i=1; /輸出信息 if(!i) pf(無該生信息!請查證:); /沒找到信息時的處理 /學生學號信息查找void search_no() /學生學號信息查找 stu *p=null; char no20; if(head=null) /判斷鏈表是否為空 pf(文檔中無記錄!n

28、); return; pf(請輸入學生學號:); scanf(%s,no); for(p=head-next;p!=null;p=p-next) /讀出信息 if(!strcmp(p-no,no) pf(您查找的學生是n); pf(tt學生學號:t%sn,p-no); pf(tt學生姓名:t%sn,p-name); pf(tt學生年齡:t%dn,p-age); pf(tt學生性別:t%sn,p-sex); pf(tt學生出生年月:t%sn,p-birthday); pf(tt學生地址:t%sn,p-address); pf(tt學生電話:t%sn,p-phone); pf(tt學生e-mail

29、:t%sn,p-e_mail); pf(n); i=1; /輸出信息 if(!i) pf(無該生信息!請查證:); /沒找到信息時的處理 /修改學生信息void revise_stu() stu *p=null; if(head=null) /判斷鏈表是否為空 pf(文檔中無記錄!n); return; char no20; pf(請輸入學生的學號:t); scanf(%s,no); for(p=head-next;p!=null;p=p-next) if(!strcmp(p-no,no) /驗證信息是否正確 pf(您要修改的學生是n); pf(tt學生學號:t%sn,p-no); pf(tt

30、學生姓名:t%sn,p-name); pf(tt學生年齡:t%dn,p-age); pf(tt學生性別:t%sn,p-sex); pf(tt學生出生年月:t%sn,p-birthday); pf(tt學生地址:t%sn,p-address); pf(tt學生電話:t%sn,p-phone); pf(tt學生e-mail:t%sn,p-e_mail); pf(n); /輸出要修改信息 i=1; pf(修改學號為%s的學生n,no); strcpy(p-no,no); pf(tt輸入修改學生姓名:t); scanf(%s,p-name); pf(tt輸入修改學生年齡:t); scanf(%d,&p

31、-age); pf(tt輸入修改學生性別:t); scanf(%s,p-sex); pf(tt輸入修改學生出生年月:t); scanf(%s,p-birthday); pf(tt輸入修改學生地址:t); scanf(%s,p-address); pf(tt輸入修改學生電話:t); scanf(%s,p-phone); pf(tt輸入修改學生e-mail:t); scanf(%s,p-e_mail); pf(n); /輸入修改信息 save(); if(!i) pf(無該生信息!請查證:); /*沒找到信息時的處理*/ /刪除學生信息void del_stu() stu *p=null; if(

32、head=null) /判斷鏈表是否為空 pf(文檔中無記錄!n); return; else char no20; pf(請輸入學生的學號:t); scanf(%s,no); for(p=head;p!=null;p=p-next) if(!strcmp(p-next-no,no) /驗證信息是否正確 pf(您要刪除的學生是n); pf(tt學生學號:t%sn,p-next-no); pf(tt學生姓名:t%sn,p-next-name); pf(tt學生年齡:t%dn,p-next-age); pf(tt學生性別:t%sn,p-next-sex); pf(tt學生出生年月:t%sn,p-next-birthday); pf(tt學生地址:t%sn,p-next-address); pf(tt學生電話:t%sn,p-next-phone); pf(tt學生e-mail:t%sn,p-next-e_mail); pf(n); /輸出要刪除的信息 i=1; if(p-next-next) printf(第一個n); p-next=p-next-next; else p-next=null; n-; save(); return; if(!i) pf(無該生信息!請查證:); /沒找到信息時的處理 return; /按學號排序void arrage_st

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論