當前位置:編程學習大全網 - 源碼下載 - 超市管理系統的c源代碼

超市管理系統的c源代碼

這是壹個簡單的學生管理系統,我們學校的大作業就是做這個...呵呵,希望能幫到妳。

# include & ltstdio.h & gt/*參考庫函數*/

# include & ltstdlib.h & gt

# include & ltctype.h & gt

# include & ltstring.h & gt

Typedef struct /*定義結構數組*/

{

字符編號[10];/*學生ID */

char name[20];/*姓名*/

int分數;/*成就*/

}學生;

學生stu[80];/*結構數組變量*/

Int menu_select() /*菜單函數*/

{

char c;

做{

系統(“cls”);/*運行之前清除屏幕*/

printf(" \ t \ t * * * *學生成績管理系統* * * * \ n ");/*菜單選擇*/

printf("\t\t | 1。輸入記錄| \ n ");

printf("\t\t | 2。顯示所有記錄| \ n ");

printf("\t\t | 3。sort | \ n ");

printf("\t\t | 4。插入記錄| \ n ");

printf("\t\t | 5。刪除記錄| \ n ");

printf("\t\t | 6。query | \ n ");

printf("\t\t | 7。統計| \ n ");

printf("\t\t | 8。從文本文件添加記錄| \ n ");

printf("\t\t | 9。寫入文本文件| \ n ");

printf("\t\t | 0。退出| \ n ");

printf(" \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

printf(" \ t \ t \ t給出您的選擇(0-9):");

c = getchar();/*閱讀選擇*/

} while(c & lt;0 ' | | c & gt'9');

return(c-' 0 ');/*返回選擇*/

}

Intinput (student study [],int n)/*輸入幾條記錄*/

{ int I = 0;

字符符號,x[10];/*x[10]用於清除冗余數據*/

而(簽!= ' n ' & amp& amp簽字!='N') /*判斷*/

{ printf(" \ t \ t \ t學生編號:");/*交互式輸入*/

scanf("\t\t\t%s ",stud[n+i]。num);

printf(" \ t \ t \ t學生姓名:");

scanf("\t\t\t%s ",stud[n+i]。姓名);

printf(" \ t \ t \ t學生的分數:");

scanf("\t\t\t%d ",& ampstud[n+i]。分數);

獲取(x);/*清除冗余輸入*/

printf(" \ t \ t \ t是否有更多記錄?(Y/N)");

scanf("\t\t\t%c ",& amp簽字);/*輸入判斷*/

i++;

}

return(n+I);

}

Void display (student study [],int n)/*顯示所有記錄*/

{

int I;

printf(" \ t \ t \ t-\ n ");/*格式頭*/

printf(" \ t \ t \ t number name score \ n ");

printf(" \ t \ t \ t-\ n ");

for(I = 1;我& ltn+1;I++) /*循環輸入*/

{

printf(" \ t \ t \ t %-16s %-15s % d \ n ",stud[i-1]。編號,螺柱[識別號1]。名稱,螺柱[i-1]。分數);

如果(i & gt1。& ampI%10==0) /*每十次暫停*/

{ printf(" \ t \ t \ t-\ n ");/*格式*/

printf(" \ t \ t \ t ");

系統(“暫停”);

printf(" \ t \ t \ t-\ n ");

}

}

printf(" \ t \ t \ t ");

系統(“暫停”);

}

void Sort _ by _ num(study[],int n)/*按學號排序*/

{ int i,j,*p,*q,s;

char t[10];

for(I = 0;我& ltn-1;I++) /*冒泡排序*/

for(j = 0;j & ltn-1-I;j++)

if(strcmp(stud[j].編號,螺柱[j+1]。num)>0)

{strcpy(t,stud[j+1])。num);

strcpy(螺柱[j+1])。num,stud[j]。num);

strcpy(stud[j].num,t);

strcpy(t,stud[j+1])。姓名);

strcpy(螺柱[j+1])。姓名,螺柱[j]。姓名);

strcpy(stud[j].姓名,t);

p = & amp螺柱[j+1]。分數;

q = & amp螺柱[j]。分數;

s = * p;

* p = * q;

* q = s;

}

}

int Insert _ a _ record(studenttud[],int n)/*插入壹條記錄*/

{ char x[10];/*用於清除冗余輸入*/

printf(" \ t \ t \ t學生編號:");/*交互式輸入*/

scanf("\t\t\t%s ",stud[n]。num);

printf(" \ t \ t \ t學生姓名:");

scanf("\t\t\t%s ",stud[n]。姓名);

printf(" \ t \ t \ t學生的分數:");

scanf("\t\t\t%d ",& amp螺柱。分數);

獲取(x);

n++;

Sort_by_num(stud,n);/*呼叫排序功能*/

printf(" \ t \ t \ t插入成功!\ n ");/*返回成功信息*/

返回(n);

}

int delete _ a _ record(student stud[],int n)/*按名稱搜索並刪除壹條記錄*/

{ char s[20];

int i=0,j;

printf(" \ t \ t \ t告訴我他(她)的名字:");/*互動探索*/

scanf("%s ",s);

while(strcmp(stud[i].姓名,s)!= 0 & amp& amp我& ltn)i++;/*尋找並判斷*/

如果(i==n)

{ printf(" \ t \ t \ t找不到!\ n ");/*返回失敗信息*/

返回(n);

}

for(j = I;j & ltn-1;J++) /*刪除操作*/

{

strcpy(stud[j].編號,螺柱[j+1]。num);

strcpy(stud[j].名稱,螺柱[j+1]。姓名);

螺柱[j]。分數=stud[j+1]。分數;

}

printf(" \ t \ t \ t刪除成功!\ n ");/*返回成功信息*/

返回(n-1);

}

void query _ a _ record(studenttud[],int n)/*查找並顯示壹條記錄*/

{ char s[20];

int I = 0;

printf(" \ t \ t \ t輸入他(她)的姓名:");/*交互式輸入*/

scanf("\t\t\t%s ",s);

while(strcmp(stud[i].姓名,s)!= 0 & amp& amp我& ltn)i++;/*尋找並判斷*/

如果(i==n)

{ printf(" \ t \ t \ t找不到!\ n ");/*輸入失敗信息*/

返回;

}

printf(" \ t \ t \ this(her)number:% s \ n ",stud[i]。num);/*輸出學生信息*/

printf(" \ t \ t \ this(her)score:% d \ n ",stud[i]。分數);

}

Void statistical (student study [],int n)/*新函數,輸出統計信息*/

{ int i,j=0,k=0,sum = 0;

浮動aver/*平均分數*/

for(I = 0;我& ltn;I++) /*循環輸入判斷*/

{

sum+=stud[i]。分數;

if(stud[j].得分& gtstud[i]。得分)j = I;

if(stud[k].得分& ltstud[i]。得分)k = I;

}

aver = 1.0 * sum/n;

printf(" \ t \ t \ t有%d條記錄。\n”,n);/*總共* * *條記錄*/

printf(" \ t \ t \ t最高分:\ n ");/*最高分*/

printf(" \ t \ t \ t編號:%s名稱:%s分數:%d\n ",stud[j]。num,stud[j]。姓名,螺柱[j]。分數);

printf(" \ t \ t \ t最低分:\ n ");/*最低分數*/

printf(" \ t \ t \ t編號:%s名稱:%s分數:%d\n ",stud[k]。num,stud[k]。名字,螺柱[k]。分數);

printf(" \ t \ t \ t平均分數為%5.2f\n ",aver);/*平均分數*/

}

intaddfromtext(studenttud[],int n)/*從文件中讀取數據*/

{ int i=0,num

FILE * fp/*定義文件指針*/

字符文件名[20];/*定義文件名*/

printf(" \ t \ t \ t輸入文件名:");

scanf("\t\t\t%s ",文件名);/*輸入文件名*/

If ((FP = fopen (filename," Rb))= = null)/*打開文件*/

{ printf(" \ t \ t \ t無法打開文件\ n ");/*打開失敗消息*/

printf(" \ t \ t \ t ");

系統(“暫停”);

返回(n);

}

fscanf(fp," %d ",& ampnum);/*讀入總記錄*/

while(我& ltNum) /*循環讀取數據*/

{

fscanf(fp," %s%s%d ",stud[n+i]。num,stud[n+i]。姓名& ampstud[n+i]。分數);

i++;

}

n+= num;

fclose(FP);/*關閉文件*/

printf(" \ t \ t \ t成功!\ n ");

printf(" \ t \ t \ t ");

系統(“暫停”);

返回(n);

}

Void write to text (student stud [],int n)/*將所有記錄寫入文件*/

{

int I = 0;

FILE * fp/*定義文件指針*/

字符文件名[20];/*定義文件名*/

printf(" \ t \ t \ t將記錄寫入文本文件\ n ");/*輸入文件名*/

printf(" \ t \ t \ t輸入文件名:");

scanf("\t\t\t%s ",文件名);

If ((FP = fopen (filename," w)))= = null)/*打開文件*/

{

printf(" \ t \ t \ t無法打開文件\ n ");

系統(“暫停”);

返回;

}

fprintf(fp," %d\n ",n);/*循環寫入數據*/

while(我& ltn)

{

fprintf(fp," %-16s%-15s%d\n ",stud[i]。num,stud[i]。名字,種馬[i]。分數);

i++;

}

fclose(FP);/*關閉文件*/

printf("成功!\ n ");/*返回成功信息*/

}

Void main() /* main函數*/

{

int n = 0;

for(;;)

{

Switch(menu_select()) /*選擇判斷*/

{

案例1:

printf(" \ t \ t \ t輸入記錄\ n ");/*輸入幾條記錄*/

n =輸入(stu,n);

打破;

案例二:

printf(" \ t \ t \ t顯示所有記錄\ n ");/*顯示所有記錄*/

Display(stu,n);

打破;

案例三:

printf(" \ t \ t \ t sort \ n ");

Sort_by_num(stu,n);/*按學號排序*/

printf(" \ t \ t \ t排序成功!\ n ");

printf(" \ t \ t \ t ");

系統(“暫停”);

打破;

案例4:

printf(" \ t \ t \ t插入記錄\ n ");

n =插入_ a _記錄(stu,n);/*插入記錄*/

printf(" \ t \ t \ t ");

系統(“暫停”);

打破;

案例5:

printf(" \ t \ t \ t刪除記錄\ n ");

n=Delete_a_record(stu,n);/*按名稱搜索並刪除記錄*/

printf(" \ t \ t \ t ");

系統(“暫停”);

打破;

案例6:

printf(" \ t \ t \ t query \ n ");

Query_a_record(stu,n);/*查找並顯示記錄*/

printf(" \ t \ t \ t ");

系統(“暫停”);

打破;

案例7:

printf(" \ t \ t \ t statistic \ n ");

統計量(stu,n);/*新功能,輸出統計信息*/

printf(" \ t \ t \ t ");

系統(“暫停”);

打破;

案例8:

printf(" \ t \ t \ t從文本文件添加記錄\ n ");

n=AddfromText(stu,n);/*新功能,輸出統計信息*/

打破;

案例9:

printf(" \ t \ t \ t寫入文本文件\ n ");

WritetoText(stu,n);/*循環寫入數據*/

printf(" \ t \ t \ t ");

系統(“暫停”);

打破;

案例0:

祝妳好運,再見!\ n ");/*結束程序*/

printf(" \ t \ t \ t ");

系統(“暫停”);

退出(0);

}

}

}

  • 上一篇:emv指標詳解及實戰用法
  • 下一篇:網絡工程方面的程序
  • copyright 2024編程學習大全網