c語言信息錄入
❶ c語言中除了使用結構體錄入信息外,還有其他方法
可以使用配對的數組。
結構體就是用來表示一個東西具有多個屬性,用結構體就非常方便。
當然也可以把結構體每個成員拆分,如果有多個就是為每個成員定義一個數組。然後幾個成員數組配對使用就是。
❷ 怎麼樣用 C語言 做出 顯示輸入信息和錄入信息
兩種情況:
第一種:如果你是想從寫好的文件中讀數據的話,那麼使用這種方法
FILE *f1;
if((f1=fopen("read.txt","r")==NULL)
{
cout<<"打開文件錯誤!"<<endl;
exit(0);
}
char ch=fgetc(f1);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(f1);
}
fclose(f1);
第二種:如果你是想在程序中動態的輸入數據,並寫入到文件中,然後從文件中顯示出來的話。方法為:
char *s;
char s1[256];
cout<<"請輸入一個字元串:"<<endl;
cin>>s;
FILE *f1;
if((f1=fopen("write.txt","w+")==NULL)
{
cout<<"打開文件錯誤!"<<endl;
exit(0);
}
int length=strlen(s);
fputs(s,f1);//將字元串中的字元寫到文件中去。
while(fgets(s1,length+1,f1)!=NULL)
{cout<<s1;}
cout<<endl;
fclose(f1);
最後,希望對你有所幫助啊!
❸ 學生信息錄入模塊C語言
/*主程序功能模塊—-文件名:student.c*/
#define MAX_BAR 4 /*最大菜單數,可以自定*/
#include"io.h"
#include"dos.h"
#include"fcntl.h"
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
#include"graphics.h"
#include"chi_asc.c" /*調用圖形模式下漢字、字元共顯功能*/
#include"public.c" /*按鍵定義功能*/
#include"mypcx.c" /*封面圖象調用功能,此處為pcx圖象*/
#include"stu_frame.c" /*框架繪制功能*/
#include"stu_sub.c" /*各子菜單功能*/
main()
{
/*old_bar、curr_bar表示上次選中的菜單、當前選中的菜單*/
/*old_sonbar curr_sonbar表示上次選中的子菜單、當前選中的子菜單*/
int i,key,key_son,old_bar,curr_bar,curr_sonbar,old_sonbar,size;
int save_startx,save_starty,save_endx,save_endy,sonbar_out=0;
void *buf;
int Driver,Mode;
char *pcx;
struct student_bar{
int start_x,start_y; /*起始橫坐標,起始縱坐標*/
int length_x,length_y; /*菜單的長,菜單的寬*/
int num_son; /*包含子菜單的個數*/
char *p_father; /*菜單項名,*p_son[5]為子菜單名*/
char *p_son[5];}stu_bar[MAX_BAR]={
{10,45,120,25,4,"File Operation",{" Open file"," New file"," Save file","Exit system"}},
{130,45,120,25,3,"Data Edition",{" Add object","Delete object","Modify object"}},
{250,45,120,25,0,"File Print",{""}},
{370,45,120,25,0,"Help Message",{""}}
};/*定義各功能菜單的結構體*/
pcx="stusys4.pcx";
Set_Video_Mode(VGA256); /*轉換屏幕到320*200*256色*/
PCX_Load_Screen(pcx,1); /*讀取封面圖象stusys4.pcx*/
Driver=DETECT,Mode=0;
initgraph(&Driver,&Mode,""); /*設置圖象模式*/
cleardevice();
main_frame(BLUE,LIGHTGRAY); /*繪制主框架圖,底色為藍色*/
/*繪制菜單*/
for(i=0;i<MAX_BAR;i++)
{
setcolor(BLUE);
rectangle(stu_bar[i].start_x, stu_bar[i].start_y, stu_bar[i].start_x+stu_bar[i].length_x, stu_bar[i].start_y+stu_bar[i].length_y);
puthz16(stu_bar[i].start_x+8,stu_bar[i].start_y+5,-8,BLUE,stu_bar[i].p_father);
}puthz16(stu_bar[0].start_x+8,stu_bar[0].start_y+5,-8,WHITE,stu_bar[0].p_father);
old_bar=0;curr_bar=0;
/*讀取按鍵字元,如為ESC則退出*/
while((key=specialkey())!=ESC){
old_bar=curr_bar;
if(sonbar_out==1)sonbar_out=0;
if(key==LEFT){
if(curr_bar==0)curr_bar=3;
else curr_bar=curr_bar-1;
}/*LEFT finished*/
if(key==RIGHT){
if(curr_bar==3)curr_bar=0;
else curr_bar=curr_bar+1;
}/*RIGHT finished*/
/*如按鍵為ENTER,則繪制子菜單*/
if(key==ENTER){
save_startx=stu_bar[curr_bar].start_x;
save_starty=stu_bar[curr_bar].start_y+stu_bar[curr_bar].length_y+1;
save_endx=stu_bar[curr_bar].start_x+stu_bar[curr_bar].length_x;
/*保存子菜單展開後掩蓋住的圖象*/ save_endy=stu_bar[curr_bar].start_y+stu_bar[curr_bar].length_y+stu_bar[curr_bar].num_son*stu_bar[curr_bar].length_y+1;
size=imagesize(save_startx,save_starty,save_endx,save_endy);
if(size!=-1)
{
buf=malloc(size);
if(buf)getimage(save_startx,save_starty,save_endx,save_endy,buf);
else {printf("OUT MEMORY");exit(0);}
}
setviewport(save_startx,save_starty,save_endx,save_endy,1);
setcolor(WHITE);
clearviewport();
for(i=1;i<=stu_bar[curr_bar].num_son;i++)
{
rectangle(0,0,stu_bar[curr_bar].length_x,i*stu_bar[curr_bar].length_y);
setfillstyle(SOLID_FILL,LIGHTGRAY);
floodfill(stu_bar[curr_bar].length_x-1,i*stu_bar[curr_bar].length_y-1,WHITE);
}
for(i=0;i<stu_bar[curr_bar].num_son;i++)
puthz16(8,i*stu_bar[curr_bar].length_y+5,-8,BLUE,stu_bar[curr_bar].p_son[i]);
puthz16(8,5,-8,WHITE,stu_bar[curr_bar].p_son[0]);
old_sonbar=0;curr_sonbar=0;
if(stu_bar[curr_bar].num_son)
while(((key_son=specialkey())!=ESC)&&sonbar_out==0){
old_sonbar=curr_sonbar;
if(key_son==UP){
if(curr_sonbar==0) curr_sonbar=stu_bar[curr_bar].num_son-1;
else curr_sonbar=curr_sonbar-1;
}
if(key_son==DOWN){
if(curr_sonbar==(stu_bar[curr_bar].num_son-1)) curr_sonbar=0;
else curr_sonbar=curr_sonbar+1;
}
puthz16(8,old_sonbar*stu_bar[curr_bar].length_y+5,-8,BLUE,stu_bar[curr_bar].p_son[old_sonbar]);
puthz16(8,curr_sonbar*stu_bar[curr_bar].length_y+5,-8,WHITE,stu_bar[curr_bar].p_son[curr_sonbar]);
if(key_son==ENTER){
setviewport(0,0,639,479,1);
putimage(save_startx,save_starty,buf,COPY_PUT);
free(buf);
sonbar_out=1;
if(curr_bar==0)
switch(curr_sonbar){
case 0:
fil_open(); /*調用stu_sub.c文件中fil_open()函數,打開文件*/
break;
case 1:
fil_new(); /*調用stu_sub.c文件中fil_new()函數,新建文件*/
break;
case 2:
fil_save(); /*調用stu_sub.c文件中fil_save()函數,保存文件*/
break;
case 3:
sys_exit(); /*調用stu_sub.c文件中sys_exit()函數,退出系統*/
}
if(curr_bar==1)
switch(curr_sonbar){
case 0:
dat_add(); /*調用stu_sub.c文件中dat_add()函數,添加記錄*/
break;
case 1:
dat_dele(); /*調用stu_sub.c文件中dat_dele()函數,刪除記錄*/
break;
case 2:
dat_mod(); /*調用stu_sub.c文件中dat_mod()函數,修改記錄*/
break;
}
} /*key_son=ENTER finished*/
}/*key_son all finished*/
if(sonbar_out==0){
setviewport(0,0,639,479,1);
putimage(save_startx,save_starty,buf,COPY_PUT);
free(buf); /*還原子菜單掩蓋住的圖象,並釋放子菜單所佔用的內存*/
}
/*如果子菜單項為0*/
if(!stu_bar[curr_bar].num_son){
if(curr_bar==2)
fil_prn(); /*調用stu_sub.c文件中fil_prn()函數,列印文件*/
if(curr_bar==3)
hel_mess(); /*調用stu_sub.c文件中hel_mess()函數,顯示幫助信息*/
}
} /*ENTER finished*/
puthz16(stu_bar[old_bar].start_x+8,stu_bar[old_bar].start_y+5,-8,BLUE,stu_bar[old_bar].p_father);
puthz16(stu_bar[curr_bar].start_x+8,stu_bar[curr_bar].start_y+5,-8,WHITE,stu_bar[curr_bar].p_father);
}/*key all finished*/
fcloseall(); /*關閉所有文件*/
closegraph(); /*關閉圖形狀態*/
}
自己改改!!!
希望能解決您的問題。
❹ 求用C語言怎麼實現學生信息錄入功能
* 1。根據學生信息定義一個結構體類型,再說明一個該結構體類型的數組。*/
struct stu_info{
char stuNo[10];/* No */
char stuName[30];/* Name */
float stuScore[3];/* the three scores */
float aveScore; /* average score */
float totalScore; /* total score */
}stu[10];
/* 2。用input函數從鍵盤上輸入10個學生的數據。 */
void input()
{ int i = 0;
printf("Input the students' infomation(FORMAT LIKE:No Name score1 score2 score3):\n");
while(i < 10)
{ printf("Input %d:",i + 1);
scanf("%s%s%f%f%f",stu[i].stuNo,stu[i].stuName,&stu[i].stuScore[0],&stu[i].stuScore[1],&stu[i].stuScore[2]);
i++;
}
}
❺ C語言輸入學生信息
scanf裡面的空格與/去掉
❻ C語言在鍵盤上輸入三個學生的信息(包含學號,姓名,三門課的成績)並在顯示器上輸
id, name, &m1
id, name, m1
voidprintScore(intscore[4][3])
{inti,j;for(i=0;i<4;i++)
{printf("學生%d的三門成績分別為:
",i+1);for(j=0;j<3;j++)
{printf("%d ",score<i>[j]);
if(j==2)printf(" ");}}printf(" ");}
printf()函數是格式化輸出函數,一般用於向標准輸出設備按規定格式輸出信息。格式輸出,它是c語言中產生格式化輸出的函數(在stdio.h中定義)。
函數介紹
printf()函數是格式化輸出函數,一般用於向標准輸出設備按規定格式輸出信息。在編寫程序時經常會用到此函數。函數的原型為:intprintf(constchar*format);
函數返回值為整型。若成功則返回輸出的字元數,輸出出錯則返回負值。
printf()函數的調用格式為:printf("<格式化字元串>",<參量表>);其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。
以上內容參考:網路-printf()
❼ c語言錄入10個學生信息,包括學號姓名,5門課成績,並要求錄入學生各科成績,總分,最高最低分,前五名
#include <stdio.h>
#include <math.h>
typedef struct student{
char num[10];
char name[5];
int score1[50],score2[50],score3[50],score4[50],score5[50];
int sum[10];
struct student *p;
}N;
N *ks(){
N *head,*next,*end,sum[10];
head=(N*)malloc(sizeof(N));
next=head;
for(int i=0;i<10;i++){
printf("請第%d次輸入學號,性別,名字,5科成績\n",i+1);
end=(N*)malloc(sizeof(N));
scanf("%s%s%d%d%d%d%d",&end->num,&end->name,&end->score1,&end->score2,&end->score3,&end->score4,&end->score5);
next->p=end;
next=end;
}
end->p=NULL;
return head;
}
void bl(N *head){
int S[10],F[100],f[100],K[20];
int V1[20],V2[20],V3[20],V4[20],V5[20];
N *end=head->p;
int i=0;
char N[10];
float v1,v2,v3,v4,v5;
while(end){
if(i==0)printf("總分前5學%s的score1分數是%dscore2分數是%d\nscore3分數是%dscore4分數是%dscore5分數是%d",end->num,*end->score1,*end->score2,*end->score3,*end->score4,*end->score5);
if(i==2)printf("總分前5學號%s的score1分數是%dscore2分數是%d\nscore3分數是%dscore4分數是%dscore5分數是%d",end->num,*end->score1,*end->score2,*end->score3,*end->score4,*end->score5);
❽ c語言錄入文件信息時如何確定某一學號的人已存在
思路:
1、用變數接收輸入。
2、讀取文件內容到內存中(比如用鏈表保存)。
3、循環遍歷內存數據,對比輸入的值,存在相同則表示已存在。
下面代碼是我寫得演示:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <windows.h>
#define P "C:\1.txt"
typedef struct stu_info
{
int sNum;// 學號
char name[20];//姓名
struct stu_info *next;
}SINFO;
int insert2File(char path[]);// 向文件末尾插入一條學生信息
SINFO * selectALLFILE(char path[]);//只讀模式打開文本,獲取信息, 返回信息鏈表頭節點(該函數單獨調用的話,記得調用freeSINFOS釋放內存)
int checkSN(SINFO sinfo,char path[]);//檢查路徑下文件中,學號是否存在,存在返回1,否則返回0
int freeSINFOS(SINFO *sHead);//釋放鏈表內存
void showSINFOS(SINFO *sHead);//列印鏈表信息
int main()
{
SINFO *sHead=NULL;
while(1)
{
sHead=selectALLFILE(P);
showSINFOS(sHead);
insert2File(P);
free(sHead);
sHead=NULL;
printf("按任意鍵繼續錄入。。。 "),getchar();
system("cls");
}
return 0;
}
void showSINFOS(SINFO *sHead)
{
printf("當前從文件載入到內存中的信息為: ");
if(sHead && sHead->next)
while(sHead->next)
{
printf("學號:%d 姓名:%s ",sHead->next->sNum,sHead->next->name);
sHead=sHead->next;
}
}
int insert2File(char path[])
{
SINFO sinfo;
FILE *fp=NULL;
if(!(fp=fopen(path,"at+")))return 0;
printf("請輸入要插入的學生信息: ");
printf(" 學號:"),scanf("%d",&sinfo.sNum);
printf(" 姓名:"),scanf("%s",sinfo.name),getchar();
if(checkSN(sinfo,path))
{
printf("當前學號已存在!新增失敗! ");
return 0;
}
fprintf(fp,"%d %s ",sinfo.sNum,sinfo.name);
fclose(fp);
printf("新增信息插入成功! ");
return 1;
}
SINFO *selectALLFILE(char path[])//查詢文件
{
SINFO *sHead=NULL,*sTail=NULL,*sNew=NULL,sTemp;
FILE *fp=NULL;
if(!(fp=fopen(path,"rt"))) return NULL;
fseek(fp,0,SEEK_SET);
sHead=(SINFO *)malloc(sizeof(SINFO));
if(!sHead)return NULL;
sHead->next=NULL;
while(fscanf(fp,"%d %s ",&sTemp.sNum,sTemp.name)!=-1)
{
sNew=(SINFO *)malloc(sizeof(SINFO));
if(!sNew)return NULL;
sNew->next=NULL;
sNew->sNum=sTemp.sNum;
sprintf(sNew->name,"%s",sTemp.name);
if(!sHead->next)
sHead->next=sNew;
else
sTail->next=sNew;
sTail=sNew;
}
fclose(fp);
return sHead;
}
int checkSN(SINFO sinfo,char path[])//檢查學號是否存在,存在返回1,否則返回0
{
SINFO *sHead=NULL;
sHead=selectALLFILE(path);
if(!sHead) return 0;
if(!sHead->next) {freeSINFOS(sHead);return 0;}
while(sHead->next)
{
if(sinfo.sNum==sHead->next->sNum) return 1;
sHead=sHead->next;
}
freeSINFOS(sHead);
return 0;
}
int freeSINFOS(SINFO *sHead)
{
SINFO *sTemp=NULL;
if(!sHead)return 1;
while(sHead->next)
{
sTemp=sHead->next->next;
free(sHead->next);
sHead->next=sTemp;
}
free(sHead);
return 1;
}