




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)生成績(jī)信息管理系統(tǒng) C語言程序設(shè)計(jì)項(xiàng)目設(shè)計(jì)報(bào)告項(xiàng)目名稱: 學(xué)生成績(jī)信息管理系統(tǒng) 2016年 1月 13日目 錄1 項(xiàng)目分析11.1 問題描述11.2 功能需求分析12 系統(tǒng)設(shè)計(jì)22.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)22.3部分功能設(shè)計(jì)23 系統(tǒng)實(shí)現(xiàn)源程序43.1 主函數(shù)設(shè)計(jì)43.2 添加學(xué)生信息53.3 姓名學(xué)號(hào)查詢103.4 成績(jī)查詢123.5 刪除學(xué)生成績(jī)信息133.6 修改學(xué)生成績(jī)信息144 功能測(cè)試164.1 菜單測(cè)試164.2 系統(tǒng)功能測(cè)試165 系統(tǒng)設(shè)計(jì)遇到的問題及解決方法216 項(xiàng)目設(shè)計(jì)總結(jié)2222學(xué)生成績(jī)信息管理系統(tǒng) 1 項(xiàng)目分析1.1 問題描述信息儲(chǔ)存與查詢是計(jì)算機(jī)處理數(shù)據(jù)的優(yōu)勢(shì)之一,目前
2、,學(xué)生信息的管理系統(tǒng)已經(jīng)完全走進(jìn)了校園,其中成績(jī)信息的儲(chǔ)存是主要部分,本課題使用C語言實(shí)現(xiàn)學(xué)生成績(jī)的儲(chǔ)存,查詢,修改,以及刪除等操作。程序中涉及到數(shù)據(jù)塊和文件指針的操作,包括結(jié)構(gòu)體數(shù)據(jù)定義,使用及文件的讀寫,定位,修改等。 1.2 功能需求分析學(xué)生成績(jī)信息管理系統(tǒng)的主要功能如下:添加學(xué)生信息:錄入學(xué)生的基本信息,如姓名,學(xué)號(hào),成績(jī)。顯示所有學(xué)生成績(jī)信息:直接顯示已經(jīng)全部錄入學(xué)生的成績(jī)信息。學(xué)號(hào)或姓名查詢:可以根據(jù)學(xué)生的姓名和學(xué)號(hào)直接查詢?cè)撁麑W(xué)生的成績(jī)。成績(jī)查詢:可以根據(jù)一個(gè)特定的分?jǐn)?shù)來查詢學(xué)生的信息。刪除學(xué)生成績(jī)信息:可以直接根據(jù)學(xué)號(hào)確定是否刪除對(duì)應(yīng)學(xué)生的成績(jī)信息。修改學(xué)
3、生成績(jī)信息:直接根據(jù)學(xué)生學(xué)號(hào)來修改學(xué)生的姓名,學(xué)號(hào),成績(jī)。學(xué)生成績(jī)信息管理系統(tǒng)添加學(xué)生信息顯示所有學(xué)生成績(jī)信息學(xué)號(hào)或姓名查詢成績(jī)查詢刪除學(xué)生成績(jī)信息修改學(xué)生成績(jī)信息重新添加信息繼續(xù)添加信息圖1-1 系統(tǒng)功能模塊圖2 系統(tǒng)設(shè)計(jì)2.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)struct stu/定義結(jié)構(gòu)體類型char name10;/姓名char num10;/學(xué)號(hào)char score10;/成績(jī)if(fp1=fopen("Ca1.txt","w")=NULL)/文件名,使用文件方式printf("信息寫入失敗");exit(0);char wjm20;/文件名2
4、.2 函數(shù)設(shè)計(jì)表1 函數(shù)列表序號(hào)函 數(shù) 原 型功 能 說 明1void addnew()新增學(xué)生姓名,學(xué)號(hào),成績(jī)信息2void addold()在原有基礎(chǔ)上繼續(xù)增加其他同學(xué)的信息3void printall()顯示所有已經(jīng)存入學(xué)生的成績(jī)等信息4void search()根據(jù)姓名或者學(xué)號(hào)查詢學(xué)生分?jǐn)?shù)5void jgsearch()根據(jù)成績(jī)查詢對(duì)應(yīng)的同學(xué)6void del()刪除學(xué)生信息7void modify()修改學(xué)生信息8system(“cls”);清屏2.3部分功能設(shè)計(jì)1.刪除學(xué)生的信息,輸入學(xué)生的學(xué)號(hào)進(jìn)行刪除操作,如果沒有此人,系統(tǒng)將會(huì)提示無此人,如果找到,系統(tǒng)將會(huì)確認(rèn)你是否需要?jiǎng)h除,流
5、程圖如1-2所示。輸出刪除成功結(jié)束開始輸入學(xué)號(hào)在文件里查找輸出文件無此人確認(rèn)刪除輸入1輸入0是否找到Y(jié)esNoYes圖1-2 刪除學(xué)生信息流程圖2.輸入學(xué)號(hào)進(jìn)行查詢對(duì)應(yīng)同學(xué)的成績(jī),流程圖如圖1-3所示。YesNo開始輸入學(xué)號(hào)或姓名在文件中查找是否找到輸出姓名,學(xué)號(hào),成績(jī)結(jié)束輸出文件無此人記錄圖1-3 查詢功能流程圖3 系統(tǒng)實(shí)現(xiàn)源程序3.1 主函數(shù)設(shè)計(jì)void main()int x;system("cls");/*清屏*/doprintf("n 歡迎使用學(xué)生成績(jī)信息管理系統(tǒng)nnnnn"); printf(" 1 -添加學(xué)生信息nn")
6、; printf(" 2 -顯示所有學(xué)生成績(jī)信息nn"); printf(" 3 -學(xué)號(hào)或姓名查詢nn");printf(" 4 -成績(jī)查詢nn"); printf(" 5 -刪除學(xué)生成績(jī)信息nn");printf(" 6 -修改學(xué)生成績(jī)信息nn");printf(" 0 -退出");printf(" 請(qǐng)您選擇:");choice:scanf("%d",&x);switch(x)case 1:add();break;case 2
7、:printall();break;case 3:search();break;case 4:jgsearch();break;case 5:del();break;case 6:modify();break;case 0:break;default:printf("n 錯(cuò)誤的選擇,請(qǐng)重新選擇:");goto choice; while(x!=0);system("cls");printf("nn 歡迎再次使用學(xué)生成績(jī)管理系統(tǒng)n"); 3.2 添加學(xué)生信息/*學(xué)生成績(jī)信息管理系統(tǒng)*/#include <stdio.h>#i
8、nclude <stdlib.h>#include <string.h>int c,j,t;struct stu/*定義結(jié)構(gòu)體類型*/ char name10;char num10;char score10;student100,newstudent100;/*添加學(xué)生個(gè)人信息*/ void addnew()int a,b,k;FILE *fp,*fp1,*fp2; /*FILE類型指針變量的定義形式*/ for(a=0;a<200;a+)system("cls");printf(" 歡迎使用學(xué)生成績(jī)管理系統(tǒng)nnn");pr
9、intf(" 錄入學(xué)生信息nn");printf("輸入學(xué)生姓名:");scanf("%s",&);printf("輸入學(xué)生學(xué)號(hào):");scanf("%s",&studenta.num);printf("輸入學(xué)生成績(jī):");scanf("%s",&studenta.score);printf("輸入1繼續(xù),0結(jié)束n");/*判斷輸入是否結(jié)束*/ scanf("%d",
10、&b);if(b=0)c=a;system("cls");break;if(fp1=fopen("Ca1.txt","w")=NULL)/*文件名,使用文件方式*/ printf("信息寫入失敗");exit(0);if(fp2=fopen("Ca2.txt","w")=NULL)printf("信息寫入失敗");exit(0);if(fp=fopen("Ca3.txt","w")=NULL)printf(&
11、quot;信息寫入失敗");exit(0);j=sizeof(struct stu);for(a=0;a<=c;a+)if(fwrite(&studenta,j,1,fp)!=1)printf("存入失敗!");for(a=0;a<=c;a+)if(strcmp(studenta.score,"80")=0)fwrite(&studenta,j,1,fp1);elsefwrite(&studenta,j,1,fp2);printf("添加成功!nn");printf("請(qǐng)輸入
12、39;0'返回n");scanf("%d",&k);fclose(fp1);fclose(fp2);fclose(fp);if(k=0)system("cls");/*繼續(xù)添加成員*/void addold()int a,b,k,p,q;char wjm20;FILE *fp;j=sizeof(struct stu);system("cls");printf(" 歡迎使用學(xué)生成績(jī)信息管理系統(tǒng)nnn");printf(" 錄入學(xué)生信息nn");printf("n
13、n存儲(chǔ)文件名有 Ca1.txt Ca2.txt Ca3.txtnn");printf("請(qǐng)輸入想繼續(xù)添加的文件名:");scanf("%s",wjm);for(a=0;a<200;a+)printf("輸入學(xué)生姓名:");scanf("%s",&);printf("輸入學(xué)生學(xué)號(hào):");scanf("%s",&newstudenta.num);printf("輸入學(xué)生成績(jī):");scanf(&q
14、uot;%s",&newstudenta.score);printf("輸入1繼續(xù),0結(jié)束n");/判斷輸入是否結(jié)束scanf("%d",&b);if(b=0)c=a;system("cls");break;if(fp=fopen(wjm,"r")=NULL)printf("文件打開失??!");exit(0);a=0;while(!feof(fp)fread(&studenta,j,1,fp);a+;fclose(fp);t=a-1;for(q=0,p=t;q&
15、lt;=c,p<=t+c;q+,p+)strcpy(,);strcpy(studentp.num,newstudentq.num);strcpy(studentp.score,newstudentq.score);if(fp=fopen(wjm,"w")=NULL)printf("文件打開失??!");exit(0);for(a=0;a<=t+c;a+)if(fwrite(&studenta,j,1,fp)!=1)printf("存入失敗!");printf(
16、"添加成功!nn");printf("請(qǐng)輸入'0'返回n");scanf("%d",&k);fclose(fp);if(k=0)system("cls");void add()int x;system("cls");printf(" 歡迎使用學(xué)生成績(jī)信息管理系統(tǒng)nnn");printf(" 添加學(xué)生信息nn");printf(" 1 重新添加信息n");printf(" 2 繼續(xù)添加信息n")
17、;printf(" 0 返回nnn");printf(" 請(qǐng)選擇:");scanf("%d",&x);choice:switch(x)case 1:addnew();break;case 2:addold();break;case 0:break;default:printf("n 錯(cuò)誤的選擇,請(qǐng)重新選擇:");goto choice; system("cls");/*顯示所有學(xué)生的成績(jī)*/ void printall()int a,b;FILE *fp,*fp1,*fp2;system
18、("cls");printf(" 歡迎使用學(xué)生成績(jī)信息管理系統(tǒng)nnn");printf(" 全部已錄入學(xué)生信息nn");printf("%-10s%-20s%-50sn","姓名","學(xué)號(hào)","成績(jī)");j=sizeof(struct stu);if(fp=fopen("Ca1.txt","r")=NULL)printf("n打開失敗");exit(0);if(fp1=fopen("Ca
19、2.txt","r")=NULL)printf("信息寫入失敗");exit(0);if(fp2=fopen("Ca3.txt","r")=NULL)printf("信息寫入失敗");exit(0);a=0;while(!feof(fp)if(fread(&studenta,j,1,fp)=1)printf("%-10s%-20s%-50sn",,studenta.num,studenta.score);a+;a=0;while(!
20、feof(fp1)if(fread(&studenta,j,1,fp1)=1)printf("%-10s%-20s%-50sn",,studenta.num,studenta.score);a+;a=0;while(!feof(fp2)if(fread(&studenta,j,1,fp2)=1)printf("%-10s%-20s%-50sn",,studenta.num,studenta.score);a+;fclose(fp);fclose(fp1);fclose(fp2);prin
21、tf("返回上級(jí)請(qǐng)輸入0!n:");scanf("%d",&b);if(b=0)system("cls");3.3 姓名學(xué)號(hào)查詢void search()int k,b,a;char cx20;FILE *fp;system("cls");j=sizeof(struct stu);doprintf(" 歡迎使用學(xué)生成績(jī)信息管理系統(tǒng)nnn");printf(" 查找已錄入學(xué)生成績(jī)信息nn");k=0;if(fp=fopen("Ca1.txt",&qu
22、ot;r")=NULL)printf("n打開失敗!");exit(0);printf("請(qǐng)輸入學(xué)號(hào)或姓名:n");scanf("%s",cx);if(cx0<'0')|(cx0>'9')a=0;while(!feof(fp)fread(&studenta,j,1,fp);if(strcmp(,cx)=0)printf("nn已查到,該記錄為:nn");printf("%-10s%-20s%-50sn",&q
23、uot;姓名","學(xué)號(hào)","成績(jī)");printf("%-10s%-20s%-50sn",,studenta.num,studenta.score);k=1;a+;if('0'<=cx0<='9')a=0;while(!feof(fp)fread(&studenta,j,1,fp);if(strcmp(studenta.num,cx)=0)printf("nn已查到,該記錄為:nn");printf("%-10s%-2
24、0s%-50sn","姓名","學(xué)號(hào)","成績(jī)");printf("%-10s%-20s%-50sn",,studenta.num,studenta.score);k=1;a+;if(!k)printf("n文件中無此人的記錄。");fclose(fp);printf("n輸入“1”繼續(xù)查找,“0”結(jié)束n");scanf("%d",&b);system("cls");while(b!=0);s
25、ystem("cls");3.4 成績(jī)查詢void jgsearch()int b,a;char cx20;FILE *fp;system("cls");j=sizeof(struct stu);doprintf(" 歡迎使用學(xué)生成績(jī)信息管理系統(tǒng)nnn");printf(" 查找學(xué)生成績(jī)信息nn");if(fp=fopen("Ca1.txt","r")=NULL)printf("n打開失敗!");exit(0);printf("請(qǐng)輸入學(xué)生成績(jī):n
26、");scanf("%s",cx);a=0;while(!feof(fp)fread(&studenta,j,1,fp);if(strcmp(cx,studenta.score)=0)printf("%-10s%-20s%-50sn","姓名","學(xué)號(hào)","成績(jī)");printf("%-10s%-20s%-50sn",,studenta.num,studenta.score);a+;fclose(fp);printf("n
27、輸入“1”繼續(xù)查找,“0”結(jié)束n");scanf("%d",&b);system("cls");while(b!=0);system("cls");3.5 刪除學(xué)生成績(jī)信息void del()int m=0,k=0,b,a,q,p;char xh20,wjm20;FILE *fp;system("cls");j=sizeof(struct stu);doprintf(" 歡迎使用學(xué)生成績(jī)信息管理系統(tǒng)nnn");printf(" 刪除學(xué)生成績(jī)信息nn");pr
28、intf("nn存儲(chǔ)文件名有 Ca1.txt Ca2.txt Ca3.txtnn");k=0;printf("n請(qǐng)輸入學(xué)號(hào):");scanf("%s",xh);printf("n請(qǐng)輸入欲刪除的文件名:");scanf("%s",wjm);if(fp=fopen(wjm,"r")=NULL)printf("n文件打開失敗!");exit(0);a=0;while(!feof(fp)fread(&studenta,j,1,fp); /將文件內(nèi)容輸入到數(shù)
29、組中a+;fclose(fp);t=a-1;for(a=0;a<=t;a+)if(strcmp(xh,studenta.num)=0)k=1;break;if(a=t)printf("nn文件中無此人的記錄。");if(k=1)printf("nn已查到,該記錄為:nn");printf("%-10s%-20s%-50s","姓名","學(xué)號(hào)","成績(jī)");printf("%-10s%-20s%-50s",,studenta.
30、num,studenta.score);printf("n確實(shí)要?jiǎng)h除記錄,請(qǐng)按1;不刪除記錄,請(qǐng)按0:n");scanf("%d",&m);if(m)for(p=a,q=a+1;p<t,q<=t;q+,p+)strcpy(,);strcpy(studentp.num,studentq.num);strcpy(studentp.score,studentq.score);if(fp=fopen(wjm,"w")=NULL)printf("n文件打開失敗!&
31、quot;);exit(0);for(a=0;a<t;a+)fwrite(&studenta,j,1,fp);if(m)printf("n刪除成功!");fclose(fp);printf("n輸入“1”繼續(xù),“0”結(jié)束n");scanf("%d",&b);system("cls");while(b!=0);system("cls");3.6 修改學(xué)生成績(jī)信息void modify()int k=0,b,a;char xh20,wjm20;FILE *fp;system(&
32、quot;cls");j=sizeof(struct stu);doprintf(" 歡迎使用學(xué)生成績(jī)信息管理系統(tǒng)nnn");printf(" 修改學(xué)生成績(jī)信息nn");printf("nn存儲(chǔ)文件名有 Ca1.txt Ca2.txt Ca3.txtnn");printf("n請(qǐng)輸入學(xué)號(hào):");scanf("%s",xh);printf("n請(qǐng)輸入欲修改文件名:");scanf("%s",wjm);if(fp=fopen(wjm,"r+
33、")=NULL)printf("n打開失敗!");exit(0);a=0;while(!feof(fp)fread(&studenta,j,1,fp);a+;fclose(fp);t=a-1;for(a=0;a<=t;a+)if(strcmp(xh,studenta.num)=0)k=1;break;if(a=t)printf("nn文件中無此人的記錄。");if(k=1)printf("nn已查到,該記錄為:nn");printf("%-10s%-20s%-50s","姓名&qu
34、ot;,"學(xué)號(hào)","成績(jī)");printf("%-10s%-20s%-50s",,studenta.num,studenta.score);printf("n請(qǐng)輸入新的姓名:");scanf("%s",);printf("n請(qǐng)輸入新的學(xué)號(hào):");scanf("%s",studenta.num);printf("n請(qǐng)輸入新的成績(jī):");scanf("%s",stude
35、nta.score);if(fp=fopen(wjm,"w")=NULL)printf("n文件打開失敗!");exit(0);for(a=0;a<t;a+)fwrite(&studenta,j,1,fp);printf("n修改成功!");fclose(fp);printf("n輸入“1”繼續(xù),“0”結(jié)束n");scanf("%d",&b);system("cls");while(b!=0);system("cls");4 功能測(cè)試
36、4.1 菜單測(cè)試學(xué)生成績(jī)管理系統(tǒng)運(yùn)行后的主菜單界面如圖4-1所示。圖4-1系統(tǒng)主界面4.2 系統(tǒng)功能測(cè)試1 添加學(xué)生信息在主菜單按1后,會(huì)顯示圖4-2,再按2添加學(xué)生的信息如圖4-3所示,如果按1的話那么所有以前的保存的信息都將被清除,接著再重新輸入數(shù)據(jù)。圖4-2 學(xué)生信息輸入界面圖4-3 學(xué)生信息輸入界面2 顯示所有學(xué)生成績(jī)信息在系統(tǒng)菜單上面按2,則所有的學(xué)生成績(jī)都會(huì)顯示如圖4-4所示。圖4-4 學(xué)生成績(jī)?yōu)g覽3. 學(xué)號(hào)或姓名查詢?cè)谥鞑藛紊陷斎?,然后在根據(jù)姓名或者學(xué)號(hào),可以查到該同學(xué)的分?jǐn)?shù),如圖4-5和4-6圖所示。圖4-5 根據(jù)學(xué)號(hào)查詢分?jǐn)?shù)圖4-6 根據(jù)姓名查詢分?jǐn)?shù)4. 成績(jī)查詢?cè)谥鞑藛紊?/p>
37、輸入4,可以得到圖4-7所示,這是根據(jù)分?jǐn)?shù)來確定學(xué)生。圖4-7 根據(jù)分?jǐn)?shù)來確定學(xué)生5. 刪除學(xué)生成績(jī)信息在主菜單上按5,選擇需要?jiǎng)h除的對(duì)應(yīng)文檔里的該學(xué)生的成績(jī)信息,可以得到圖4-8所示。圖4-8 刪除學(xué)生信息6. 修改學(xué)生的信息在主菜單上按6,選擇需要修改的人的學(xué)號(hào),再進(jìn)行一系列的修改,可以得到圖4-9所示。圖4-9 修改學(xué)生信息5 系統(tǒng)設(shè)計(jì)遇到的問題及解決方法1.*和 在定義時(shí)只是說明作用,不能誤解為運(yùn)算符&、*、 是C語言提供的三種運(yùn)算符,分別是取地址運(yùn)算符、指針運(yùn)算符和下標(biāo)運(yùn)算符,其中,&與*互為逆運(yùn)算。在表達(dá)式中它們的意義很明確,但是在定義中*、 只是起說明作用,不能看作運(yùn)算符。例如:int number=10; Int *pt=&n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45141-2025反滲透進(jìn)水修正污染指數(shù)測(cè)定方法
- 別墅清包工合同范本
- 醫(yī)院合資合同范本
- 農(nóng)藥合同范本
- 勞保買賣合同范本
- 二手房出售門面房合同范本
- 水槽代工合同范本
- 醫(yī)院信息咨詢合同范本
- 主體沉降觀測(cè)合同范本
- 單個(gè)產(chǎn)品銷售合同范本
- GB/T 5916-2020產(chǎn)蛋雞和肉雞配合飼料
- GB/T 28114-2011鎂質(zhì)強(qiáng)化瓷器
- GB/T 15566.1-2020公共信息導(dǎo)向系統(tǒng)設(shè)置原則與要求第1部分:總則
- 現(xiàn)代漢語常用詞匯表(兩字)
- 食品添加劑培訓(xùn)講義
- 醫(yī)院內(nèi)靜脈血栓栓塞癥防治質(zhì)量評(píng)價(jià)與管理指南(2022版)
- 冷藏車的制冷原理、發(fā)展進(jìn)程及前景課件
- 光伏電站運(yùn)維資料目錄清單
- 《馬克思主義發(fā)展史》第四章馬克思主義發(fā)展的列寧主義階段-第五章馬克思列寧主義在蘇聯(lián)的發(fā)展及曲折課件
- 5數(shù)據(jù)中臺(tái)解決方案
- 有機(jī)肥料檢驗(yàn)報(bào)告
評(píng)論
0/150
提交評(píng)論