编写一个c语言程序,实现录入学生学号和姓名信息的功能

编写一个c语言程序,实现录入学生学号和姓名信息的功能,第1张

1、首先创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。

2、然后编写头文件的拦樱代码。再将数据结构的增删改查和结构体写入头宏卖文件。

3、然后在源文件中创建main源文件简绝丛和Stu源文件。再main文件中写入int mian()代码。

4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。

5、然后在Stu源文件的Init函数用printf语句,将学生管理系统输出。再创建链表的头节点head。

6、然后用switch函数对 *** 作进行判断。再执行数据结构的增删改查功能。

真有点累人啊,汗~~~~~~

不过,你的要求这些代码都能满足了,

可能会有点小错误,我这儿也无法验证,总之总体的思路是完全正确的。

#include <stdio.h>

#include <string.h>//字符串头文件

#include <windows.h> //Sleep函数的头文件

#include <conio.h> //getch函数的头文件

#define N 50

//定义全局变量

//定义学员结构体

typedef struct Student

{

char name[10]//姓名

int NO//学号

char sex[10]//性别

char subject[20]//专业

int phone//电话

char jianli[200]//简历

}STU

//声明这种学员类型的数组

STU stu[N]

//计数器n

int n=0//代表数组的实际人数

//登录函数

void login()

{

system("color 2A")//定义背景和前景颜色

//登录模块实现代码

char Yonghu[30]

char Mima[30]

for(int i=0i<3i++)

{

// 打印登陆界面

Sleep(500)//定时打印

printf("\n\n\t\t\氏嫌滑t\t学员管理系统平台\n")

Sleep(500)

printf("\n\t\t\n")

Sleep(500)

printf("\n\t\t\t\t用户名:")

gets(Yonghu)

printf("\n\t\t\t\t密码:")

char let=NULL//定义一个字符变量为空值

int j=0//代表密码的实际长度

while(j<10 &&let!=13)//定义密码长度和当接收的字符不为回车键(回车键的ASCLL码值为13)时

{

let=getch()//获得字符 不显示

if(let!=8)//当接收的字符不为退格键(退格键的ASCLL码值为8)时

{

Mima[j++]=let//将接收的字符赋给数组Mima并自加一个长度

printf("*")

}

else

{

if(j>0)//当密码长度不为0时

{

//删除字符的 *** 作

putchar(8)

putchar(' ')

putchar(8)

Mima[--j]=NULL//将空值赋给数组Mima并自者歼减一个长度

}

}

}

Mima[--j]=NULL

putchar(8)//消除因回车键所打印的*

putchar(' ')

putchar(8)

putchar('\0')//字符串结束标记

//验证密码

if(strcmp(Yonghu,"姓名")==0 &&strcmp(Mima,"123456")==0)//用比较函数判断用户歼腊输入的用户名和密码是否正确

{

//调用dos命令清空控制台屏幕

system("cls")

printf("\n\n\n\n\n\t\t\t正在登录菜单界面,请稍候...")

for(int i=0i<=5i++)

{

Sleep(666)

printf(">>>")

}

for(int i=0i<=100i++)

{

system("cls")

//%%为百分号

printf("\n\n\n\n\n\n\n\t\t\t\t正在加载数据中...%d%%",i)

}

system("cls")

printf("\n\n\n\n\n\n\n\t\t\t\t加载数据成功,loding.....\n")

break//跳出for循环

}

else

{

if(i<2)//用户输入错误不超过2次

{

system("cls")

printf("\n\n\n\n\n\n\n\n\n\n")

Sleep(1000)

printf("\t:抱歉,您输入的用户名或密码错误,请重新输入!\n")

}

else//用户3次输入都错误时

{

system("cls")

printf("\n\n\n\n\n\n\n\n\n\n")

Sleep(1000)

printf("\t:Sorry,您输入的用户名或密码错误次数太多,请休息一会再来!\n")break

}

}

Sleep(2000)

//调用dos命令清空控制台屏幕

system("cls")

}

}

//菜单函数

void menu()

{

Sleep(2000)

//调用dos命令清空控制台屏幕

system("cls")

//打印功能菜单界面

Sleep(500)

printf("\n\n\t\t\t\t学员管理系统平台\n")

Sleep(500)

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

Sleep(500)

printf("\n\t\t功能菜单:\n\n")

Sleep(1000)

printf("\t\t 1、录入单个学员信息 2、显示所有学员信息\n")

Sleep(1000)

printf("\t\t 3、排序显示学员信息 4、插入单个学员信息\n")

Sleep(1000)

printf("\t\t 5、删除单个学员信息 6、查找单个学员信息\n")

Sleep(1000)

printf("\t\t 7、读取所有学员信息 8、保存所有学员信息\n")

Sleep(1000)

printf("\t\t 9、清空全部学员信息 0、退出学员管理系统\n")

}

//录入函数

void input()

{

int i

char answer

do

{

//录入学号

do

{

printf("学号:")

scanf("%d",&stu[n].NO)

// 判断输入格式是否有错

while(stu[n].NO<=0 || stu[n].NO>50)

{

printf("\t:输入格式有误,请重新输入!\n")

fflush(stdin) //判断输入其它字符(如:a,b,aa,skd...)时报错

printf("学号:")

scanf("%d",&stu[n].NO)

}

//循环遍历输入的学号是否重复

for(i=0i<ni++)

{

if(stu[i].NO==stu[n].NO)

{

printf("\t:学号重复,请重新输入!\n")

break

}

}

}while(i<n)

//录入姓名

do

{

printf("姓名:")

scanf("%s",stu[n].name)

//判断输入时姓名是否为空

while(strlen(stu[n].name)==0)

{

printf("\t:姓名不能为空,请重新输入!\n")

printf("姓名:")

scanf("%s",stu[n].name)

}

// 判断输入时姓名是否含有数字

for(i=0i<strlen(stu[n].name)i++)

{

if(stu[n].name[i]>='0'&&stu[n].name[i]<='9')

{

printf("提示:姓名不能含有数字,请重新输入!\n")

break

}

}

}while(i<strlen(stu[n].name))

//录入性别

do

{

printf("性别")

scanf("%s",stu[n].sex)

}while(i<strlen(stu[n].sex))

//录入专业

do

{

printf("专业")

scanf("%s",stu[n].subject)

}while(i<strlen(stu[n].subject))

//录入联系电话

do

{

printf("电话号码")

scanf("%s",&stu[n].phone)

}while(i<strlen(stu[n].phone))

//录入简历

do

{

printf("简历\n")

scanf("%s",stu[n].jianli)

}while(i<strlen(stu[n].jianli)

n++//实际的人数自加一次

//判断输入成绩的实际人数是否超出已定内存空间

if(n<N)

{

printf("是否继续录入?(y/n):")

fflush(stdin)//清空缓存

scanf("%c",&answer)

}

else

{

printf("实际人数超出已定存储空间的内存,程序终止!\n")

break

}

}while(answer=='Y' || answer=='y')

}

//显示函数

void display()

{

//打印表头

printf("********************************************************************************\n")

printf("学号\t姓名\t性别\t专业\n")

printf("********************************************************************************\n")

//循环打印学员信息

for(int i=0i<ni++)

{

printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].sex,stu[i].subject)

printf("********************************************************************************\n")

}

printf("\n联系电话\n")

for(int i=0i<ni++)

{

printf("%d\n",stu[i].phone)

printf("********************************************************************************\n")

}

printf("\n学历\n")

for(int i=0i<ni++)

{

printf("%s",stu[i].jianli)

printf("********************************************************************************\n")

}

}

//排序函数

void sort()

{

STU temp//定义临时变量

int i,j

//冒泡排序

for(i=0i<n-1i++)

{

for(j=0j<n-1-ij++)

{

if(stu[j].avg<stu[j+1].avg)

{

temp=stu[j]

stu[j]=stu[j+1]

stu[j+1]=temp

}

}

}

}

//插入函数

void insert()

{

int i,j//定义循环变量

STU newStu//定义实行插入功能时输入的类型

char answer

printf("单个学员信息的循环插入:\n")

do

{

do

{

printf("学号:")

scanf("%d",&newStu.NO)

// 判断输入格式是否有错

while(newStu.NO<=0 || newStu.NO>50)

{

printf("\t:输入格式有误,请重新输入!\n")

fflush(stdin) //判断输入其它字符(如:a,b,aa,skd...)时报错

printf("学号:")

scanf("%d",&newStu.NO)

}

//循环遍历输入的学号是否重复

for(i=0i<ni++)

{

if(stu[i].NO==newStu.NO)

{

printf("\t:学号重复,请重新输入!\n")

break

}

}

}while(i<n)

do

{

printf("姓名:")

scanf("%s",&newStu.name)

//判断输入时姓名是否为空

while(strlen(newStu.name)==0)

{

printf("\t:姓名不能为空,请重新输入!\n")

printf("姓名:")

scanf("%s",newStu.name)

}

// 判断输入时姓名是否含有数字

for(i=0i<strlen(newStu.name)i++)

{

if(newStu.name[i]>='0' &&newStu.name[i]<='9')

{

printf("提示:姓名不能含有数字,请重新正确输入!\n")

break

}

}

}while(i<strlen(newStu.name))

n++//实际的人数自加一次

sort()//调用排序函数

//循环遍历找位置

for(i=0i<ni++)

{

if(newStu.avg>stu[i].avg)

{

j=i

break

}

}

//移位

for(i=ni>ji--)

{

stu[i]=stu[i-1]

}

stu[j]=newStu//将newStu插入到j的位置

//判断插入的实际人数是否超出已定内存空间

if(n<N)

{

printf("是否继续插入?(y/n):")

fflush(stdin)//清空缓存

scanf("%c",&answer)

}

else

{

printf("实际人数超出已定存储空间的内存,程序终止!\n")

break

}

}while(answer=='Y' || answer=='y')

}

//删除函数

void remove()

{

int i,j,no

char answer

do

{

printf("请输入要删除学员的学号:")

scanf("%d",&no)

//循环遍历找位置

for(i=0i<ni++)

{

if(no==stu[i].NO)

{

j=i

break

}

}

//移位

if(i<n)

{

for(i=ji<n-1i++)

{

stu[i]=stu[i+1]

}

n--//实际人数自减一个

printf("\n\n系统在第%d个位置找到了学号为%d的学员!\n",j+1,no)

}

else

{

printf("没有找到您要删除的学员学号,请重新选择功能!\n")

}

//判断是否已经没有可以删除的人数

if(n>0)

{

printf("是否继续删除?(y/n):")

fflush(stdin)//清空缓存

scanf("%c",&answer)

}

else

{

printf("已经没有可以删除的人数了,程序终止!\n")

break

}

}while(answer=='Y' || answer=='y')

}

//查找函数

void search()

{

int i,no

char answer

printf("请输入您要查找学员的学号:")

scanf("%d",&no)

do

{

//循环遍历找位置

for(i=0i<ni++)

{

if(stu[i].NO==no)

{

break

}

}

if(i<n)

{

printf("\n\n系统在第%d个位置找到了学号为%d的学员!\n",i+1,no)

printf("该学员的信息如下:\n")

printf("********************************************************************************\n")

printf("学号\t姓名\t成绩一\t成绩二\t成绩三\t平均分\t总分\n")

printf("********************************************************************************\n")

printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg,stu[i].sum)

printf("********************************************************************************\n")

}

else

{

printf("\n提示:对不起,没有找到学号为%d的学员\n",no)

}

//判断是否继续查询

printf("是否继续查询?(y/n):")

fflush(stdin)//清空缓存

scanf("%c",&answer)

}while(answer=='Y' || answer=='y')

}

//读取函数

int read()

{

FILE *fp//定义文件指针变量

fp=fopen("e:\\xueyuanguanlixitong.txt","rt")

int n=fread(stu,sizeof(STU),N,fp)

return n

}

//保存函数

void save()

{

FILE *fp//定义文件指针变量

fp=fopen("e:\\xueyuanguanlixitong.txt","wb")

fwrite(stu,sizeof(STU),n,fp)

fclose(fp)

printf("已保存在:e:\\xueyuanguanlixitong.txt\n")

printf("\n\n\n\n\n\t\t\t\t保存成功!O(∩_∩)O~\n")

}

//主函数

void main()

{

login()//调用登录函数

int choice,i//定义用户选择变量

do

{

//显示菜单

menu()

printf("\n\t请选择:")

scanf("%d",&choice) //接受用户选择

switch(choice)

{

case 1:

system("cls") //清屏

printf("\n单个学员信息的循环录入\n")

input()

display()

system("pause")

break

case 2:

system("cls")

display()

system("pause") //暂停一下程序

break

case 3:

system("cls")

if(n==0)

{

printf("\t\t学员个数为0,无法排序,请先录入!\n")

system("pause")

break

}

else

{

sort()//调用排序函数

system("pause")

break

}

case 4:

system("cls")

insert()//调用插入函数

system("pause")

break

case 5:

system("cls")

remove() //调用删除函数

system("pause")

break

case 6:

system("cls")

search() //调用查找函数

system("pause")

break

case 7:

system("cls")

n=read() //调用读取函数

printf("读取成功!\n")

system("pause")

break

case 8:

system("cls")

save() //调用保存函数

system("pause")

break

case 9:

system("cls")

n=0 //清空学员个数

printf("清空完成!\n")

system("pause")

break

case 0: //退出程序

system("cls")

for(i=5i>=0i--)

{

Sleep(1000)

system("cls")

printf("\n\n\n\n\n\n\n\n\n\n\n\n\t\t请稍等,还有%d秒推出程序!\n\n\n",i)

}

system("cls")

printf("\n\n\n\n\n\n你已经成功退出程序\n\t\t谢谢使用,欢迎再次登录!\n")

exit(0)

break

default:

system("cls")

printf("\n\n\n\n\n\t\t请选择0-9之间的数!\n")

system("pause")

}

}while(1)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/bake/11995722.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存