c學(xué)生信息管理系統(tǒng)1_第1頁
c學(xué)生信息管理系統(tǒng)1_第2頁
c學(xué)生信息管理系統(tǒng)1_第3頁
c學(xué)生信息管理系統(tǒng)1_第4頁
c學(xué)生信息管理系統(tǒng)1_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報告同組人員:王立權(quán)(組長)趙丹菲孫遜陳光完成日期:2011-6-20指導(dǎo)教師:張光妲一、課程設(shè)計(jì)目的 1.通過c+課程設(shè)計(jì),使學(xué)生能夠?qū)W(xué)到的面向?qū)ο蟮脑O(shè)計(jì)思想運(yùn)用在具體的工作和學(xué)習(xí) 中,加深對類和對象的理解,要求學(xué)生對生活中許多具體的事物抽象出類,并掌握繼承和派 生類、基類、虛函數(shù)和多態(tài)的概念。2、通過這次課程設(shè)計(jì)掌握c+語言程序設(shè)計(jì)的編程思想,為后續(xù)課程打下基礎(chǔ)。3、培養(yǎng)我實(shí)際操作能力和實(shí)踐能力,為以后的工作打下堅(jiān)實(shí)的基礎(chǔ)。課程設(shè)計(jì)的要求     利用學(xué)到的編程知識和編程技巧,要求學(xué)生:1、對系統(tǒng)進(jìn)行功能模塊分析、控制模塊分

2、析正確2、系統(tǒng)設(shè)計(jì)要能完成題目所要求的功能。3、編程簡練,可用,盡可能的使系統(tǒng)的功能更加完善和全面4、使用說明書、流程圖要清楚。5、特別要求自己獨(dú)立完成。二、課程設(shè)計(jì)的內(nèi)容1、課程設(shè)計(jì)的題目及簡介有新生來報到,要逐個錄入其信息,如:學(xué)生姓名,學(xué)號,性別,年齡,出生日期,家庭地址,e-mail,電話文本界面為:1. 新增學(xué)生信息2. 刪除學(xué)生信息3. 導(dǎo)入學(xué)生信息(已經(jīng)保存于的文件信息)4. 學(xué)生信息搜索(按姓名或按學(xué)號)5. 學(xué)生信息統(tǒng)計(jì)6. 學(xué)生信息保存7. 退出2、設(shè)計(jì)說明總體結(jié)構(gòu)我們采取模塊化方式進(jìn)行程序設(shè)計(jì),要求程序的功能設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及整體結(jié)構(gòu)設(shè)計(jì)合理。也可根據(jù)自己對題目的理解增

3、加新的功能模塊。系統(tǒng)以菜單界面方式(至少采用文本菜單界面,如能采用圖形菜單界面更好)工作,運(yùn)行界面友好,演示程序以用戶和計(jì)算機(jī)的對話方式進(jìn)行(1)首先,看題目要求,每一條記錄包括一個學(xué)生姓名,學(xué)號,性別,年齡,出生日期,家庭地址,e-mail,電話。同時,應(yīng)具備以下功能:1、輸入功能:一次可以完成自定義學(xué)生人數(shù)的學(xué)生信息記錄的輸入。2、刪除功能:對指定學(xué)生的信息進(jìn)行刪除。3、修改功能:對指定學(xué)生的信息進(jìn)行修改。4、查詢功能:選擇某種方式并輸入該信息查詢符合條件的學(xué)生信息。5排序功能:以英語課程的分?jǐn)?shù)為依據(jù)對學(xué)生信息進(jìn)行排序。6顯示功能:將以上功能操作后的學(xué)生信息顯示出來。7退出主菜單。3 程序

4、流程圖 各功能模塊的實(shí)現(xiàn)流程圖:1增加學(xué)生信息調(diào)用函數(shù)node* create()判斷gg是否等于一如果是可創(chuàng)建鏈表輸入相應(yīng)的學(xué)生信息如果不是則需要運(yùn)用insert(p)函數(shù)插入結(jié)點(diǎn)增加學(xué)生信息的,并通過chundang(p)函數(shù)進(jìn)行存檔,具體流程如下圖所示判斷以前是否存儲了學(xué)生信息是新增信息退出該功能,返回主菜單,繼續(xù)選擇流程圖新增學(xué)生信息按提示:輸入學(xué)個的各種信息按格式顯示輸入的學(xué)生信息 2刪除學(xué)生信息 調(diào)用函數(shù)node* delete(node* head , int num) 刪除學(xué)生的信息則必須對鏈表結(jié)點(diǎn)進(jìn)行刪除意味著將某個要刪除結(jié)點(diǎn)前后的連續(xù)打斷,去掉該結(jié)點(diǎn),使前后指針變量重新連接

5、,完成鏈表結(jié)點(diǎn)的刪除任務(wù) 流程圖輸入要刪除學(xué)生信息2退出該功能,返回主菜單,繼續(xù)選擇輸入要刪除信息的編號該生信息已刪除,顯示其他同學(xué)的信息輸出所有學(xué)生的信息3導(dǎo)入學(xué)生信息打開存檔文件ifstream filein("out.txt");輸出說存檔的學(xué)生信息導(dǎo)入學(xué)生信息顯示學(xué)生的信息退出該功能,返回主菜單,繼續(xù)選擇 4、學(xué)生信息的搜索 調(diào)用函數(shù)node* sousuo(node* head , char na20) ,按學(xué)生的姓名進(jìn)行搜索退出該功能,返回主菜單,繼續(xù)選擇 輸出所以查詢的學(xué)生信息按照提示輸入學(xué)生的姓名進(jìn)行搜索搜索學(xué)生信息 4流程圖:按學(xué)生信息進(jìn)行排序5總功能模塊

6、圖:2、輸入要刪除的學(xué)生的編號,刪除學(xué)生信息。1輸入學(xué)生的信息: 學(xué)生姓名,學(xué)號,性別,年齡,出生日期,家庭地址,e-mail,電話 菜單1. 新增學(xué)生信息2. 刪除學(xué)生信息3. 導(dǎo)入學(xué)生信息4. 學(xué)生信息搜索5. 學(xué)生信息保存6. 退出7保存學(xué)生信息:提示保存成功4、輸入你要查找你學(xué)生姓名3、輸出學(xué)生的學(xué)生姓名,學(xué)號,性別,年齡,出生日期,家庭地址,e-mail,電話8、退出系統(tǒng)學(xué)生管理系統(tǒng)功能模塊圖三任務(wù)分配陳光:學(xué)生信息的錄入模塊孫遜:學(xué)生信息的瀏覽模塊趙丹菲:學(xué)生信息查找模塊王立權(quán):學(xué)生信息的修改模塊各功能顯示效果模塊圖:輸入學(xué)生信息瀏覽學(xué)生信息查詢學(xué)生信息修改學(xué)生信息4、程序清單/*

7、:學(xué)生信息管理系統(tǒng)學(xué)生信息包括:學(xué)號,姓名,年齡,性別,出生年月,地址,電話,e-mail等。實(shí)現(xiàn)的功能:(1) 系統(tǒng)以菜單方式工作(2) 學(xué)生信息錄入功能(學(xué)生信息用文件保存)-輸入(3) 學(xué)生信息瀏覽功能-輸出(4) 查詢、排序功能-算法(5) 按學(xué)號查詢(6) 按姓名查詢 (7)學(xué)生信息的刪除與修改*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define pf printf#define len sizeof(struct student)/定義結(jié)構(gòu)體struct student

8、 char no20; char name20; int age; char sex3; /*'f'表示性別男,'m'表示性別女*/ char birthday10; char address30; char phone20; char e_mail20; struct student *next; /下個結(jié)點(diǎn);typedef struct student stu;stu *head=null; /全局指針int n,i=0; /全局變量/自定義函數(shù)void show_menu(); /顯示菜單void menu(); /執(zhí)行菜單void creat_stu()

9、; /建立鏈表 void insert_stu(); /學(xué)生信息錄入void print_stu(); /學(xué)生信瀏覽void search_no(); /以學(xué)號方式查詢信息void search_name(); /以姓名方式查詢信息void arrage_stu(); /排序void del_stu(); /刪除學(xué)生信息void revise_stu(); /修改學(xué)生信息void save(); /保存信息void main() creat_stu(); menu();/創(chuàng)建鏈表void creat_stu() file *fp; long size; stu *p1,*p2; head=(s

10、tu *)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("這是空表n"); return; /開始創(chuàng)建鏈表 rewind(fp); /移動到文件首 p2=head->next; /找到但前位置 while(!feof(fp) p1=(stu *)malloc(s

11、izeof(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é)點(diǎn)完 if(head->next=null) head->next=p1; else p2->next=p1; p2=p1; n+; p2->next=null; fclose(fp);/執(zhí)行菜

12、單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; case 0:exit(0); /執(zhí)

13、行菜單選項(xiàng) show_menu(); /顯示菜單void show_menu() pf("n"); pf("n菜單n"); pf("tt1.輸 入 學(xué) 生 信 息 n"); pf("tt2.瀏 覽 學(xué) 生 信 息 n"); pf("tt3.以學(xué)號方式查詢信息n"); pf("tt4.以姓名方式查詢信息n"); pf("tt5.刪 除 學(xué) 生 信 息 n"); pf("tt6.修 改 學(xué) 生 信 息 n"); pf("tt7 排

14、 序 n"); pf("tt0. 退 出 n"); pf("n"); pf("n請選擇n");/學(xué)生信息錄入void insert_stu() /學(xué)生信息錄入 n=0; stu *p1=null,*p2=null; p1=(stu *)malloc(sizeof(stu); pf("n錄入學(xué)生信息n"); /錄入學(xué)生信息 pf("tt輸入學(xué)生學(xué)號:t"); scanf("%s",p1->no); /學(xué)號 pf("tt輸入學(xué)生姓名:t");

15、scanf("%s",p1->name); /姓名 pf("tt輸入學(xué)生年齡:t"); scanf("%d",&p1->age); /年齡 pf("tt輸入學(xué)生性別:t"); scanf("%s",p1->sex); /性別 pf("tt輸入學(xué)生出生年月:t"); scanf("%s",p1->birthday); /出生年月 pf("tt輸入學(xué)生地址:t"); scanf("%s",

16、p1->address); /地址 pf("tt輸入學(xué)生電話:t"); scanf("%s",p1->phone); /電話 pf("tt輸入學(xué)生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); /*找到最后的結(jié)點(diǎn),然后

17、 將增加的結(jié)點(diǎn)掛在它上面*/ p2->next=p1; p1->next=null; save();/保存到文件 /學(xué)生信瀏覽void print_stu() /學(xué)生信瀏覽 stu *p=null; if(head=null) /判斷鏈表是否為空 pf("文檔中無記錄!n"); return; for(p=head->next;p!=null;p=p->next) /讀出信息 pf("學(xué)生信瀏覽n"); pf("tt學(xué)生學(xué)號:t%sn",p->no); pf("tt學(xué)生姓名:t%sn"

18、,p->name); pf("tt學(xué)生年齡:t%dn",p->age); pf("tt學(xué)生性別:t%sn",p->sex); pf("tt學(xué)生出生年月:t%sn",p->birthday); pf("tt學(xué)生地址:t%sn",p->address); pf("tt學(xué)生電話:t%sn",p->phone); pf("tt學(xué)生e-mail:t%sn",p->e_mail); pf("n"); /輸出信息 /學(xué)生姓名信息

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

20、gt;no); pf("tt學(xué)生姓名:t%sn",p->name); pf("tt學(xué)生年齡:t%dn",p->age); pf("tt學(xué)生性別:t%sn",p->sex); pf("tt學(xué)生出生年月:t%sn",p->birthday); pf("tt學(xué)生地址:t%sn",p->address); pf("tt學(xué)生電話:t%sn",p->phone); pf("tt學(xué)生e-mail:t%sn",p->e_mail)

21、; pf("n"); i=1; /輸出信息 if(!i) pf("無該生信息!請查證:"); /沒找到信息時的處理 /學(xué)生學(xué)號信息查找void search_no() /學(xué)生學(xué)號信息查找 stu *p=null; char no20; if(head=null) /判斷鏈表是否為空 pf("文檔中無記錄!n"); return; pf("請輸入學(xué)生學(xué)號:"); scanf("%s",no); for(p=head->next;p!=null;p=p->next) /讀出信息 if(!

22、strcmp(p->no,no) pf("您查找的學(xué)生是n"); pf("tt學(xué)生學(xué)號:t%sn",p->no); pf("tt學(xué)生姓名:t%sn",p->name); pf("tt學(xué)生年齡:t%dn",p->age); pf("tt學(xué)生性別:t%sn",p->sex); pf("tt學(xué)生出生年月:t%sn",p->birthday); pf("tt學(xué)生地址:t%sn",p->address); pf("

23、tt學(xué)生電話:t%sn",p->phone); pf("tt學(xué)生e-mail:t%sn",p->e_mail); pf("n"); i=1; /輸出信息 if(!i) pf("無該生信息!請查證:"); /沒找到信息時的處理 /修改學(xué)生信息void revise_stu() stu *p=null; if(head=null) /判斷鏈表是否為空 pf("文檔中無記錄!n"); return; char no20; pf("請輸入學(xué)生的學(xué)號:t"); scanf("

24、;%s",no); for(p=head->next;p!=null;p=p->next) if(!strcmp(p->no,no) /驗(yàn)證信息是否正確 pf("你要修改的學(xué)生是n"); pf("tt學(xué)生學(xué)號:t%sn",p->no); pf("tt學(xué)生姓名:t%sn",p->name); pf("tt學(xué)生年齡:t%dn",p->age); pf("tt學(xué)生性別:t%sn",p->sex); pf("tt學(xué)生出生年月:t%sn&quo

25、t;,p->birthday); pf("tt學(xué)生地址:t%sn",p->address); pf("tt學(xué)生電話:t%sn",p->phone); pf("tt學(xué)生e-mail:t%sn",p->e_mail); pf("n"); /輸出要修改信息 i=1; pf("修改學(xué)號為%s的學(xué)生n",no); strcpy(p->no,no); pf("tt輸入修改學(xué)生姓名:t"); scanf("%s",p->name);

26、pf("tt輸入修改學(xué)生年齡:t"); scanf("%d",&p->age); pf("tt輸入修改學(xué)生性別:t"); scanf("%s",p->sex); pf("tt輸入修改學(xué)生出生年月:t"); scanf("%s",p->birthday); pf("tt輸入修改學(xué)生地址:t"); scanf("%s",p->address); pf("tt輸入修改學(xué)生電話:t"); sc

27、anf("%s",p->phone); pf("tt輸入修改學(xué)生e-mail:t"); scanf("%s",p->e_mail); pf("n"); /輸入修改信息 save(); if(!i) pf("無該生信息!請查證:"); /*沒找到信息時的處理*/ /刪除學(xué)生信息void del_stu() stu *p=null; if(head=null) /判斷鏈表是否為空 pf("文檔中無記錄!n"); return; else char no20; pf(&

28、quot;請輸入學(xué)生的學(xué)號:t"); scanf("%s",no); for(p=head;p!=null;p=p->next) if(!strcmp(p->next->no,no) /驗(yàn)證信息是否正確 pf("你要刪除的學(xué)生是n"); pf("tt學(xué)生學(xué)號:t%sn",p->next->no); pf("tt學(xué)生姓名:t%sn",p->next->name); pf("tt學(xué)生年齡:t%dn",p->next->age); pf(

29、"tt學(xué)生性別:t%sn",p->next->sex); pf("tt學(xué)生出生年月:t%sn",p->next->birthday); pf("tt學(xué)生地址:t%sn",p->next->address); pf("tt學(xué)生電話:t%sn",p->next->phone); pf("tt學(xué)生e-mail:t%sn",p->next->e_mail); pf("n"); /輸出要刪除的信息 i=1; if(p->

30、next->next) printf("第一個n"); p->next=p->next->next; else p->next=null; n-; save(); return; if(!i) pf("無該生信息!請查證:"); /沒找到信息時的處理 return; /按學(xué)號排序void arrage_stu() stu *p1,*p2; int in=0,j; if(head->next=null) /首先判斷 printf("你還沒有記錄,無法排序n"); return ; printf(&qu

31、ot;n=%d",n); p1=head->next; for(in=0;in<n-1;in+) for(j=0,p1=head->next;j<=n-in-3;p1=p1->next,j+) if(j=0)/第一次比較第一個和第二個節(jié)點(diǎn)信息 if(strcmp(p1->no,p1->next->no)/比較p1本身和p1下一個節(jié)點(diǎn) p2=p1->next; p1->next=p1->next->next; p2->next=p1; head->next=p2; p1=head->next;/從

32、新給cur賦值 /* p1=head->next; p1=p2; 錯誤:如果一個變量=他前一個節(jié)點(diǎn)的next 那么不可以說把另外一個變量賦給它就可以改變它 前一個節(jié)點(diǎn)的next 他只能操作后節(jié)點(diǎn)! */ if(strcmp(p1->next->no,p1->next->next->no)/比較p1下一個和p1下兩個節(jié)點(diǎn) p2=p1->next; p1->next=p1->next->next; p2->next=p1->next->next; p1->next->next=p2; if(strcmp(head->next->no,head->next->next->no)/只有兩個節(jié)點(diǎn)信息時直接比較他們兩個 p1=head->next; head->next=p1->next; p1->next=p1->next->next; head->next->next=p1; if(n=2) /只有兩個節(jié)點(diǎn)信息時把第二個節(jié)點(diǎn)的next賦為空 head->next->nex

溫馨提示

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

最新文檔

評論

0/150

提交評論