版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 本科生課程設(shè)計說明書</p><p> 題 目:C語言課程設(shè)計</p><p> —— 學(xué)生基本信息管理系統(tǒng)</p><p><b> 學(xué)生姓名: </b></p><p><b> 學(xué) 號: </b></p><p> 專
2、 業(yè):軟件工程</p><p> 班 級:軟件一班</p><p><b> 指導(dǎo)教師: </b></p><p> 日 期:2015年1月9日</p><p> C語言課程設(shè)計實驗報告</p><p><b> 1.設(shè)計目的:</b></p>
3、;<p> 學(xué)生信息管理系統(tǒng)設(shè)計</p><p> 學(xué)生信息包括:學(xué)號、姓名、年齡、電話號碼、性別、出生年月、籍貫、QQ、專業(yè)、班級、獎懲信息等。試設(shè)計一學(xué)生信息管理系統(tǒng),使之能提供以下功能:</p><p><b> 系統(tǒng)以菜單方式工作</b></p><p> 學(xué)生信息添加功能---輸入</p><
4、p><b> 查詢功能---算法</b></p><p><b> 按學(xué)號查詢</b></p><p><b> 按姓名查詢</b></p><p> 學(xué)生信息的刪除與修改</p><p> 學(xué)生信息整表瀏覽功能---輸出</p><p>
5、;<b> 2.總體設(shè)計:</b></p><p><b> 程序設(shè)計組成框圖</b></p><p><b> 流程圖</b></p><p><b> 3.詳細設(shè)計:</b></p><p><b> 1>函數(shù)入口說明<
6、/b></p><p> menu()輸出主菜單</p><p> load_info()載入函數(shù):txt轉(zhuǎn)為鏈表</p><p> add_info(STU*h) 增加學(xué)生信息</p><p> search_info(STU*h,int type) 搜索學(xué)生信息</p><p> delete_in
7、fo(STU*h) 刪除學(xué)生信息</p><p> update_info(STU*h) 修改學(xué)生信息</p><p> output_info(STU*h) 輸出學(xué)生信息</p><p> preview_info(STU*h,int type) 預(yù)覽學(xué)生信息</p><p> main() 主函數(shù)</p><p
8、><b> 2>調(diào)用關(guān)系</b></p><p><b> 3>參數(shù)說明</b></p><p> add_info(STU*h)、delete_info(STU*h)、output_info(STU*h)、preview_info(STU*h,int type) 、search_info(STU*h,int type)
9、、update_info(STU*h)、函數(shù)中的STU*h為傳入的鏈表節(jié)點指針,type為搜索的方式:1為輸出傳入節(jié)點指針的一條學(xué)生記錄,2為輸出所有的學(xué)生記錄。</p><p><b> 4.調(diào)試與測試:</b></p><p> 1>調(diào)用STU * load_info()函數(shù)(文件載入),讀寫出現(xiàn)亂碼</p><p> 解決方法
10、:更改相應(yīng)指針指向,及有關(guān)變量的初值設(shè)置。</p><p><b> 2>邊界測試</b></p><p> 解決方法:用極端的或偏門的情況來探測和驗證代碼在處理時會發(fā)生什么。</p><p> 3>執(zhí)行窗口執(zhí)行多次命令后顯示過多,不利于輸入指令及結(jié)果查看</p><p> 解決方法:調(diào)用系統(tǒng)清屏函數(shù)
11、system("cls");。</p><p> 4>文件在打開和保存時有問題。</p><p> 解決方法:調(diào)整文件的打開方式,從原來的單純的w+修改為添加一個if語句,當(dāng)沒有文件時執(zhí)行w+的操作,否則執(zhí)行r+。避免了原存儲文件被覆蓋的問題。</p><p> 5.源程序清單和執(zhí)行結(jié)果:</p><p>
12、#include <stdio.h></p><p> #include <stdlib.h></p><p> #include <string.h></p><p> //學(xué)生信息 結(jié)構(gòu)體</p><p> typedef struct record{</p><p>
13、 char No[10];</p><p> char name[12];</p><p> unsigned int age;</p><p> char sex[4];</p><p> char birth[10];</p><p> char qq[12];</p><p>
14、 char grade[20];</p><p> char phone[11];</p><p> char jg[100];</p><p> char jcxx[100];</p><p> struct record *next;</p><p><b> }STU;</b>&l
15、t;/p><p><b> //菜單函數(shù)</b></p><p> int menu();</p><p> //載入函數(shù):txt轉(zhuǎn)為鏈表</p><p> STU * load_info();</p><p><b> //增加學(xué)生</b></p>&l
16、t;p> STU * add_info(STU *h);</p><p><b> //搜索函數(shù)</b></p><p> STU * search_info(STU *h,int type);</p><p><b> //刪除學(xué)生</b></p><p> STU * delet
17、e_info(STU *h);</p><p><b> //修改學(xué)生信息</b></p><p> void update_info(STU *h);</p><p><b> //輸出信息</b></p><p> void output_info(STU *h);</p>
18、<p><b> //預(yù)覽信息</b></p><p> void preview_info(STU *h,int type);</p><p> void main()</p><p><b> {</b></p><p> STU *header=NULL,*sear=NU
19、LL;int cmd=1;</p><p> system("title 學(xué)生信息管理系統(tǒng)");</p><p> //system("mode con cols=48 lines=25");</p><p> system("date /T");</p><p> syst
20、em("TIME /T");</p><p> system("color 3E");</p><p> header=load_info();</p><p> //preview_info(header,2);</p><p> cmd=menu();</p><p>
21、; while(cmd!=0)</p><p><b> {</b></p><p> switch(cmd)</p><p><b> {</b></p><p> case 0:break;</p><p><b> //添加信息</b>
22、</p><p><b> case 1:</b></p><p> header=add_info(header);output_info(header);</p><p><b> break;</b></p><p><b> //學(xué)號查詢</b></p&g
23、t;<p><b> case 2:</b></p><p> sear=search_info(header,1);</p><p> if(sear!=NULL)</p><p><b> {</b></p><p> preview_info(sear,1);</
24、p><p><b> }</b></p><p><b> else</b></p><p> printf("該學(xué)生不存在!\n");</p><p> sear=NULL;</p><p><b> break;</b>&l
25、t;/p><p><b> //姓名查詢</b></p><p><b> case 3:</b></p><p> sear=search_info(header,2);</p><p> if(sear!=NULL)</p><p><b> {</
26、b></p><p> preview_info(sear,1);</p><p><b> }</b></p><p><b> else</b></p><p> printf("該學(xué)生不存在!\n");</p><p> sear=N
27、ULL;</p><p><b> break;</b></p><p><b> //按學(xué)號刪除</b></p><p><b> case 4:</b></p><p> header=delete_info(header);</p><p>
28、; output_info(header);</p><p><b> break;</b></p><p><b> //修改</b></p><p><b> case 5:</b></p><p> update_info(header);</p>
29、<p> output_info(header);</p><p><b> break;</b></p><p><b> //整表輸出</b></p><p><b> case 6:</b></p><p> preview_info(header,
30、2);</p><p><b> break;</b></p><p><b> default:</b></p><p> printf("無效的命令!\n請重新輸入命令!\n");</p><p><b> break;</b></p>
31、;<p><b> }</b></p><p> if(cmd!=0)</p><p> cmd=menu();</p><p><b> }</b></p><p><b> }</b></p><p> int menu()
32、</p><p><b> {</b></p><p> int cmd=0;</p><p> printf("\n感謝趙亞瓊同學(xué)對我課程設(shè)計的幫助\n請輸入命令:\n\t0:結(jié)束程序!\n\t1:添加記錄!\n\t2:按學(xué)號查詢!\n\t3:按姓名查詢!\n\t4:按學(xué)號刪除信息!\n\t5:按學(xué)號修改信息!\n\t6:整表
33、瀏覽!\n");</p><p> scanf("%d",&cmd);</p><p> while(cmd<0 || cmd>9)</p><p><b> {</b></p><p> printf("無效的命令!\n請重新輸入:\n");
34、</p><p> scanf("%d",&cmd);</p><p><b> }</b></p><p> return cmd;</p><p><b> }</b></p><p> STU * load_info()</p
35、><p><b> {</b></p><p> FILE *fp=fopen("d:\\stu.txt","r+"),*fpNew=NULL;</p><p> STU *h=NULL,*q=NULL,*p=NULL;char ch='0';</p><p>
36、 h=(STU *)malloc(sizeof(STU));</p><p> if(fp==NULL)</p><p><b> {</b></p><p> fpNew=fopen("d:\\stu.txt","w");</p><p> fclose(fpNew);&
37、lt;/p><p> return NULL;</p><p><b> }</b></p><p> rewind(fp);</p><p> ch=fgetc(fp);</p><p> if(ch==EOF)</p><p><b> {</b
38、></p><p> return NULL;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> rewind(fp);</p><
39、;p> fscanf(fp,"%10s %12s %3d %11s %4s %10s %12s %20s %20s %20s",h->No,h->name,&h->age,h->phone,h->sex,h->birth,h->qq,h->grade,h->jcxx,h->jg);</p><p><b>
40、 q=h;</b></p><p> q->next=NULL;</p><p><b> }</b></p><p> ch=fgetc(fp);</p><p> while(ch!=EOF)</p><p><b> {</b></p&
41、gt;<p> p=(STU *)malloc(sizeof(STU));</p><p> p->next=NULL;</p><p> fscanf(fp,"%10s %12s %3d %11s %4s %10s %12s %20s %20s %20s",p->No,p->name,&p->age,p->ph
42、one,p->sex,p->birth,p->qq,p->grade,p->jcxx,p->jg);</p><p> ch=fgetc(fp);</p><p> q->next=p;</p><p> q=q->next;</p><p><b> }</b>&
43、lt;/p><p> fclose(fp);</p><p><b> return h;</b></p><p><b> }</b></p><p> STU * add_info(STU *h)</p><p><b> {</b></
44、p><p> FILE *fpin=fopen("d:\\stu.txt","a");</p><p> STU *stu,*p;</p><p><b> p=h;</b></p><p> stu=(STU *)malloc(sizeof(STU));</p>
45、<p> stu->next=NULL;</p><p> system("cls");</p><p> if(h==NULL)</p><p><b> {</b></p><p><b> h=stu;</b></p><p&
46、gt; printf("請輸入學(xué)號:\n");</p><p> scanf("%s",h->No);</p><p> printf("請輸入姓名:\n");</p><p> scanf("%s",h->name);</p><p> p
47、rintf("請輸入年齡:\n");</p><p> scanf("%d",&h->age);</p><p> printf("請輸入籍貫: \n");</p><p> scanf("%s",h->jg);</p><p> pr
48、intf("請輸入手機號:\n");</p><p> scanf("%s",h->phone);</p><p> printf("請輸入性別:\n");</p><p> scanf("%s",h->sex);</p><p> print
49、f("請輸入出生年月日:\n");</p><p> scanf("%s",h->birth);</p><p> printf("請輸入qq:\n");</p><p> scanf("%s",h->qq);</p><p> printf(
50、"請輸入專業(yè)班級: \n");</p><p> scanf("%s",h->grade);</p><p> printf("請輸入獎懲信息: \n");</p><p> scanf("%s",h->jcxx);</p><p><b&
51、gt; }</b></p><p><b> else</b></p><p><b> {</b></p><p> while(p->next!=NULL)</p><p><b> {</b></p><p> p=p
52、->next;</p><p><b> }</b></p><p> p->next=stu;</p><p> printf("請輸入學(xué)號:\n");</p><p> scanf("%s",stu->No);</p><p>
53、 printf("請輸入姓名:\n");</p><p> scanf("%s",stu->name);</p><p> printf("請輸入年齡:\n");</p><p> scanf("%d",&stu->age);</p><p
54、> printf("請輸入籍貫: \n");</p><p> scanf("%s",stu->jg);</p><p> printf("請輸入手機號:\n");</p><p> scanf("%s",stu->phone);</p><
55、p> printf("請輸入性別:\n");</p><p> scanf("%s",stu->sex);</p><p> printf("請輸入出生年月日:\n");</p><p> scanf("%s",stu->birth);</p>&
56、lt;p> printf("請輸入qq:\n");</p><p> scanf("%s",stu->qq);</p><p> printf("請輸入專業(yè)班級:\n");</p><p> scanf("%s",stu->grade);</p>
57、<p> printf("請輸入獎懲信息: \n");</p><p> scanf("%s",stu->jcxx);</p><p><b> }</b></p><p> fclose(fpin);</p><p><b> return h
58、;</b></p><p><b> }</b></p><p> STU * delete_info(STU *h)</p><p><b> {</b></p><p> STU *p,*q;</p><p> char no[11];</p&
59、gt;<p><b> p=h;</b></p><p> if(p==NULL)</p><p><b> {</b></p><p> printf("\t目前還沒有信息記錄!\n");</p><p> return NULL;</p>
60、<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("請輸入一個學(xué)號:\n");</p><p> scanf("%s",n
61、o);</p><p> q=p->next;</p><p> if(strcmp(h->No,no)==0)</p><p><b> {</b></p><p> printf("該學(xué)生信息已刪除!\n");</p><p> h=h->nex
62、t;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> while(q!=NULL)</p><p><b> {</b></p
63、><p> if(strcmp(q->No,no)==0)</p><p><b> {</b></p><p> printf("\t該學(xué)生的信息已刪除!\n");</p><p> p->next=q->next;</p><p><b>
64、 return h;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> p=q;</b></p><p>
65、 q=q->next;</p><p><b> }</b></p><p><b> }</b></p><p> printf("該學(xué)生不存在!\n");</p><p><b> }</b></p><p><
66、;b> return h;</b></p><p><b> }</b></p><p><b> }</b></p><p> STU * search_info(STU *h,int type)</p><p><b> {</b></p&
67、gt;<p> STU *p_temp=NULL,*q=h;</p><p> p_temp=(STU *)malloc(sizeof(STU));</p><p> system("cls");</p><p> switch(type)</p><p><b> {</b>
68、</p><p><b> case 1:</b></p><p> printf("\t請輸入一個學(xué)號:\n\t");</p><p> scanf("%s",p_temp->No);</p><p> while(q!=NULL)</p><p
69、><b> {</b></p><p> if(strcmp(q->No,p_temp->No)==0)</p><p><b> return q;</b></p><p><b> else</b></p><p> q=q->next;&
70、lt;/p><p><b> }</b></p><p> return NULL;</p><p> break;//按學(xué)號查詢</p><p><b> case 2:</b></p><p> printf("\t請輸入一個名字:\n\t");
71、</p><p> scanf("%s",p_temp->name);</p><p> while(q!=NULL)</p><p><b> {</b></p><p> if(strcmp(q->name,p_temp->name)==0)</p><
72、;p><b> return q;</b></p><p><b> else</b></p><p> q=q->next;</p><p><b> }</b></p><p> return NULL;</p><p> b
73、reak;//按姓名查詢</p><p> default:return NULL;break;</p><p><b> }</b></p><p><b> }</b></p><p> void update_info(STU *h)</p><p><b
74、> {</b></p><p> STU *q=NULL;</p><p> unsigned int cmd=1,rec=1;</p><p> system("cls");</p><p> while(rec!=0)</p><p><b> {<
75、/b></p><p> q=search_info(h,1);</p><p> if(q==NULL)</p><p> printf("\t該學(xué)生不存在,無法進行修改操作!\n");</p><p><b> else</b></p><p><b&g
76、t; {</b></p><p><b> cmd=1;</b></p><p> while(cmd!=0)</p><p><b> {</b></p><p> system("cls");</p><p> preview_
77、info(q,1);</p><p> printf("\n\t0:修改完成,回主菜單!\n\t1:修改該學(xué)生姓名!\n\t2:修改該學(xué)生年齡!\n\t3:修改該學(xué)生手機號!\n\t4:修改該學(xué)生性別!\n\t5:修改該學(xué)生生日!\n\t6:修改該學(xué)生qq號!\n\t7:修改該學(xué)生班級!\n\t8:修改下一個!\n");</p><p> printf("
78、請輸入命令:\n\t");</p><p> scanf("%d",&cmd);</p><p> switch(cmd)</p><p><b> {</b></p><p> case 0:cmd=0;rec=0;break;</p><p>&l
79、t;b> case 1:</b></p><p> printf("\t請輸入學(xué)生新的姓名:\n\t");</p><p> scanf("%s",q->name);</p><p><b> break;</b></p><p><b>
80、 case 2:</b></p><p> printf("\t請輸入學(xué)生新的年齡:\n\t");</p><p> scanf("%d",&q->age);</p><p><b> break;</b></p><p><b> c
81、ase 3:</b></p><p> printf("\t請輸入學(xué)生新的手機號:\n\t");</p><p> scanf("%s",q->phone);</p><p><b> break;</b></p><p><b> case 4
82、:</b></p><p> printf("\t請輸入學(xué)生新的性別:\n\t");</p><p> scanf("%s",q->sex);</p><p><b> break;</b></p><p><b> case 5:</b&
83、gt;</p><p> printf("\t請輸入學(xué)生新的生日:\n\t");</p><p> scanf("%s",q->birth);</p><p><b> break;</b></p><p><b> case 6:</b><
84、;/p><p> printf("\t請輸入學(xué)生新的qq號:\n\t");</p><p> scanf("%s",q->qq);</p><p><b> break;</b></p><p><b> case 7:</b></p>
85、<p> printf("\t請輸入學(xué)生新的班級:\n\t");</p><p> scanf("%s",q->grade);</p><p><b> break;</b></p><p><b> case 8:</b></p><p
86、><b> cmd=0;</b></p><p><b> break;</b></p><p> }//switch結(jié)束</p><p> }//內(nèi)層while結(jié)束</p><p><b> }</b></p><p> }//外層w
87、hile結(jié)束</p><p><b> }//函數(shù)結(jié)束</b></p><p> void output_info(STU *h)</p><p><b> {</b></p><p> FILE *fpin=fopen("d:\\stu.txt","w&quo
88、t;);</p><p> STU *q=NULL;</p><p><b> q=h;</b></p><p> if(q!=NULL)</p><p><b> {</b></p><p> fprintf(fpin,"%-10s %-12s %4d
89、%11s %-4s %-8s %-11s %20s %20s %20s",q->No,q->name,q->age,q->phone,q->sex,q->birth,q->qq,q->grade,q->jcxx,q->jg);</p><p> q=q->next;</p><p><b> }<
90、;/b></p><p> while(NULL!=q)</p><p><b> {</b></p><p> fprintf(fpin,"\n%-10s %-12s %4d %11s %-4s %-8s %-11s %20s",q->No,q->name,q->age,q->phone
91、,q->sex,q->birth,q->qq,q->grade,q->jcxx,q->jg);</p><p> q=q->next;</p><p><b> }</b></p><p> fclose(fpin);</p><p><b> }</b&
92、gt;</p><p> void preview_info(STU *h,int type)</p><p><b> {</b></p><p> STU *p=NULL;</p><p><b> p=h;</b></p><p> system("
93、cls");</p><p> switch(type)</p><p><b> {</b></p><p><b> case 1:</b></p><p> printf("=================================");</
94、p><p> printf("\n該學(xué)生的完整信息為:\n\t學(xué)號:%-10s\n\t姓名:%-12s\n\t年齡:%-4d\n\t電話:%-11s\n\t性別:%-4s\n\t生日:%-s\t\n\tQQ號:%s\t\n\t班級:%-s\n",h->No,h->name,h->age,h->phone,h->sex,h->birth,h->qq,h-&
95、gt;grade);</p><p> printf("\n\t獎罰信息:%s\n\t籍貫:%s\n",h->jcxx,h->jg);</p><p> printf("=================================");</p><p><b> break;</b>
96、;</p><p><b> case 2:</b></p><p> if(p==NULL)</p><p><b> {</b></p><p> printf("文件中沒有信息!\n");</p><p><b> break;&
97、lt;/b></p><p><b> }</b></p><p> printf("=================================");</p><p> while(p!=NULL)</p><p><b> {</b></p>
98、<p> printf("\n\t學(xué)號:%-10s\n\t姓名:%-12s\n\t年齡:%-4d\n\t電話:%-11s\n\t性別:%-4s\n\t生日:%-s\t\n\tQQ號:%s\t\n\t班級:%-s\n",p->No,p->name,p->age,p->phone,p->sex,p->birth,p->qq,p->grade);</p&g
99、t;<p> printf("\t獎罰信息:%s\n\t籍貫:%s\n",p->jcxx,p->jg);</p><p> printf("=================================");</p><p> p=p->next;</p><p><b>
100、 }</b></p><p><b> break;</b></p><p> default:break;</p><p><b> }</b></p><p><b> }</b></p><p><b> 6.實驗心
101、得:</b></p><p> 對C語言的編程實踐有所認識。</p><p> 在遇到程序調(diào)試不通過時,會通過縮小范圍的分析來鎖定問題所在。</p><p> 通過這次實驗,熟悉了從自然語言轉(zhuǎn)換成偽代碼再轉(zhuǎn)換為流程圖的過程。</p><p> 在程序中設(shè)定合適的全局變量,可以簡化程序的編寫難度。</p>&l
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計--- 學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計——學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計---學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)-c語言課程設(shè)計
- c語言課程設(shè)計-學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計---學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計---學(xué)生信息管理系統(tǒng)設(shè)計
- c語言課程設(shè)計----學(xué)生信息管理系統(tǒng)設(shè)計
- 學(xué)生信息管理系統(tǒng)c語言課程設(shè)計報告
- c語言課程設(shè)計--學(xué)生信息管理系統(tǒng) (2)
- c語言課程設(shè)計--學(xué)生信息管理系統(tǒng) (2)
- c語言課程設(shè)計報告----學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)c語言課程設(shè)計報告
評論
0/150
提交評論