本文目錄一覽:
- 1、用c語言設計一個學生信息管理系統,急啊.謝謝
- 2、學生信息管理系統C語言編程
- 3、用標準C語言編寫學生信息管理系統
- 4、c語言編寫學生信息管理系統
- 5、如何用C語言編寫學生信息管理系統
- 6、求C語言學生信息管理系統的需求分析和設計小結
用c語言設計一個學生信息管理系統,急啊.謝謝
#includenbsp;「stdio.h「#definenbsp;SIZEnbsp;50intnbsp;sum=0;staticnbsp;charnbsp;*str[]={「C「,「Math「,「English「};structnbsp;studentnbsp;nbsp;{nbsp;intnbsp;n;nbsp;nbsp;nbsp;nbsp;longnbsp;num;nbsp;nbsp;nbsp;nbsp;charnbsp;name[10];nbsp;nbsp;nbsp;nbsp;intnbsp;age;nbsp;nbsp;nbsp;nbsp;charnbsp;addr[10];nbsp;nbsp;nbsp;nbsp;intnbsp;score[3];nbsp;nbsp;nbsp;nbsp;floatnbsp;avr;nbsp;nbsp;}nbsp;stu[SIZE];/*nbsp;1–Inputnbsp;*/voidnbsp;fin(){nbsp;intnbsp;i,j,s;charnbsp;f;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Warring!nbsp;Input?nbsp;(nbsp;y/nnbsp;)nbsp;:nbsp;777「);nbsp;nbsp;f=getchar();f=getchar();nbsp;nbsp;if(f!=『y『)nbsp;nbsp;nbsp;nbsp;return;nbsp;nbsp;fp=fopen(「fstu「,「wb「);nbsp;nbsp;for(i=0;iamp;lt;SIZE;i++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;i=%dnbsp;Inputnbsp;No.nbsp;(i=-1,return)nbsp;i=?nbsp;「,i+1);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(「%d「,amp;j);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;ifnbsp;(j==-1)nbsp;{nbsp;printf(「
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;Pressnbsp;anynbsp;keynbsp;return!nbsp;*nbsp;*nbsp;*
「,j);nbsp;nbsp;nbsp;fclose(fp);getch();return;nbsp;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;elsenbsp;{nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;num,name,age,addrnbsp;:nbsp;「);nbsp;nbsp;nbsp;stu[i].n=i+1;nbsp;nbsp;nbsp;scanf(「%ld%s%d%s「,amp;stu[i].num,stu[i].name,amp;stu[i].age,stu[i].addr);nbsp;nbsp;nbsp;s=0;nbsp;nbsp;nbsp;for(j=0;jamp;lt;3;j++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;%-7snbsp;scorenbsp;:nbsp;「,str[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(「%d「,amp;stu[i].score[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;if(stu[i].score[j]amp;gt;100)nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;{nbsp;j–;continue;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;s+=stu[i].score[j];nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;nbsp;stu[i].avr=s/3.0;nbsp;nbsp;nbsp;fwrite(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;}nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;fclose(fp);}/*nbsp;2–Findnbsp;*/voidnbsp;ffind(){nbsp;intnbsp;i,j;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;fp=fopen(「fstu「,「rb「);nbsp;nbsp;for(i=0;fread(amp;stu[i],sizeof(structnbsp;student),1,fp)!=0;i++);nbsp;nbsp;sum=i;nbsp;nbsp;rewind(fp);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;Findnbsp;studentnbsp;datanbsp;*nbsp;*nbsp;*
「);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;n=1nbsp;–nbsp;%dnbsp;:nbsp;「,sum);nbsp;nbsp;scanf(「%d「,amp;j);nbsp;nbsp;fseek(fp,(j-1)*sizeof(structnbsp;student),0);nbsp;nbsp;printf(「
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Displaynbsp;studentnbsp;%dnbsp;datanbsp;:nbsp;
「,j);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*
「);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;No.nbsp;Numnbsp;nbsp;nbsp;nbsp;Namenbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Agenbsp;Addrnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Cnbsp;nbsp;Mathnbsp;En.nbsp;Aver.
「);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;—————————————————–
「);nbsp;nbsp;fread(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;nbsp;printf(「%12d%7
學生信息管理系統C語言編程
#includestdio.h /*I/O函數*/
#includestdlib.h /*其它說明*/
#includestring.h /*字元串函數*/
#define BUFLEN 100 /* 緩衝區最大字元數 */
#define LEN 15 /* 學號和姓名最大字元數,實際請更改 */
#define N 100 /* 最大學生人數,實際請更改*/
struct record /*結構體*/
{
char code[LEN+1]; /* 學號 */
char name[LEN+1]; /* 姓名 */
int age; /* 年齡 */
char sex[3]; /* 性別 */
char time[LEN+1]; /* 出生年月 */
char add[30]; /* 家庭地址 */
char tel[LEN+1]; /* 電話號碼 */
char mail[30]; /* 電子郵件地址 */
}stu[N];
int k=1,n,m; /* 定義全局變數 */
void readfile();/* 函數聲明 */
void seek();
void modify();
void insert();
void del();
void display();
void save();
void menu();
int main()
{
while(k)
menu();
system(“pause”);
return 0;
}
void help()
{
printf(“\n0.歡迎使用系統幫助!\n”);
printf(“\n1.進入系統後,先刷新學生信息,再查詢;\n”);
printf(“\n2.按照菜單提示鍵入數字代號;\n”);
printf(“\n3.增加學生信息後,切記保存按7;\n”);
printf(“\n4.謝謝您的使用!\n”);
}
void readfile()/* 建立信息 */
{
char *p=”student.txt”;
FILE *fp;
int i=0;
if ((fp=fopen(“student.txt”,”r”))==NULL)
{
printf(“Open file %s error! Strike any key to exit!”,p);
system(“pause”);
exit(0);
}
while(fscanf(fp,”%s %s%d%s %s %s %s %s”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)
{
i++;
i=i;
}
fclose(fp);
n=i;
printf(“錄入完畢!\n”);
}
void seek() /*查找*/
{
int i,item,flag;
char s1[21]; /* 以姓名和學號最長長度+1為準 */
printf(“——————\n”);
printf(“—–1.按學號查詢—–\n”);
printf(“—–2.按姓名查詢—–\n”);
printf(“—–3.退出本菜單—–\n”);
printf(“——————\n”);
while(1)
{
printf(“請選擇子菜單編號:”);
scanf(“%d”,item);
flag=0;
switch(item)
{
case 1:
printf(“請輸入要查詢的學生的學號:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
printf(“學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n”);
printf(“——————————————————————–\n”);
printf(“%6s %7s %6d %5s %9s %8s %10s %14s\n”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf(“該學號不存在!\n”); break;
case 2:
printf(“請輸入要查詢的學生的姓名:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].name,s1)==0)
{
flag=1;
printf(“學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n”);
printf(“——————————————————————–\n”);
printf(“%6s %7s %6d %5s %9s %8s %10s %14s\n”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf(“該姓名不存在!\n”); break;
case 3:return;
default:printf(“請在1-3之間選擇\n”);
}
}
}
void modify() /*修改信息*/
{
int i,item,num;
char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和學號最長長度+1為準 */
printf(“請輸入要要修改的學生的學號:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0) /*比較字元串是否相等*/
num=i;
printf(“——————\n”);
printf(“1.修改姓名\n”);
printf(“2.修改年齡\n”);
printf(“3.修改性別\n”);
printf(“4.修改出生年月\n”);
printf(“5.修改地址\n”);
printf(“6.修改電話號碼\n”);
printf(“7.修改E-mail地址\n”);
printf(“8.退出本菜單\n”);
printf(“——————\n”);
while(1)
{
printf(“請選擇子菜單編號:”);
scanf(“%d”,item);
switch(item)
{
case 1:
printf(“請輸入新的姓名:\n”);
scanf(“%s”,s2);
strcpy(stu[num].name,s2); break;
case 2:
printf(“請輸入新的年齡:\n”);
scanf(“%d”,stu[num].age);break;
case 3:
printf(“請輸入新的性別:\n”);
scanf(“%s”,sex1);
strcpy(stu[num].sex,sex1); break;
case 4:
printf(“請輸入新的出生年月:\n”);
scanf(“%s”,s2);
strcpy(stu[num].time,s2); break;
case 5:
printf(“請輸入新的地址:\n”);
scanf(“%s”,s2);
strcpy(stu[num].add,s2); break;
case 6:
printf(“請輸入新的電話號碼:\n”);
scanf(“%s”,s2);
strcpy(stu[num].tel,s2); break;
case 7:
printf(“請輸入新的E-mail地址:\n”);
scanf(“%s”,s2);
strcpy(stu[num].mail,s2); break;
case 8:return;
default:printf(“請在1-8之間選擇\n”);
}
}
}
void sort()/*按學號排序*/
{
int i,j,*p,*q,s;
char temp[10];
for(i=0;in-1;i++)
{
for(j=n-1;ji;j–)
if(strcmp(stu[j-1].code,stu[j].code)0)
{
strcpy(temp,stu[j-1].code);
strcpy(stu[j-1].code,stu[j].code);
strcpy(stu[j].code,temp);
strcpy(temp,stu[j-1].name);
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j].name,temp);
strcpy(temp,stu[j-1].sex);
strcpy(stu[j-1].sex,stu[j].sex);
strcpy(stu[j].sex,temp);
strcpy(temp,stu[j-1].time);
strcpy(stu[j-1].time,stu[j].time);
strcpy(stu[j].time,temp);
strcpy(temp,stu[j-1].add);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j].add,temp);
strcpy(temp,stu[j-1].tel);
strcpy(stu[j-1].tel,stu[j].tel);
strcpy(stu[j].tel,temp);
strcpy(temp,stu[j-1].mail);
strcpy(stu[j-1].mail,stu[j].mail);
strcpy(stu[j].mail,temp);
p=stu[j-1].age;
q=stu[j].age;
s=*q;
*q=*p;
*p=s;
}
}
}
void insert() /*插入函數*/
{
int i=n,j,flag;
printf(“請輸入待增加的學生數:\n”);
scanf(“%d”,m);
do
{
flag=1;
while(flag)
{
flag=0;
printf(“請輸入第 %d 個學生的學號:\n”,i+1);
scanf(“%s”,stu[i].code);
for(j=0;ji;j++)
if(strcmp(stu[i].code,stu[j].code)==0)
{
printf(“已有該學號,請檢查後重新錄入!\n”);
flag=1;
break; /*如有重複立即退出該層循環,提高判斷速度*/
}
}
printf(“請輸入第 %d 個學生的姓名:\n”,i+1);
scanf(“%s”,stu[i].name);
printf(“請輸入第 %d 個學生的年齡:\n”,i+1);
scanf(“%d”,stu[i].age);
printf(“請輸入第 %d 個學生的性別:\n”,i+1);
scanf(“%s”,stu[i].sex);
printf(“請輸入第 %d 個學生的出生年月:(格式:年.月)\n”,i+1);
scanf(“%s”,stu[i].time);
printf(“請輸入第 %d 個學生的地址:\n”,i+1);
scanf(“%s”,stu[i].add);
printf(“請輸入第 %d 個學生的電話:\n”,i+1);
scanf(“%s”,stu[i].tel);
printf(“請輸入第 %d 個學生的E-mail:\n”,i+1);
scanf(“%s”,stu[i].mail);
if(flag==0)
{
i=i;
i++;
}
}
while(in+m);
n+=m;
printf(“錄入完畢!\n\n”);
sort();
}
void del()
{
int i,j,flag=0;
char s1[LEN+1];
printf(“請輸入要刪除學生的學號:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
for(j=i;jn-1;j++)
stu[j]=stu[j+1];
}
if(flag==0)
printf(“該學號不存在!\n”);
if(flag==1)
{
printf(“刪除成功,顯示結果請選擇菜單6\n”);
n–;
}
}
void display()
{
int i;
printf(“所有學生的信息為:\n”);
printf(“學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n”);
printf(“——————————————————————–\n”);
for(i=0;in;i++)
{
printf(“%6s %7s %5d %5s %9s %8s %10s %14s\n”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
}
void save()
{
int i;
FILE *fp;
fp=fopen(“student.txt”,”w”); /*寫入*/
for(i=0;in;i++)
{
fprintf(fp,”%s %s %d %s %s %s %s %s\n”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
fclose(fp);
}
void menu()/* 界面 */
{
int num;
printf(“*********************系統功能菜單************************ \n”);
printf(“友情提醒:查詢前請先刷新系統! \n”);
printf(” ———————- ———————- \n”);
printf(” ********************************************* \n”);
printf(” * 0.系統幫助及說明 * * 1.刷新學生信息 * \n”);
printf(” ********************************************* \n”);
printf(” * 2.查詢學生信息 * * 3.修改學生信息 * \n”);
printf(” ********************************************* \n”);
printf(” * 4.增加學生信息 * * 5.按學號刪除信息 * \n”);
printf(” ********************************************* \n”);
printf(” * 6.顯示當前信息 * * 7.保存當前學生信息* \n”);
printf(” ********************** ********************** \n”);
printf(” * 8.退出系統 * \n”);
printf(” ********************** \n”);
printf(” ———————- ———————- \n”);
printf(“請選擇菜單編號:”);
scanf(“%d”,num);
switch(num)
{
case 0:help();break;
case 1:readfile();break;
case 2:seek();break;
case 3:modify();break;
case 4:insert();break;
case 5:del();break;
case 6:display();break;
case 7:save();break;
case 8:k=0;break;
default:printf(“請在0-8之間選擇\n”);
}
用標準C語言編寫學生信息管理系統
把我之前做的給你吧,差不多的
#includestdio.h
#includestdlib.h
#includestring.h
#include”conio.h”
#define N 50 //定義符號常量,代表學生人數最大值
int count=0; //全局變數,用於記錄數組的當前位置
struct student //定義結構體類型,代表學生信息*/
{
char name[9];
char number[10];
float math;
float english;
float physics;
float computer;
};
void input(struct student *arr); //函數聲明,輸入學生信息*/
void sort(struct student *arr); //函數聲明,按總分排序*/
void find(struct student *arr); //函數聲明,查找某位學生信息*/
void main()
{
char selmenu; //定義局部變數,用於記錄用戶選擇的功能編號*/
struct student stud[N]; //定義結構體數組,用於記錄學生信息*/
do //利用循環顯示界面*/
{
system(“cls”); //清屏函數*/
printf(“\n\n”);
printf(“歡迎使用學生管理系統\n”);
printf(“————————\n”);
printf(“學生成績管理系統 \n\n”);
printf(“1.輸入學生信息 \n”);
printf(“2.按總分進行排榜 \n”);
printf(“3.查找相應的學生信息 \n”);
printf(“4.退出學生成績管理系統 \n\n”);
printf(“請輸入功能選擇編號:”);
fflush(stdin); //清空輸入緩衝區
scanf(“%c”,selmenu); //接受用戶選擇的功能編號
switch(selmenu) //輸入不同功能編號調用相應函數來完成功能
{
case’1′:
input(stud); //調用輸入學生信息函數,參數為學生信息數組名
break;
case’2′:
sort(stud); //調用按總分排榜函數,參數是數組名
break;
case’3′:
find(stud); //調用按學號和姓名查找學生信息函數
break;
}
}while(selmenu!=’4′); //判斷是否退出
printf(“*^-^* 謝謝使用 *^-^*\n”); //輸出告別詞
printf(” 任務完成 “);
getch();
}
void input(struct student *arr) //定義輸入學生信息函數
{
char ch; //用於接收用戶指令
do //利用循環,由用戶控制輸入學生成績
{
system(“cls”);
printf(“\n輸入第%d個學生的信息:\n輸入學生姓名:”,count+1);
scanf(“%s”,arr[count].name);
printf(“\n輸入學生學號:”);
scanf(“%s”,arr[count].number);
printf(“\n輸入數學成績:”);
scanf(“%f”,arr[count].math);
printf(“\n輸入英語成績:”);
scanf(“%f”,arr[count].english);
printf(“\n輸入物理成績:”);
scanf(“%f”,arr[count].physics);
printf(“\n輸入計算機成績:”);
scanf(“%f”,arr[count].computer);
count++; //記錄當前輸入的學生資料的個數
printf(“\n是否繼續輸入(y/n)\n”);
fflush(stdin); //清空輸入緩衝區
ch=getchar();
}while(ch==’y’||ch==’Y’); //判斷用戶指令,是否繼續輸入
}
void sort(struct student *arr) //定義按總分排榜函數
{
int i,j,k; //定義循環變數i,j,最小數位置k
struct student t; //定義交換臨時變數
if(count==0) //判斷數組中學生成績是否存在
printf(“無學生成績,請先錄入學生信息\n”);
else
{
for(i=0;icount-1;i++) //用選擇法按總分對學生成績排序
{
k=i;
for(j=i+1;jcount;j++) //k為arr[i]到arr[count-1]中最小數的位置
if((arr[k].math+arr[k].english+arr[k].physics+arr[k].computer)(arr[j].math+arr[j].english+arr[j].physics+arr[j].computer))
k=j;
if(k!=i) //如果最小數不是比較數列中第一個,對調
{
t=arr[k];
arr[k]=arr[i];
arr[i]=t;
}
}
printf(“\n總分排榜版:\n\n”);
printf(“\t姓名\t學號\t數學\t英語\t物理\t計算機\t總分\t名次\n”);
for(j=0;jcount;j++) //輸出按總分排榜後的學生成績和名次
printf(“\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-5d\n”,
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english,j+1);
}
printf(“\n回車鍵返回主程序\n”);
fflush(stdin);
getchar();
}
void find(struct student *arr) //定義查找函數
{
int j;
char name[9]; //用於接收用戶輸入的學生姓名
char number[10]; //用於接收用戶輸入的學生學號
system(“cls”); //清屏函數
printf(“\n請輸入要查找的學生資料:\n”);
printf(“\n學生姓名:”);
scanf(“%s”,name);
printf(“\n學生學號:”);
scanf(“%s”,number);
for(j=0;jcount;j++) //使用字元串比較函數查找兵書出符合條件的學生成績
{
if((strcmp(name,arr[j].name)==0)(strcmp(number,arr[j].number)==0))
{
printf(“\n\t姓名\t學號\t數學\t英語\t物理\t計算機\t總分\n”);
printf(“\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\n”,
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english);
break;
}
}
if(j=count) //如果沒找到,會從循環條件退出
printf(“\n未找到該學生紀錄,請核對後重新查找!\n”);
fflush(stdin); //清空輸入緩衝區
printf(“\n回車鍵返回\n”);
getchar();
}
c語言編寫學生信息管理系統
/*好吧,其實你可以上網看看,那麼多的,你可以自己修改下*/
#include stdio.h
#include malloc.h
#include string.h
#include stdlib.h
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
char name[20];
long int num;
char sex[4];
int age;
char address[30];
double tele_num;
char aihao[20];
struct student *next;
};//定義一個結構題
int TOTAL_NUM = 0;//學生總數
struct student *head = NULL;
void welcome (); //歡迎界面
void mainmenu (); //主界面
void record (); //記錄數據
void insert(struct student *stu); //插入數據
void display(struct student *stu); //顯示一個學生的信息
void displayAll (); //顯示所有學生的信息
void query_by_num (); //按學號查詢學生信息
void readData (); //讀取文件里學生的信息
void writeData (); //向文件寫入學生信息
void freeAll (); //清空鏈表內容
void del (); //刪除學生信息
void change (); //更改學生信息
void devise (struct student *p); //選擇更改內容
int main (void)
{
welcome ();
//顯示主菜單
mainmenu ();
return 0;
}
//顯示歡迎信息
void welcome ()
{
printf (“+—————————————————-+\n”);
printf (“| |\n”);
printf (“| 歡迎使用網路工程學院信息安全092班學生信息管理系統 |\n”);
printf (“| |\n”);
printf (“+—————————————————-+\n”);
}
//系統主菜單
void mainmenu ()
{
int choice;
choice = -1;
readData ();
printf (“\n溫馨提示:為保證您的操作得到保存,請按正常順序退出系統^_^\n”);
do
{
printf (“\n\n\n”);
printf (“\t\t\t——————————————–\n”);
printf (“\t\t\t+ 信息安全092班學生信息管理系統 |\n”);
printf (“\t\t\t——————————————–\n”);
printf (“\t\t\t+ [1]—-錄入學生信息 |\n”);
printf (“\t\t\t+ [2]—-瀏覽學生信息 |\n”);
printf (“\t\t\t+ [3]—-查詢學生信息 |\n”);
printf (“\t\t\t+ [4]—-刪除學生信息 |\n”);
printf (“\t\t\t+ [5]—-修改學生信息 |\n”);
printf (“\t\t\t+ [0]—-退出系統 |\n”);
printf (“\t\t\t+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|\n”);
printf (“\t\t\t——————————————–\n”);
printf (“請輸入您的選擇:”);
scanf (“%d”, choice);
switch (choice)
{
case 0:
writeData ();
freeAll ();
exit (0);
case 1:
record ();
break;
case 2:
displayAll ();
break;
case 3:
query_by_num ();
break;
case 4:
del ();
break;
case 5:
change ();
break;
default:
printf (“\n無效選項!”);
break;
}
}
while (choice != 0);
}
//錄入學生信息
void record ()
{
struct student *p0;
p0 = (struct student *)malloc(LEN);
printf (“請輸入學生的姓名:”);
scanf (“%s”,p0-name);
printf (“請輸入學生的學號:”);
scanf (“%ld”,p0-num);
printf (“請輸入學生的性別:”);
scanf (“%s”,p0-sex);
printf (“請輸入學生的年齡:”);
scanf (“%d”,p0-age);
printf (“請輸入學生的地址:”);
scanf (“%s”,p0-address);
printf (“請輸入學生的電話:”);
scanf (“%lf”,p0-tele_num);
printf (“請輸入學生的愛好:”);
scanf (“%s”,p0-aihao);
insert (p0);
printf (“該學生的信息為:\n”);
printf (“——————————————————————————-\n”);
printf (“姓名\t學號\t\t年齡\t性別\t地址\t\t電話\t\t愛好\n”);
display (p0);
}
void insert (struct student *stu)
{
struct student *p0, *p1, *p2;
p1 = head;
p0 = stu;
if (head == NULL)
{
head = p0;
p0-next = NULL;
}
else
{
while ((p0-num p1-num)(p1-next != NULL))
{
p2 = p1;
p1 = p1-next;
}
if (p0-num = p1-num)
{
if (head == p1)
head = p0;
else
p2-next = p0;
p0-next = p1;
}
else
{
p1-next = p0;
p0-next = NULL;
}
}
TOTAL_NUM++;
}
void display (struct student *p)
{
printf (“%s\t%ld\t%d\t%s\t%s\t\t%.0f\t%s\n”, p-name, p-num, p-age, p-sex, p-address, p-tele_num, p-aihao);
}
//瀏覽學生信息
void displayAll()
{
struct student *p;
printf(“學生總數:%d\n”, TOTAL_NUM);
p = head;
if (head != NULL)
{
printf(“\n姓名\t學號\t\t年齡\t性別\t地址\t\t電話\t\t愛好\n”);
printf(“——————————————————————————-\n”);
do
{
display(p);
p = p-next;
}
while(p != NULL);
}
printf (“\n”);
}
//按學號查詢學生信息
void query_by_num ()
{
int num;
struct student *p1;
printf(“請輸入學生的學號:”);
scanf(“%ld”, num);
if(head==NULL)
{
printf(“無學生記錄!\n”);
return;
}
p1 = head;
while (num!=p1-num p1-next!=NULL)
p1 = p1-next;
if (num == p1-num)
{
printf (“姓名\t學號\t\t年齡\t性別\t地址\t\t電話\t\t愛好\n”);
printf (“——————————————————————————-\n”);
display (p1);
}
else
printf (“沒有該學生記錄,請核對!”);
}
//寫入文件
void writeData ()
{
FILE* fp;//文件指針
struct student *p;
fp = fopen(“1.txt”, “w”);
if (!fp)
{
printf(“文件打開錯誤!”);
return;
}
fprintf(fp,”%d\n”, TOTAL_NUM);
for(p = head; p!= NULL; p= p-next)
{
fprintf(fp,”%s\t%ld\t%s\t%d\t%s\t%.0f\t%s\n”, p-name, p-num, p-sex, p-age, p-address, p-tele_num, p-aihao);
}
fclose (fp);
}
void freeAll ()
{
struct student *p1, *p2;
p1 = p2=head;
while(p1)
{
p2=p1-next;
free (p1);
p1 = p2;
}
}
//讀取文件
void readData ()
{
FILE* fp;//文件指針
struct student *p1, *p2;
fp = fopen(“1.txt”, “r”);
if (!fp)
{
printf(“文件打開錯誤!”);
return;
}
fscanf(fp,”%d\n”, TOTAL_NUM);
head = p1 = p2 = (struct student *)malloc(LEN);
fscanf(fp,”%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n”, p1-name, p1-num, p1-sex, p1-age, p1-address, p1-tele_num, p1-aihao);
while(!feof(fp))
{
p1 = (struct student *)malloc(LEN);
fscanf(fp,”%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n”, p1-name, p1-num, p1-sex, p1-age, p1-address, p1-tele_num, p1-aihao);
p2-next = p1;
p2 = p1;
}
p2-next = NULL;
fclose(fp);
}
//刪除學生信息
void del ()
{
struct student *p1, *p2;
long int num;
if (head == NULL)
{
printf(“無學生記錄!\n”);
return;
}
printf(“請輸入您要刪除的學生的學號:”);
scanf(“%ld”, num);
p1 = head;
while (num != p1-num p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(num == p1-num)
{
if(p1 == head)
head = p1-next;
else p2-next = p1-next;
free(p1);
TOTAL_NUM–;
}
else
printf(“沒有該學生記錄,請核對!\n”);
}
//修改學生信息
void change ()
{
struct student *p1, *p2;
long int num;
if (head == NULL)
{
printf (“無學生記錄!\n”);
return;
}
printf (“請輸入您要修改的學生的學號:”);
scanf (“%ld”, num);
p1 = head;
while (num != p1-num p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(num == p1-num)
devise (p1);
else
printf(“沒有該學生記錄,請核對!\n”);
}
void devise (struct student *p)
{
int choice;
choice = -1;
do
{
printf(“請選擇您要修改的學生的信息內容:\n”);
printf(“+———————-+\n”);
printf(“| 姓名 請按 1 |\n”);
printf(“| 學號 請按 2 |\n”);
printf(“| 性別 請按 3 |\n”);
printf(“| 年齡 請按 4 |\n”);
printf(“| 地址 請按 5 |\n”);
printf(“| 電話 請按 6 |\n”);
printf(“| 愛好 請按 7 |\n”);
printf(“| 取消 請按 0 |\n”);
printf(“+———————-+\n”);
printf(“請輸入您的選擇:”);
scanf(“%d”, choice);
switch (choice)
{
case 0:
return;
case 1:
printf(“請輸入新姓名:”);
scanf(“%s”, p-name);
break;
case 2:
printf(“請輸入新學號:”);
scanf(“%d”, p-num);
break;
case 3:
printf(“請輸入新性別:”);
scanf(“%s”, p-sex);
break;
case 4:
printf(“請輸入新年齡:”);
scanf(“%s”, p-age);
break;
case 5:
printf(“請輸入新地址:”);
scanf(“%s”, p-address);
break;
case 6:
printf(“請輸入新電話:”);
scanf(“%lf”, p-tele_num);
break;
case 7:
printf(“請輸入新愛好:”);
scanf(“%s”, p-aihao);
break;
default:
printf(“\n無效選項!”);
break;
}
}
while(choice != 0);
}
如何用C語言編寫學生信息管理系統
參考如下學生信息管理系統的C源代碼吧。
#include stdio.h
#include string.h
/*定義學生結構體*/
struct Student
{
char ID[20];
char Name[20];
float Mark1;
float Mark2;
float Mark3;
float Average;
};
/*聲明學生數組及學生數量*/
struct Student students[1000];
int num=0;
/*求平均值*/
float Avg(struct Student stu)
{
return (stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通過學號返回數組下標*/
int Student_SearchByIndex(char id[])
{
int i;
for (i=0;inum;i++)
{
if (strcmp(students[i].ID,id)==0)
{
return i;
}
}
return -1;
}
/*通過姓名返回數組下標*/
int Student_SearchByName(char name[])
{
int i;
for (i=0;inum;i++)
{
if (strcmp(students[i].Name,name)==0)
{
return i;
}
}
return -1;
}
/*顯示單條學生記錄*/
void Student_DisplaySingle(int index)
{
printf(“%10s%10s%8s%8s%8s%10s\n”,”學號”,”姓名”,”成績”,”成績”,”成績”,”平均成績”);
printf(“————————————————————-\n”);
printf(“%10s%10s%8.2f%8.2f%8.2f%10.2f\n”,students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入學生信息*/
void Student_Insert()
{
while(1)
{
printf(“請輸入學號:”);
scanf(“%s”,students[num].ID);
getchar();
printf(“請輸入姓名:”);
scanf(“%s”,students[num].Name);
getchar();
printf(“請輸入成績:”);
scanf(“%f”,students[num].Mark1);
getchar();
printf(“請輸入成績:”);
scanf(“%f”,students[num].Mark2);
getchar();
printf(“請輸入成績:”);
scanf(“%f”,students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf(“是否繼續?(y/n)”);
if (getchar()==’n’)
{
break;
}
}
}
/*修改學生信息*/
void Student_Modify()
{
//float mark1,mark2,mark3;
while(1)
{
char id[20];
int index;
printf(“請輸入要修改的學生的學號:”);
scanf(“%s”,id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf(“學生不存在!\n”);
}
else
{
printf(“你要修改的學生信息為:\n”);
Student_DisplaySingle(index);
printf(“– 請輸入新值–\n”);
printf(“請輸入學號:”);
scanf(“%s”,students[index].ID);
getchar();
printf(“請輸入姓名:”);
scanf(“%s”,students[index].Name);
getchar();
printf(“請輸入成績:”);
scanf(“%f”,students[index].Mark1);
getchar();
printf(“請輸入成績:”);
scanf(“%f”,students[index].Mark2);
getchar();
printf(“請輸入成績:”);
scanf(“%f”,students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf(“是否繼續?(y/n)”);
if (getchar()==’n’)
{
break;
}
}
}
/*刪除學生信息*/
void Student_Delete()
{
int i;
while(1)
{
char id[20];
int index;
printf(“請輸入要刪除的學生的學號:”);
scanf(“%s”,id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf(“學生不存在!\n”);
}
else
{
printf(“你要刪除的學生信息為:\n”);
Student_DisplaySingle(index);
printf(“是否真的要刪除?(y/n)”);
if (getchar()==’y’)
{
for (i=index;inum-1;i++)
{
students[i]=students[i+1];//把後邊的對象都向前移動
}
num–;
}
getchar();
}
printf(“是否繼續?(y/n)”);
if (getchar()==’n’)
{
break;
}
}
}
/*按姓名查詢*/
void Student_Select()
{
while(1)
{
char name[20];
int index;
printf(“請輸入要查詢的學生的姓名:”);
scanf(“%s”,name);
getchar();
index=Student_SearchByName(name);
if (index==-1)
{
printf(“學生不存在!\n”);
}
else
{
printf(“你要查詢的學生信息為:\n”);
Student_DisplaySingle(index);
}
printf(“是否繼續?(y/n)”);
if (getchar()==’n’)
{
break;
}
}
}
/*按平均值排序*/
void Student_SortByAverage()
{
int i,j;
struct Student tmp;
for (i=0;inum;i++)
{
for (j=1;jnum-i;j++)
{
if (students[j-1].Averagestudents[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*顯示學生信息*/
void Student_Display()
{
int i;
printf(“%10s%10s%8s%8s%8s%10s\n”,”學號”,”姓名”,”成績”,”成績”,”成績”,”平均成績”);
printf(“————————————————————-\n”);
for (i=0;inum;i++)
{
printf(“%10s%10s%8.2f%8.2f%8.2f%10.2f\n”,students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*將學生信息從文件讀出*/
void IO_ReadInfo()
{
FILE *fp;
int i;
if ((fp=fopen(“Database.txt”,”rb”))==NULL)
{
printf(“不能打開文件!\n”);
return;
}
if (fread(num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;inum;i++)
{
fread(students[i],sizeof(struct Student),1,fp);
}
}
fclose(fp);
}
/*將學生信息寫入文件*/
void IO_WriteInfo()
{
FILE *fp;
int i;
if ((fp=fopen(“Database.txt”,”wb”))==NULL)
{
printf(“不能打開文件!\n”);
return;
}
if (fwrite(num,sizeof(int),1,fp)!=1)
{
printf(“寫入文件錯誤!\n”);
}
for (i=0;inum;i++)
{
if (fwrite(students[i],sizeof(struct Student),1,fp)!=1)
{
printf(“寫入文件錯誤!\n”);
}
}
fclose(fp);
}
/*主程序*/
void main()
{
int choice;
IO_ReadInfo();
while(1)
{
/*主菜單*/
printf(“\n—— 學生成績管理系統——\n”);
printf(“1. 增加學生記錄\n”);
printf(“2. 修改學生記錄\n”);
printf(“3. 刪除學生記錄\n”);
printf(“4. 按姓名查詢學生記錄\n”);
printf(“5. 按平均成績排序\n”);
printf(“6. 退出\n”);
printf(“請選擇(1-6):”);
scanf(“%d”,choice);
getchar();
switch(choice)
{
case 1:
Student_Insert();
break;
case 2:
Student_Modify();
break;
case 3:
Student_Delete();
break;
case 4:
Student_Select();
break;
case 5:
Student_SortByAverage();
Student_Display();
break;
case 6:
exit(0);
break;
}
IO_WriteInfo();
}
}
求C語言學生信息管理系統的需求分析和設計小結
一、需求分析
當代大學生是一個特殊的團體,他們具有較高知識修養和較強綜合素質,但是他們中的大部分卻不具有與他們能力相符的動手能力與就業競爭能力。大學畢業生是新興勞動力的組成部分,提高大學畢業生就業工作發展水平,事關我國經濟社會可持續發展的進程 ,高校作為培養大學生的搖籃,必須責無旁貸地承擔起提高大學生就業能力的重任。提高大學生的就業能力,不僅需要教師付出辛勤的勞動,還需要一套科學完善的制度作為保障,而高校畢業生基本情況資料庫管理系統無疑是一個很好的嘗試。本文設計的這套資料庫管理系統,是綜合日常管理、實踐考核、科目成績統計、就業管理等等的綜合性資料庫系統。設計學生管理這樣一個系統,可以涉及到大多數與c資料庫的重要資料庫對象、重要功能和特性,例如:視圖、觸發器和存儲過程等。由此,通過這個課程設計可以加深學生對與C資料庫知識的學習、理解,使學生掌握使用應用軟體開發工具開發資料庫管理系統的基本方法。在實用性方面,學生管理系統是很普遍的一種應用,選擇該系統作為課程設計也可以為學生以後可能遇到的實際開發提供借鑒。
課程設計小結
以前,我對計算機方面的了解少之甚少,而且對編程沒有什麼興趣,認為它十分的枯燥乏味。但是自從接受了C語言這門課程的學習之後,我的態度大有改觀。不僅從中了解到了C語言是國內外廣泛使用的語言,而且還知道了它的功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高等特點。特別的適合於編寫系統軟體。通過獨立自主的完成每一次作業,我從中體會到了程序調試成功後的喜悅,並且對已學知識有了進一步的了解。總之,我正在改變,從不感興趣向喜歡這門課程有了很大的改變。
在編此程序的過程中,我遇到了一些問題,在剛剛編完時,出現了許多錯誤,其中最主要的便是函數的形參和實參類型不匹配,經過幾次改寫,最終將形參——結構體指針改為了結構體數組,使得錯誤減少了許多。同時還出現了一些因馬虎而產生的錯誤,不過最後經過仔細檢查都解決了。最難找的的要數邏輯錯誤了,在對成績進行計算的時候,忘了對數組進行處理,結果進行完運算後並沒有得到預期結果。還有,在編寫刪除和添加函數時對覆蓋前面的成績沒有把握,但經過參考一些資料後,確定了我的想法還是行的通的。總體而言,程序編寫中遇到的錯誤還是比較小的,經過自己的努力還是給克服了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244382.html