设有N名学生的数据信息,包含学号,姓名和年龄,要求设计一个系统,完成一下功能:
1.输入学生的学号,姓名和年龄
2.按学号由小到大排序,姓名和年龄也随之调整
3.输入一个学号,用一种查找算法找出该学生的姓名
解答如下,用到了结构体
#include <stdio.h>
#define MAX 255
typedef struct student
{
int id;
char name[20];
int age;
};
void input(student stu[],int n);//输入
void sort(student stu[],int n);//冒泡排序
void print(student stu[],int n);//打印
int search(student stu[],int n,int id);//按学号查找
int main()
{
int N,id;
student stu[MAX];
printf("请输入学生人数N:");
scanf("%d",&N);
input(stu,N);
sort(stu,N);
printf("按学号由小到大排序后为:\n");
print(stu,N);
printf("请输入查询的学号:");
scanf("%d",&id);
search(stu,N,id);
return 0;
}
void input(student stu[],int n)
{
for(int i=0;i<n;i++)
{
printf("输入第%d个学生的学号,姓名和年龄:",i+1);
scanf("%d %s %d",&stu[i].id,stu[i].name,&stu[i].age);
}
}
void sort(student stu[],int n)//冒泡排序
{
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(stu[j].id > stu[j+1].id)
{
student tem = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tem;
}
}
}
}
void print(student stu[],int n)
{
for(int i=0;i<n;i++)
printf("学号:%d,姓名:%s,年龄:%d\n",stu[i].id,stu[i].name,stu[i].age);
}
int search(student stu[],int n,int id)
{
int index=-1;
for(int i=0;i<n;i++)
{
if(stu[i].id==id)
{
index=i;
}
}
if(index>-1)
printf("学号为%d的学生姓名为:%s\n",id,stu[index].name);
else
printf("没有这个学号的学生。\n");
}
先设置数据库 把以上字段都输入进去 如果是单表就正常查询 如果是多表就进行联查
连接数据库
搭建架构
在持久层吧sql写完
输入学号即查询
代码如下
#include <stdio.h>
struct Student {
int id;
char name[20];
int age;
};
int main()
{
int i, j, m, id, N;
printf("Please enter the number of students (N) : ");
scanf("%d", &N);
struct Student stu[N];
struct Student temp;
while(1) {
printf("1. Insert student's information\n");
printf("2. Sort student's information\n");
printf("3. Find student's name\n");
printf("Please enter your choice : ");
scanf("%d", &m);
switch (m) {
case 1:
for(i = 0; i < N; i++) {
scanf("%d %s %d", &stu[i].id, stu[i].name, &stu[i].age);
}
break;
case 2:
for(i = 0; i < N; i++) {
for(j = 0; j < N - 1 - i; j++) {
if(stu[j].id > stu[j + 1].id) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
for(i = 0; i < N; i++) {
printf("%d\t%s\t%d\n", stu[i].id, stu[i].name, stu[i].age);
}
break;
case 3:
printf("Please enter student's id : ");
scanf("%d", &id);
for(i = 0; i < N; i++) {
if(id == stu[i].id) {
printf("student's name: %s\n", stu[i].name);
break;
}
}
break;
default:
printf("Invalid choice!\n");
break;
}
printf("\n");
}
return 0;
}
不就是学生信息管理系统嘛,源代码我有啊
用结构体 定义学生信息
用冒泡排序或简单选择来排序
用二分查找来查找
这样最简单
定义学生数据结构,按要求写三个函数呗
#include <stdio.h>
typedef struct _student
{
int num;
char name[20];
int age;
}student;
void input(student *stu,int n)
{
for(int i=0;i<n;i++)
{
printf("输入第%d个学生的学号,姓名和年龄:",i+1);
scanf("%d %s %d",&stu[i].num,stu[i].name,&stu[i].age);
}
}
void sorts(student *stu,int n)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
{
if(stu[j].num > stu[j+1].num)
{
student temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
void print(student *stu,int n)
{
for(int i=0;i<n;i++)
printf("学号:%d,姓名:%s,年龄:%d\n",stu[i].num,stu[i].name,stu[i].age);
}
void find(student *stu,int n,int num)
{
int left = 0,right = n-1;
int mid = (left + right)/2;
while(left <= right)
{
if(stu[mid].num < num)
left = mid + 1;
else if(stu[mid].num > num)
right = mid - 1;
else
{
printf("学号为%d的学生姓名为:%s\n",num,stu[mid].name);
break;
}
}
if(left > right)
printf("没有这个学号的学生。\n");
}
int main()
{
int N,num;
student stu[100];
printf("请输入学生人数:");
scanf("%d",&N);
input(stu,N);
sorts(stu,N);
printf("学号排序后为:\n");
print(stu,N);
printf("请输入查询的学号:");
scanf("%d",&num);
find(stu,N,num);
return 0;
}