『壹』 用c語言設計一個學生信息查詢系統程序
1、首先創建一個c語言項目。然後右鍵頭文件,創建一個Stu的頭文件。
『貳』 用C語言創建學生信息處理系統,要求如下
你這來可以用基本的鏈表來創建。
鏈表就是結構體用指針連接起來。
學生的信息可以定義成結構類型。
每個學生就是一個結構體的變數。
每個結構體都有一個指針成員next指向下一個學生的結構體變數。
這樣就構成了鏈表。對鏈表的增刪就是對這個鏈表指針操作,並釋放刪除節點空間。
具體鏈表代碼,在我回答記錄里,我已經回答過很多次。各種都有,你需要去我回答記錄找吧。
『叄』 c語言!!!程序設計:建立一個學生信息鏈表,包括學號,姓名,成績.(實現添加,刪除,查詢,排序,平均)
代碼如下:
/*用c語言鏈表編寫一個學生信息系統程序,要求輸出學生的學號,姓名,性別,學號,姓名,成績(實現添加,刪除,查詢,排序,平均)*/
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
const int n=5;
/*
* nodeEntry : 節點數據類型
* nodeADT : 節點結構
* linkADT : 鏈表結構
*/
typedef struct Student
{
int num;
char name[30];
char sex;
float score1;//語文
float score2;//數學
float score3;//英語
//struct Student *next;
}Student;
typedef struct linkCDT {
nodeADT head;
}*linkADT;
/*
* InitLink : 初始化鏈表
* CreateNode : 創建節點
* AppendLink : 添加數據
*/
nodeADT CreateNode(Student entry) {
nodeADT p=(nodeADT)malloc(sizeof*p);
p->entry=entry,p->next=0;
return p;
}
/*
SortLink : 排序鏈表
//按學號排序
void SortLinkID(linkADT link) {
nodeADT pHead,pRear,p,tp;
if (!link) return;
for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {
for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)
if (pHead->entry.num>=p->entry.num)
tp->next=p->next,p->next=pHead,pHead=p,p=tp;
if (!pRear) link->head=pHead;
else pRear->next=pHead;
pRear=pHead;
}
//按英語成績排序
void SortLinkEnglish(linkADT link) {
nodeADT pHead,pRear,p,tp;
if (!link) return;
for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {
for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)
if (pHead->entry.score3>=p->entry.score3)
tp->next=p->next,p->next=pHead,pHead=p,p=tp;
if (!pRear) link->head=pHead;
else pRear->next=pHead;
pRear=pHead;
}
}
//按姓名的字典序進行排序
void SortLinkName(linkADT link) {
nodeADT pHead,pRear,p,tp;
if (!link) return;
for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {
for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)
if (pHead->entry.name[0]>=p->entry.name[0])
tp->next=p->next,p->next=pHead,pHead=p,p=tp;
if (!pRear) link->head=pHead;
else pRear->next=pHead;
pRear=pHead;
}
}
//按姓名的長度進行排序
void SortLinkNameLength(linkADT link) {
nodeADT pHead,pRear,p,tp;
if (!link) return;
for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {
for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)
if (strlen(pHead->entry.name)>=strlen(p->entry.name))
tp->next=p->next,p->next=pHead,pHead=p,p=tp;
if (!pRear) link->head=pHead;
else pRear->next=pHead;
pRear=pHead;
}
循環鏈表是與單鏈表一樣
是一種鏈式的存儲結構,所不同的是,循環鏈表的最後一個結點的指針是指向該循環鏈表的第一個結點或者表頭結點,從而構成一個環形的鏈。
循環鏈表的運算與單鏈表的運算基本一致。所不同的有以下幾點:
1、在建立一個循環鏈表時,必須使其最後一個結點的指針指向表頭結點,而不是象單鏈表那樣置為NULL。此種情況還使用於在最後一個結點後插入一個新的結點。
2、在判斷是否到表尾時,是判斷該結點鏈域的值是否是表頭結點,當鏈域值等於表頭指針時,說明已到表尾。而非象單鏈表那樣判斷鏈域值是否為NULL。
以上內容參考:網路-鏈表
『肆』 關於創建一個學生信息表的C語言問題
#include <stdio.h>
#include <windows.h>
#include <malloc.h>
#include <string.h>
#define N 3
typedef struct node
{
char name[20];
//################################################################
int score;
//################################################################
struct node *link;
}stud;
stud * creat(int n)
{
stud *p,*h,*s;
int i;
if((h=(stud *)malloc(sizeof(stud)))==NULL)
{
printf("不能分配內存空間!");
exit(0);
}
h->name[0]='\0';
h->link=NULL;
p=h;
for(i=0;i<n;i++)
{
if((s= (stud *) malloc(sizeof(stud)))==NULL)
{
printf("不能分配內存空間!");
exit(0);
}
p->link=s;
printf("請輸入第%d個人的姓名",i+1);
scanf("%s",s->name);
//################################################################
printf("請輸入第%d個人的分數",i+1);
scanf("%d",&s->score);
//################################################################
s->link=NULL;
p=s;
}
return(h);
}
void main()
{
stud *head,*searchpoint,*forepoint;
char fullname[20];
head=creat(N);
getchar();
}
我試了一下沒有什麼錯誤了,就是在在s->score前加了一個地址符,s->name前沒有地址符是因為name是一個數組,其本身就是一個地址。
『伍』 建立一個學生信息系統C語言編程
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
intbExit=0;
inttotal=0;
#defineCreate(the_one)the_one=(Stu*)malloc(sizeof(Stu))
typedef
structStudent
{
charcnum[20]; //字元串學號
intinum; //數字學號
charname[20]; //姓名
floatscore; //成績
structStudent*next;
}Stu;
Stu*the_one,*h,*pr,*last,*end;//1.添加學生函數
voidADD()
{
intFour=0;
printf("================================
");
Create(the_one);
the_one->next=NULL;
end=last;//end指向倒數第二個結點
last->next=the_one;//將the_one放在鏈表的最後
last=the_one;//last指向倒數第一個結點
//輸入學號
printf("輸入學生信息:
學號:");
while(!Four)
{
gets(the_one->cnum);
if(strlen(the_one->cnum)!=4)
printf("輸入非法:學號必須是4位,請重新輸入!
學號:");
else
Four=1;
}
the_one->inum=atoi(the_one->cnum); //int型學號
//輸入姓名
printf("學生姓名:");
gets(the_one->name);
//輸入成績
printf("學生成績:");
scanf("%f",&the_one->score);
getchar();//接收回車
//總數+1
total++;
//排序
//pr從空head開始,last指向下一個(前趨pr,後趨last)
for(pr=h,last=pr->next;last->next;pr=pr->next,last=pr->next)
{
if(last->inum>the_one->inum)
{
//插入元素the_one
the_one->next=last;
pr->next=the_one;
last=end;//插入完成,將last移到最後。
end->next=NULL;//最後結點指針域置空,last->next為NULL,跳出循環
break;
}
}
printf("================================
");
}
//2.查詢學生函數
voidCHECK()
{
Stu*target,*p;
intfond=0;
printf("================================
");
printf("輸入要查找學生的學號:
學號:");
Create(target);
gets(target->cnum);
for(p=h->next;p;p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息:姓名(%s),分數(%.2f)
",p->cnum,p->name,p->score);
free(target);
fond=1;
}
}
if(!fond)
printf("WrongStudentNO.!
");
printf("================================
");
}
//3.編輯學生
voidEDIT()
{
Stu*target,*p;
intfond=0;
printf("================================
");
printf("輸入要編輯學生的學號:
學號:");
Create(target);
gets(target->cnum);
for(p=h->next;p;p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息:姓名(%s),分數(%.2f)
",p->cnum,p->name,p->score);
printf("請選擇修改項目:
1:姓名
2:分數
");
charc;
c=getch();
switch(c)
{
case'1':
printf("輸入正確的姓名:");
gets(p->name);
break;
case'2':
printf("輸入最新成績:");
scanf("%f",&p->score);
break;
}
printf("學號為%s的學生最新信息:姓名(%s),分數(%.2f)
",p->cnum,p->name,p->score);
free(target);
fond=1;
}
}
if(!fond)
printf("NotExitThisNO.!
");
printf("================================
");
}
//4.刪除學生
voidDELETE1()
{
voidPRINALL();
PRINALL();
Stu*target,*p,*pr;
intfond=0;
printf("================================
");
printf("輸入要刪除學生的學號:(如果刪除所有學生信息,請輸入0000)
學號:");
Create(target);
gets(target->cnum);
target->inum=atoi(target->cnum);
// char*zero=&"0000";
if(!strcmp(target->cnum,"0000"))
{
h->next=NULL;
total=0;
}
else
{
for(pr=h,p=h->next;p;pr=pr->next,p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息已刪除
",p->cnum);
free(target);
pr->next=p->next;
p->next=NULL;
// free(p);此句報錯
fond=1;
total--;
}
}
if(!fond)
printf("沒有找到學號為%s的學生,請確認學號輸入是否正確
");
}
printf("================================
");
}
//5.列印全部
voidPRINALL()
{
intamounts=1;
Stu*Op;
printf("================================
");
printf("所有學生信息:
");
for(Op=h->next;Op;Op=Op->next)
printf("%d.%s,%s,%.2f
",amounts++,Op->cnum,Op->name,Op->score);
printf("================================
");
}
//6.總人數
voidTOTAL()
{
printf("================================
");
printf("學生總人數:%d
",total);
printf("================================
");
}
//菜單函數
voidMenu()
{
charorder;
printf("================================
");
printf("|1.添加學生.|
");
printf("|2.查詢學生.|
");
printf("|3.編輯學生.|
");
printf("|4.刪除學生.|
");
printf("|5.列印全部.|
");
printf("|6.總人數.|
");
printf("|7.退出.|
");
printf("================================
");
order=getch();
system("cls");
switch(order)
{
case'1':
ADD();
break;
case'2':
CHECK();
break;
case'3':
EDIT();
break;
case'4':
DELETE1();
break;
case'5':
PRINALL();
break;
case'6':
TOTAL();
break;
case'7':
bExit=1;
break;
}
while(!bExit)
{
getch();
system("cls");
Menu();
}
}
voidmain()
{
//創建鏈表頭
Create(h);
pr=last=end=the_one=h;
the_one->next=NULL; Menu();
}
『陸』 如何用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("