當前位置:首頁 » 編程語言 » c語言信管

c語言信管

發布時間: 2022-09-04 05:46:39

c語言編寫學生信息管理系統,不要報錯的......

可以輸入
輸出
查找
排序學生的成績
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define
N
50
struct
Student
{
long
number;
char
name[20];
int
score;
}stu[N],t;
struct
Student
*p;
int
Num=0;
void
input()
{
char
ch;
for(p=stu+Num;p-stu<N;p++)
{
Num++;
printf("請輸入第%d個學生的學號:",Num);
scanf("%ld",&p->number);
printf("請輸入第%d個學生的姓名:",Num);
scanf("%s",p->name);
printf("請輸入第%d個學生的成績:",Num);
scanf("%d",&p->score);
if(Num<N)
{
printf("\n已輸入%d個學生的信息,是否繼續輸入(y/n)?",Num);
ch=getchar();
scanf("%c",&ch);
if(ch=='n')
break;
}
else
printf("已輸入%d個學生的信息,不能再輸入\n",N);
}
}
void
output()
{
char
ch;
for(p=stu;p-stu<Num;p++)
{
printf("學號\t\t\t姓名\t\t\t成績\n");
printf("%-24ld%-24s%d\n",p->number,p->name,p->score);
}
printf("按回車鍵繼續\n");
ch=getchar();
ch=getchar();
}
void
sort()
{
char
ch;
int
i,j;
for(i=0;i<Num-1;i++)
for(j=i+1;j<Num;j++)
{
if(stu[i].score<stu[j].score)
{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
}
printf("已排序完畢,是否輸出排序後學生信息(y/n)?");
ch=getchar();
if(ch=getchar()=='y')
output();
}
void
search()
{
char
nam[20],ch;
int
k=0;
fflush(stdin);
printf("請輸入需要查詢的學生姓名:");
gets(nam);
for(p=stu;p-stu<Num;p++)
{
if(!strcmp(nam,p->name))
{
printf("學號\t\t\t姓名\t\t\t成績\n");
printf("%-24ld%-24s%d\n",p->number,p->name,p->score);
k=1;
}
}
if(k==0)
printf
("不存在該學生信息\n");
printf("按回車鍵繼續\n");
ch=getchar();
}
int
menu()
{
int
choice;
printf("\t\t學生信息管理系統\n");
printf("\t1.輸入學生的成績\n\t2.輸出學生的成績\n\t3.排序學生的成績\n\t4.查找學生的成績\n\t5.退出系統\n");
printf("\n請輸入你的選擇(1-5):");
scanf("%d",&choice);
return
choice;
}
main()
{
while(1)
{
switch(menu())
{
case
1:input();break;
case
2:output();break;
case
3:sort();break;
case
4:search();break;
case
5:exit(0);
}
}
}

⑵ 如何用c語言製作一個學生信息管理系統,要求以文件形式保存

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//鏈表結點結構體聲明

typedef struct subjects

{

char name[20];

float score;

}sub;

typedef struct student

{

int num;

char name[20];

sub subject[3];

struct student* next;

}stu,*pstu;

#define SIZE sizeof(stu)

//函數申明

pstu LoadInfo();

void PrintMenu();

pstu AddStu(pstu );

pstu DeleStu(pstu );

pstu RwrStu(pstu );

void FindStu(pstu , char );

void Count(pstu ,char * ,float ,float );

void Rank(pstu ,char * );

void SaveQuit(pstu );

//創建菜單,進入選擇循環

while(1)

{

PrintMenu();

printf("請輸入您的選擇編號:");

scanf("%d",&n);

getchar();

switch(n)

{

case 1:

{

system("cls");

j=0;

while(4!=j)

{

printf("歡迎進入信息管理版塊! ");

printf("25 1、添加學生 ");

printf("25 2、刪除學生 ");

printf("25 3、修改學生信息 ");

printf("25 4、返回 ");

printf("請輸入您的選擇編號: ");

scanf("%d",&j);

getchar();

if ( 1 == j) head = AddStu(head);

else if( 2 == j) head = DeleStu(head);

else if( 3 == j) head = RwrStu(head);

else if( 4 == j) ;

else printf("輸入有誤,請重新輸入! ");

}

case 2:

{

//信息查詢

system("cls");

printf("歡迎進入信息查詢版塊! ");

printf("請輸入要查詢的學生編號:");

scanf("%d",&j);

getchar();

//printf("%d ",j); //檢測輸入是否成功,調試程序用

FindStu(head,j); //查詢並輸出

printf(" 請輸入回車鍵返回主菜單!");

getchar();

system("cls");

break;

}

(2)c語言信管擴展閱讀:

C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。

實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。

⑶ 用c語言編寫學生信息管理系統

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 200
int input(struct Student stu[N]);
void save(struct Student stu[N],int n);
int load(struct Student stu[N]);
void output(struct Student stu[N],int n);
int insert(struct Student stu_save[],int n);
void sort(struct Student stu_save[],int n);
void find(struct Student stu_save[],int n);
int delete_stu(struct Student stu_save[],int n);
typedef struct Student
{
char num[20];
char name[20];
char sex;
int age;
float score[3];
float tolscore;
float ave;
}STU;
int main()
{
int total=0,a;
STU stu[N];
printf("☆☆☆☆☆學籍管理系統☆☆☆☆☆\n\n");
do{
printf("\n**********************************\n");
printf("1-導入學生信息\n2-載入學生信息\n3-保存學生信息\n4-按學號插入學生\n5-給學生排序\n6-查找學生\n7-刪除學生\n8-輸出當前學生數據\n9-退出\n");
printf("**********************************\n");
printf("請按鍵選擇:");
scanf("%d",&a);
switch(a)
{
case 1:

total=input(stu);
break;
case 2: total=load(stu);break;
case 3:save(stu,total);break;
case 4: total+=insert(stu,total);break;
case 5:sort(stu,total);break;
case 6:find(stu,total);break;
case 7:total-=delete_stu(stu,total);break;
case 8:output(stu,total);break;
case 9:exit(0);break;
default:printf("輸入錯誤,請重新輸入!\n");break;
}
//system("cls");
}while(1);
}
int input(struct Student stu[])
{
int i,j,n;
float sum;
printf("請輸入要導入的學生人數\n");
scanf("%d",&n);
printf("請輸入學生的學號、姓名、性別、年齡及三門課成績\n");
for(i=0;i<n;i++)
{

scanf("%s",stu[i].num);
scanf("%s",stu[i].name);
scanf(" %c",&stu[i].sex); //%c前的空格用於接收上一個字元串後的空格、回車、製表符,etc
scanf("%d",&stu[i].age);
sum=0;
for(j=0;j<3;j++)
{
scanf("%f",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].tolscore=sum;
stu[i].ave=sum/3.0f;
}

return (n);
}

void save(struct Student stu[],int n)
{
FILE *fp;
int i;
char filename[20];
printf("請輸入文件名:");
scanf("%s",filename);
if(strchr(filename,'.')==NULL)
strcat(filename,".dat");
if((fp=fopen(filename,"wb"))==NULL)
{
printf("Cannot open this file\n");
system("pause");
return;
}
fwrite(&n,sizeof(int),1,fp);
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct Student),1,fp);
fclose(fp);
printf("保存成功!");
system("pause");
return;
}
int load(struct Student stu_save[])
{
FILE *fp;
int i,n;
char filename[20];
printf("請輸入要載入的文件名: ");
//getchar();
scanf("%s",filename);
// gets(filename);
if(strchr(filename,'.')==NULL)
strcat(filename,".dat");
if((fp=fopen(filename,"rb"))==NULL)
{
printf("Cannot open this file\n");
system("pause");
return 0;
}
fread(&n,sizeof(int),1,fp);
for(i=0;i<n;i++)
fread(&stu_save[i],sizeof(struct Student),1,fp);
fclose(fp);
system("cls");
printf("文件載入成功!數據如下");
output(stu_save,n);
return n;
}
void output(struct Student stu_save[],int n)
{
int i,j;
// system("cls");
printf("\n學號\t姓名\t性別\t年齡\t成績一\t成績二\t成績三\t總分\t平均分\n");
for(i=0;i<n;i++)
{
printf("%s\t",stu_save[i].num);
printf("%s\t",stu_save[i].name);
printf("%c\t",stu_save[i].sex);
printf("%d\t",stu_save[i].age);
for(j=0;j<3;j++)
printf("%g\t",stu_save[i].score[j]);
printf("%g\t",stu_save[i].tolscore);
printf("%.2f",stu_save[i].ave);
putchar(10);
}
system("pause");
return;
}
int insert(struct Student stu_save[],int n)
{
int i,j,num=0;
float sum=0;
struct Student s;
char flag;
if(n>200)
{
printf("空間已滿,無法插入!\n");
return 0;
}
// load(stu_save,n-1);
do{

printf("\n請依次輸入學號、姓名、性別、年齡及三門課成績\n");
scanf("%s",s.num);
scanf("%s",s.name);
scanf(" %c",&s.sex); //%c前的空格用於接收上一個字元串後的空格、回車、製表符,etc
scanf("%d",&s.age);
for(j=0;j<3;j++)
scanf("%f",&s.score[j]);
sum=0;
for(j=0;j<3;j++)
sum+=s.score[j];
s.tolscore=sum;
s.ave=sum/3;
num++;
for(i=n+num-1;strcmp(stu_save[i-1].num,s.num)>0&&i>0;i--)
stu_save[i]=stu_save[i-1];
stu_save[i]=s;
printf("插入成功!");

fflush(stdin);
do
{
printf("繼續插入?(y/n)");

flag=getch();
}while(flag!='y'&&flag!='n');
}while(flag=='y');

system("pause");
//save(stu_save,n);
return num;
}
void sort(struct Student stu_save[],int n)
{
int a,i,j;
struct Student t;
system("cls");
printf("\n1-按序號排序\n2-按成績排序\n請選擇:");
scanf("%d",&a);
while(a!=1&&a!=2)
{
printf("輸入有誤,請重新輸入!\n");
scanf("%d",&a);
}
//load(stu_save,n);
if(a==1)
{
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strcmp(stu_save[j].num,stu_save[j+1].num)>0)
{
t=stu_save[j];
stu_save[j]=stu_save[j+1];
stu_save[j+1]=t;
}
}
}
else
{
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(stu_save[j].ave<stu_save[j+1].ave)
{
t=stu_save[j];
stu_save[j]=stu_save[j+1];
stu_save[j+1]=t;
}
}
}
// save(stu_save,n);
printf("排序成功!\n");
output(stu_save,n);
return;
}
void find(struct Student stu_save[],int n)
{
char ch;
do{
int i,j,w=1;
char search[20];
//load(stu_save,n);
printf("請輸入學生的學號或姓名");
scanf("%s",search);
for(i=0;i<n;i++)
{
if(strcmp(stu_save[i].num,search)==0||strcmp(stu_save[i].name,search)==0)
{
printf("查找成功,該學生的信息為:\n");
printf("%s\t",stu_save[i].num);
printf("%s\t",stu_save[i].name);
printf("%c\t",stu_save[i].sex);
printf("%d\t",stu_save[i].age);
for(j=0;j<3;j++)
printf("%g\t",stu_save[i].score[j]);
printf("%g\t",stu_save[i].tolscore);
printf("%.2f",stu_save[i].ave);
putchar(10);
w=0;
break;
}
}
if(w)
printf("查找失敗\n");

do
{
printf("\n按Y繼續查找,按N返回上級菜單\n");
ch=getch();
}while(ch!='y'&&ch!='n');
if(ch=='n')
return;
}while(ch=='y');
}
int delete_stu(struct Student stu_save[],int n)
{
int i,w=1;
char search[20];
// load(stu_save,n);
printf("\n請輸入要刪除學生的姓名或學號\n");
scanf("%s",search);
for(i=0;i<n;i++)
if(strcmp(stu_save[i].num,search)==0||strcmp(stu_save[i].name,search)==0)
{
w=0;
break;
}
if(w)
{
printf("無此學生!\n");
return 0;
}
for(;i<n-1;i++)
stu_save[i]=stu_save[i+1];
printf("刪除成功!\n");
// save(stu_save,n-1);
return 1;
}

之前隨便寫的 忘了有沒有調試 有問題再私信找我 採納哦~~

⑷ C語言學生信息管理系統程序設計

如果多找幾個人,我倒是有興趣加入一起做,畢竟這個程序還是挺大的,代碼量也大,不是說一個人一兩天就能完成的。

⑸ C語言編寫學生信息管理系統,這個怎麼弄

/////////////////////////簡單的學生管理系統///////////////////
#include<iostream>
#define max 5
using namespace std;
struct student//////////定義數組結構體
{
int xuehao; //學號
char name[10]; //姓名
char sex; //性別
int age; //年齡
}stu[max];

//////定義數型
char a; //全局函數a(操作數)
int i; //全局函數i(循環操作數)

//////////函數列表
void display(); //屏顯函數
void init(); //數組結構體初始化函數
void xuanze(); //選擇操作數函數
void sys(char a); //根據操作數執行函數
void addf(); //增加數據的函數
void delf(); //刪除數據的函數
void inqf(); //查詢數據的函數

//////////////////////屏顯
void display()
{
cout<<" ==========Welcome to Student Manager System!=========="<<endl;
cout<<endl;
cout<<" A: Add new student"<<endl;
cout<<" D: Delete a student"<<endl;
cout<<" I: Inquiry a student"<<endl;
cout<<" Q: Quit"<<endl;
cout<<endl;
xuanze();
}

/////////////////////////////信息初始化
void init()
{
for(i=0;i<max;i++)
{
stu[i].name[10]='\0';
stu[i].sex='\0'; //初始化所有的sex為'\0'
stu[i].age=0;
}
}

////////////////////////操作選擇
void xuanze()
{
cout<<"input your choose:"<<endl;
cin>>a;
if(a=='A'||a=='D'||a=='I'||a=='Q')
sys(a); //選擇相應的操作數執行函數
else
{
cout<<"Error chooseing!"<<endl;
cout<<endl;
display();
}
}

/////////////////////相應操作數對應函數
void sys(char a)
{
switch(a)
{
case 'A':addf();
case 'D':delf();
case 'I':inqf();
case 'Q':exit(0); //退出
}
}

/////////////添加數據的函數
void addf()
{
int k=0,j,g;
for(i=0;i<max;i++)
{
if(stu[i].sex=='\0')k++;
}
cout<<"剩餘 "<<k<<" 個記錄可以添加!"<<endl; //輸出剩餘的可添加記錄數目
if(k!=0)
{
cout<<"請輸入你要添加的記錄的個數,但是記錄個數不能超過 "<<k<<endl;
cin>>j;
if(j>k)
{
cout<<"Error number!"<<endl;
cout<<endl; //顯示美觀需要
display();
}
else
{
for(i=0;i<j;i++)
{
for(int h=0;h<max;h++)
{
if(stu[h].sex=='\0') //判斷sex是否為'\0' 如果是則執行寫入操作
{
cout<<"input the NO"<<i+1<<" 's xuehao:"<<endl;
cin>>stu[h].xuehao;
///判斷數據非法與否
for(g=0;g<max;g++)
{
if((stu[g].xuehao==stu[h].xuehao)&&g!=h)
{
cout<<"Duplicate number!"<<endl;
cout<<endl;
display();
}
}/////////判斷學號是否相同
if(stu[h].xuehao<1||stu[h].xuehao>10000)
{
cout<<"Error number!"<<endl;
cout<<endl;
display();
}
cout<<"input the NO"<<i+1<<" 's name:"<<endl;
cin>>stu[h].name;
cout<<"input the NO"<<i+1<<" 's sex:('f' for female,'m' for male)"<<endl;
cin>>stu[h].sex;
///判斷數據非法與否
if(stu[h].sex!='f'&&stu[h].sex!='m')
{
stu[h].sex='\0'; //恢復sex的初始值,以便下次寫入產生遺漏
cout<<"Error sex!"<<endl;
cout<<endl;
display();
}
cout<<"input the NO"<<i+1<<" 's age:(1-100)"<<endl;
cin>>stu[h].age;
///判斷數據非法與否
if(stu[h].age<1||stu[h].age>100)
{
stu[h].sex='\0'; //恢復sex的初始值,以便下次寫入產生遺漏
cout<<"Error age!"<<endl;
cout<<endl;
display();
}
break; //跳出本層循環
}
}
}
display(); //返回
}
}
else
{
cout<<"No space to add new student!"<<endl;
cout<<endl;
display();
}
}

////////////////刪除數據的函數
void delf()
{
int d,s=0;
cout<<"Please input the number of the student you want to delete:"<<endl;
cin>>d;
if(d<1||d>10000)
{
cout<<"Error number!"<<endl;
cout<<endl;
display();
}
else
{
for(i=0;i<max;i++)
{
if(stu[i].xuehao==d)
{
s++; //是否實行刪除的標志位
stu[i].xuehao=-1;
stu[i].name[10]='\0';
stu[i].sex='\0';
stu[i].age=0;
cout<<"Delete successfully!"<<endl;
cout<<endl;
display();
}
}
if(s==0)
{
cout<<"Not exist!"<<endl;
cout<<endl;
display();
}
}

}

/////////////查詢數據的函數
void inqf()
{
int d,s=0;
cout<<"Please input the number of the student you want to inquiry(0 for all):"<<endl;
cin>>d;
cout<<endl;
if(d==0)
{
for(i=0;i<max;i++)
{
if(stu[i].sex!='\0')
cout<<stu[i].xuehao<<","<<stu[i].name<<","<<stu[i].sex<<","<<stu[i].age<<endl;
}
cout<<endl;
display();
}
else
{
if(d<1||d>10000)
{
cout<<"Error number!"<<endl;
cout<<endl;
display();
}
else
{
for(i=0;i<max;i++)
{
if(stu[i].xuehao==d)
{
s++; //是否存在該數字的標志
cout<<stu[i].xuehao<<","<<stu[i].name<<","<<stu[i].sex<<","<<stu[i].age<<endl;
display();
}
}
if(s==0)
{
cout<<"Not exist!"<<endl;
cout<<endl;
display();
}
}
}
}//ingf

//////////////主函數
void main()
{
init(); //初始化
display(); //屏顯(主界面)
}

⑹ 信管學c語言有前途嗎

還是有的,你在學校參加全國性的比賽時,很多時候用的編程語言都是C,,畢業設計時如果你學的好,也可以用這個啊

⑺ 信管專業考c語言還是考office

建議考office,以後工作了ppt word excel會經常用。
c語言是計算機專業課的基礎,僅僅是基礎,對飛此專業的人來說,用處不大。

⑻ c語言學生信息管理系統代碼

代碼如下:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
typedef struct examinee //考生信息結構
{ char examno[20]; //准考證號
char name[10]; //姓名
char sex[4]; //性別
short age; //年齡
char examtype[10]; //報考科目
}ElemType;

typedef struct Node //定義鏈表結點
{
ElemType data; //數據域
struct Node *next; //指針域
}Node,*List,*position;

List make_empty( List L ); //創建一個帶頭結點的空表
int is_empty( List L ); //測試鏈表是否是空表
int is_last( position p, List L ); //測試當前位置是否是表尾
position make_node( position p,int n ); //創建結點並輸入考生信息
void put_information( position p ); //是否輸出該考生信息
void put_name_information( List L ); //輸出姓名為xx的考生信息
int put_pos_information( position p ); //輸出該地址考生信息
void link_to_tail( List L, position p ); //將結點連接到表尾
int ciculation_make(); //循環創建考生信息
int judge_put_all(); //是否輸出所有考生信息
void put_all(List L); //輸出所有考生信息。
position find( List L ); //查找第一個姓名為xx的元素並返回位置
position find_previous( List L ); //查找第一個姓名為xx的元素並返回該元素直接前驅的位置
//int judge_delete_val(); //詢問是否刪除考生數據
int delete_val( List L ); //刪除指定考生信息並輸出其信息
void menu(List L); //菜單函數
List L;
//position p;

int
main( void )
{
List L = NULL; //定義頭結點指針
position p = NULL; //定義表工作指針
L = make_empty( L ); //創建空表
printf(" ★★考生報名管理程序★★ ---------------------------------------- ");
menu(L);
return 0;
}

//創建一個帶頭結點的空表
List
make_empty( List L)
{
L = ( List ) malloc (sizeof( Node ));
if(NULL == L)
{
printf("內存分配失敗");
exit( 1 );
}
L->next = NULL;
//printf("空表創建成功。 ");
return L;
}

//創建結點並輸入考生信息
position
make_node( position p ,int n)
{
if(n) //n為1是創建結點並輸入,n為0是修改
{
p = ( position ) malloc ( sizeof ( Node ));
p->next = NULL ;
}
printf("請輸入考生准考證號:");
gets(p->data.examno);
printf("請輸入考生姓名:");
gets(p->data.name);
do
{
printf("請輸入考生性別,只能輸入「男」或者「女」:");
gets(p->data.sex);
}
while( 0 != strcmp( p->data.sex, "男" ) && 0 != strcmp( p->data.sex, "女" )); //判斷性別是否有誤
printf("請輸入考生年齡:");
scanf("%hd",&p->data.age);
getchar(); //如果把這句刪掉,就「無法執行」下面的報考類別
/*下面的do while用來判斷報考類別是否輸入有誤*/
do
{
printf("請輸入報考類別,只能輸入「數學」或「英語」或者「數據結構」:");
gets(p->data.examtype);
}
while( 0 != strcmp( "英語", p->data.examtype ) && 0 != strcmp( "數學", p->data.examtype ) && 0 != strcmp( "數據結構", p->data.examtype ));
if(n)
{
printf("報名成功 ");
}
else
{
printf("修改成功 ");
}
return p;
}

//前插法;
void
link_to_tail( List L, position p)
{
p->next = L->next;
L->next = p;
}

//查找第一個姓名為xx的元素並返回位置
position
find( List L )
{
position p = L->next;
char name[10];
printf("請輸入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p->data.name , name))
{
p=p->next;
}
return p;
}

//測試鏈表是否是空表
int
is_empty( List L )
{
return L->next == NULL;
}

//測試當前位置是否是表尾
int
is_last( position p, List L )
{
return p->next == NULL;
}

//輸出姓名為xx的考生信息
void
put_name_information( List L )
{
position p = find(L);
if(p!=NULL)
{
printf("您要查找的考生信息: ");
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
else
{
printf("沒有您要找的學生。 ");
}

}

//循環創建考生信息
int
ciculation_make()
{
int n = 2;
do
{
printf("是否繼續創建考生信息?是請輸入「1」,不是請輸入「0」:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//是否輸出考生信息
void
put_information( position p )
{
int n=2;
do
{
printf("是否輸出該考生信息?是請輸入「1」,不是請輸入「0」:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
if(n)
{
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
}


//是否輸出所有考生信息
int
judge_put_all()
{
int n = 2;
do
{
printf("是否輸出所有考生信息?是請輸入「1」,不是請輸入「0」:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//輸出所有考生信息
void
put_all(List L)
{
if(L->next == NULL)
{
printf("現無考生報名! ");
}
else
{
position p=L->next;
while( p != NULL )
{
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
p=p->next;
}
}
//getchar();

}

//詢問是否刪除考生數據
int
judge_delete_val()
{
int n = 2;

do
{
printf("是否要刪除某個考生數據?是請輸入「1」,不是輸入「0」:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//查找第一個姓名為xx的元素並返回其直接前驅的位置
position
find_previous( List L )
{
position q = L;
position p = L->next;
char name[10];
printf("請輸入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p->data.name , name))
{
q=p;
p=p->next;
}
if( p != NULL )
{
return q;
}
else
return p;
}

//刪除指定考生信息並輸出其信息
int
delete_val(List L)
{
int n=2;
position q=NULL;
position p=find_previous( L ); //返回考生信息地址
if( NULL == p )
{
printf("你要刪除的考生不存在 ");
return 0;
}
else
{
q = p->next;
p->next = q->next;
printf("刪除成功。 刪除的考生信息為: ");
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",q->data.examno,q->data.name,q->data.sex,q->data.age,q->data.examtype);
free(q);
return 1;
}

}

//輸出該地址考試信息
int
put_pos_information( position p )
{
if(p != NULL )
{
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
return 1;
}
else
{
printf("沒有您要查找的學生。");
return 0;
}
}
//菜單函數
void
menu(List L)
{
printf(" a. 考生報名入口 ");
printf(" b. 查詢考生信息 ");
printf(" c. 修改考生信息 ");
printf(" d. 刪除考生信息 ");
printf(" e. 全部考生信息 ");
printf(" f. 程序作者信息 ");
printf(" g. 退出程序 ");
char n='h';

while(n != 'g')
{
do //確定正確輸入
{
printf("請通過字母序號選擇功能:");
n = getchar();
getchar();
putchar(' ');
if( n < 'a' || n > 'g')
{
printf("錯誤的字母序號。 ");
}
}
while( n < 'a' || n > 'g' );
switch (n)
{
case 'a':
{
printf("請輸入報名考生信息: ");
position p = make_node( p, 1 ); //創建新結點
link_to_tail( L, p ); //將新結點連接到表上
put_information( p ); //是否輸出該考生信息
putchar(' ');
}
break;

case 'b':
{
put_name_information( L );
putchar(' ');
}
break;

case 'c':
{
int n=0;
position p = NULL;
printf("您正在進行修改操作。 ");
p = find(L);
n = put_pos_information( p );
if(n)
{
make_node( p , 0 );
put_information( p ); //是否輸出該考生信息
}
putchar(' ');
}
break;

case 'd':
{
printf("您正在進行刪除操作。 ");
delete_val( L );
putchar(' ');
}
break;

case 'e':
{
put_all( L );
putchar(' ');
}
break;

case 'f':
{
printf(" 修改日期 版本號 修改人 修改內容 ");
printf(" -------------------------------------------------------- ");
printf(" 2018.6.19 v2.0 陳百川 增加主菜單 ");
printf(" 2018.6.23 v3.0 陳百川 增加生成文件功能 ");
printf(" 該版本號為v2.0 ");
putchar(' ');
}
break;

default:
break;
}
}
printf(" 感謝本次使用,祝您生活愉快。");
getch();
}

(8)c語言信管擴展閱讀:

C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。[1]目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。

C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。

其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

參考資料:

網路——C語言

⑼ c語言編寫學生信息管理系統

稍微用了點c++(你給的分太低)
如下圖所示:
studf.txt
操作日誌文件:

⑽ 用C語言編寫學生信息管理程序(給出五個主要函數就OK啦!)

/*接上一樓*/
struct
Student
*create()
/*create函數定義,此函數實現創建單向動態鏈表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head,鏈表的頭指針;*p1,*p2,中間指針變數*/
puts("\n現在請輸入學院名:");
scanf("%s",college);
puts("\n年級:");
scanf("%s",grade);
puts("\n專業和班級:");
scanf("%s",classname);
puts("\n下面請按提示依次輸入數據:\n(如果要結束輸入,請輸入學號0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("輸入第一個學生的學號:");
scanf("%ld",&p1->num);
puts("輸入此學生成績:\n英語:");
scanf("%f",&p1->score.english);
puts("數學:");
scanf("%f",&p1->score.math);
puts("計算機:");
scanf("%f",&p1->score.computer);
total_and_aver(p1);/*計算總分和平均分*/
p1->grade=mark_grade(p1);
for(;p1->num!=0;)
{
len++;
if(len==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct
Student
*)malloc(LEN);
puts("輸入下一個學生的學號:");
scanf("%ld",&p1->num);
puts("輸入此學生成績:\n英語:");
scanf("%f",&p1->score.english);
puts("數學:");
scanf("%f",&p1->score.math);
puts("計算機:");
scanf("%f",&p1->score.computer);
total_and_aver(p1);/*計算總分和平均分*/
p1->grade=mark_grade(p1);
}
p2->next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函數定義,此函數實現從現有鏈表中刪除一個結點*/
{
struct
Student
*p1,*p2;
if(head==NULL)
puts("空表,沒有任何數據記錄。\n");
else
{
for(p1=head;!(del_num==p1->num||p1->next==NULL);p2=p1,p1=p1->next);
if(del_num==p1->num)
{
if(p1==head)head=p1->next;
else
p2->next=p1->next;
printf("學號為%ld學生的數據刪除成功。\n",del_num);
--len;
}
else
printf("未找到學號為%ld學生的記錄。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函數定義,此函數實現向現有鏈表中插入一個結點或覆蓋相同學號的數據*/
{
struct
Student
*p0=new_student,*p1=head,*p2;
char
control;
if(head==NULL)
{
head=p0;
p0->next=NULL;
puts("數據插入成功。\n");
}
else
{
for(;((*p0).num>(*p1).num)&&(p1->next!=NULL);p2=p1,p1=p1->next);
if((*p0).num==(*p1).num)
{
printf("已經存在一個學號為%ld的學生的數據,要覆蓋原有數據嗎?\n輸入
Y
=覆蓋原有數據\n輸入其它=保留原有數據\n",p0->num);
FFLUSH;
scanf("%c",&control);
FFLUSH;
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0;p0->next=p1->next;}
else
{p2->next=p0;p0->next=p1->next;}
puts("數據已經更新\n");break;
default:break;
}
len--;
}
else
if((*p0).num<(*p1).num)
{
if(p1==head)head=p0;
else
p2->next=p0;
p0->next=p1;
puts("數據插入成功。\n");
}
else
{
p1->next=p0;
p0->next=NULL;
puts("數據插入成功。\n");
}
}
++len;
return
(head);
}
struct
Student
*sort(struct
Student
*head)
/*sort函數定義,此函數實現對鏈表中的數據按照平均分高低排序*/
{
struct
Student
*p1,*p2;
for(p1=head;p1->next!=NULL;p1=p1->next)
for(p2=p1->next;p2!=NULL;p2=p2->next)
{
if(p1->score.average<p2->score.average)
{
SWAP(p1->num,p2->num);
SWAP(p1->grade,p2->grade);
SWAP(p1->score.english,p2->score.english);
SWAP(p1->score.math,p2->score.math);
SWAP(p1->score.computer,p2->score.computer);
SWAP(p1->score.total,p2->score.total);
SWAP(p1->score.average,p2->score.average);
}
}
return
head;
}
/*接下一樓*/

熱點內容
成都php招聘 發布:2025-01-15 13:12:16 瀏覽:380
怎麼調用伺服器資料庫 發布:2025-01-15 13:06:25 瀏覽:656
人人網設置訪問許可權 發布:2025-01-15 13:02:06 瀏覽:563
崩壞學園2腳本 發布:2025-01-15 12:58:43 瀏覽:459
我的世界伺服器等級如何升 發布:2025-01-15 12:45:55 瀏覽:689
c語言程序填空題 發布:2025-01-15 12:45:53 瀏覽:545
怎麼配置氯化鈉濃度 發布:2025-01-15 12:34:06 瀏覽:206
4000除以125簡便演算法 發布:2025-01-15 12:27:41 瀏覽:464
源碼商用 發布:2025-01-15 12:26:54 瀏覽:75
價錢演算法 發布:2025-01-15 12:26:03 瀏覽:401