急求C语言学生选课管理设计和做的过程流程图。谢谢!
发布网友
发布时间:2022-04-30 14:29
我来回答
共2个回答
热心网友
时间:2022-06-23 03:34
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
int count = 0;
int cou = 0;
int choose = 0; //用于统计数组个数
/*================定义函数===============*/
void allput(); //把数组整体排序输出
void insert(); //插入新课程
void search(); //搜索指定课程
void delete_(); //删除指定课程
void select(); //选课
void change(); //修改指定课程
void baocun(); //保存,把修改后的数组重新装入文件
void into(); //验证密码
void apply(); //申请密码
struct subject_list{
char num[15]; //装课程编号
char name[30]; //装课程名称
int xueshi;
float xuefen; //分别装学时、学分
}sub[100];
struct secret{
char xuehao[15];
char sec[15];
}stu[1000];
/*================================主函数================================*/
void main()
{
int i=0;
FILE *fp,*fpp;
if((fpp=fopen("e:\\Secret.txt","r")) == NULL){
printf("File open error!\n");
exit(0);
}
while(! feof(fpp)){
fscanf(fpp,"%s%s",stu[i].xuehao,stu[i].sec);
i++;
cou++; //计数
};
system("color df");
/*—————————————————————验证、申请密码——————————————————--——-*/
printf("\n\n\n------------------------------ 请通过密码进入 ------------------------------\n\n\n");
do{
printf(" 1:进入系统;2:申请密码;0:退出\n");
printf(" 请选择功能:");
scanf("%d",&choose);
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
if(choose<0){
printf("输入错误!\n");
exit(0);
}
switch(choose){
case 1: into(); //===========〉引入密码验证函数
if(fclose(fpp)){
printf("Can not close the file!\n"); //====〉关闭文件
exit(0);
}
break;
case 2: apply(); break; //===========〉引入 apply 函数
case 0:
exit(0);
default:
printf("\n 请重新输入!\n");
break;
}
}while(choose!=0);
if((fp=fopen("e:\\LessonInfo.txt","r")) == NULL){
printf("File open error!\n");
exit(0);
}
/* 把文件内容赋给数组 */
i = 0;
while(! feof(fp)){
fscanf(fp,"%s%s%d%f",sub[i].num,sub[i].name,&sub[i].xueshi,&sub[i].xuefen);
i++;
count++; //计数
};
if(fclose(fp)){
printf("Can not close the file!\n"); //====〉关闭文件
exit(0);
}
printf("\n\n\n\n\n\n\n\n\n\n\t 正在启动系统>>>> >>>> >>>>\t\n\n\n\n\n\n\n\n\n\n");
for(i=0;i<100000000;i++);
system("cls");
system("color 1f");
/*———————————————————主体框架——系统操作———————————————————————*/
do{
system("cls");
printf("\n\n");
printf("==============================欢迎进入学生选课系统==============================\n");
printf(" __________________学生选课系统功能选项:__________________ \n");
printf(" | 1. 看所有课程信息 |\n");
printf(" | 2. 搜索指定课程信息 |\n");
printf(" | 3. 添加课程信息 |\n");
printf(" | 4. 删除课程信息 |\n");
printf(" | 5. 修改课程信息 |\n");
printf(" | 6. 选课 |\n");
printf(" |________________________7. 退出___________________________|\n");
printf("*******************************************************************************\n");
printf("请选择功能:");
scanf("%d",&choose);
printf("--------------------------------------\n");
/* 建立分支选择功能选项 */
switch(choose){
case 1: allput(); break; //=================〉引用函数排序输出
case 2: search(); break; //=================〉引用搜索函数
case 3: insert(); break; //=================〉引用插入函数
case 4: delete_(); break; //=================〉引用删除函数
case 5: change(); break; //=================〉引用函数修改内容
case 6: select(); break; //=================〉引用选课函数
case 7: printf("谢谢使用!再见!\n"); exit(0); //=================〉退出
default: printf("请重新输入\n"); break;
}
printf("--------------------------------------------------------------------------------\n");
printf(" 按任意键返回首层\n");
getch();
}while(choose != 7);
}
/*=============把数组整体排序输出================*/
void allput()
{
int i,j,xueshi;
char num[15],name[15];
float xuefen;
/* 冒泡排序 */
for(i=1;i<count;i++)
for(j=0;j<count-1;j++)
if(strcmp(sub[j].num,sub[j+1].num)>0){
strcpy(num,sub[i].num);
strcpy(name,sub[i].name);
xueshi = sub[i].xueshi;
xuefen = sub[i].xuefen;
strcpy(sub[i].num,sub[i+1].num);
strcpy(sub[i].name,sub[i+1].name);
sub[i].xueshi = sub[i+1].xueshi;
sub[i].xuefen = sub[i+1].xuefen;
strcpy(sub[i+1].num,num);
strcpy(sub[i+1].name,name);
sub[i+1].xueshi = xueshi;
sub[i+1].xuefen = xuefen;
}
/* 输出查找到的信息 */
printf("课程编号\t课程名称\t学时\t学分\n");
for(i=0;i<count;i++)
printf("%s\t%s\t%d\t%.1f\n",sub[i].num,sub[i].name,sub[i].xueshi,sub[i].xuefen);
baocun(); //把排序后的数组重新写入文件
}
/*========================================查看指定课程信息=====================================*/
void search()
{
char num[15];
int i,flag=0;
do{
printf("请输入课程编号:");
scanf("%s",num);
for(i=0;i<count;i++){
if(strcmp(num,sub[i].num) == 0){
flag = 1;
break;
}
}
/* 输出查找到的信息 */
if(flag){
printf("课程编号\t课程名称\t学时\t学分\n");
printf("%s\t%s\t%d\t%.1f\n",sub[i].num,sub[i].name,sub[i].xueshi,sub[i].xuefen);
}
else{
printf("无此课程!1:重新输入;2.返回\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请输入:");
scanf("%d",&choose);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
if(choose!=1) return;
}while(flag==0);
}
/*=============================================选课===========================================*/
void select()
{
char stu[15],num_[15];
int i,flag=0;
FILE *fp_;
fp_=fopen("e:\\SelectInfo.txt","a");
if(fp_== NULL){
printf("File open error!\n");
exit(0);
}
do{
printf("请输入学号:");
scanf("%s",stu);
printf("请输入课程编号:");
scanf("%s",num_);
/* 判断要选课程是否存在 */
for(i=0;i<count;i++){
if(strcmp(num_,sub[i].num) == 0){
//strcpy(name,sub[i].name)
flag = 1;
break;
}
}
if(flag){
fprintf(fp_,"%s %s %s\n",stu,num_,sub[i].name);
printf("选课成功!\n");
/* 关闭文件 */
if(fclose(fp_)){
printf("Can not close the file!\n");
exit(0);
}
}
else{
printf("无此课程!1:重新输入;2.返回\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请输入:");
scanf("%d",&choose);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
if(choose!=1) return;
}while(flag==0);
}
/*=======================================添加课程=============================================*/
void insert()
{
int i,j,flag=0;
char num[15];
do{
flag = 0;
printf("请输入课程编号:");
scanf("%s",num);
/* 判断要添加课程是否存在 */
for(i=0;i<count;i++){
if(strcmp(num,sub[i].num) == 0){
flag = 1;
break;
}
}
if(flag){
printf("此课程已存在!1:重新输入;2.返回\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请输入:");
scanf("%d",&choose);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
if(choose!=1) return;
}
else{
j=count;
for(i=0;i<count;i++){
if(strcmp(num,sub[i].num)>0) continue;
strcpy(sub[j].num,sub[j-1].num); //后一项覆盖前一项
strcpy(sub[j].name,sub[j-1].name);
sub[j].xueshi = sub[j-1].xueshi;
sub[j].xuefen = sub[j-1].xuefen;
j--;
}
/* 输入要添加的信息 */
strcpy(sub[j].num,num);
printf("请输入课程名称:");
scanf("%s",sub[j].name);
printf("请输入学时:");
scanf("%d",&sub[j].xueshi);
printf("请输入学分:");
scanf("%f",&sub[j].xuefen);
count++;
baocun();
printf("添加成功!\n");
}
}while(flag==1);
}
/*=======================================删除课程===============================================*/
void delete_()
{
char num[15];
int i,j,flag=0;
do{
printf("请输入课程编号:");
scanf("%s",num);
for(i=0;i<count;i++)
if(strcmp(num,sub[i].num) == 0){
flag = 1;
break;
}
if(flag){
for(j=i;j<count-1;j++){
strcpy(sub[j].num,sub[j+1].num); //后一项覆盖前一项
strcpy(sub[j].name,sub[j+1].name);
sub[j].xueshi = sub[j+1].xueshi;
sub[j].xuefen = sub[j+1].xuefen;
}
count--;
baocun(); //引用保存函数
printf("删除成功!\n");
}
else{
printf("无此课程!1:重新输入;2:返回\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请输入:");
scanf("%d",&choose);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
if(choose!=1) return;
}while(flag==0);
}
/*===========================================修改课程==========================================*/
void change()
{
char num[15];
int i,flag=0;
do{
printf("请输入课程编号:");
scanf("%s",num);
/* 判断要修改课程是否存在 */
for(i=0;i<count;i++)
if(strcmp(num,sub[i].num) == 0){
flag = 1;
break;
}
if(flag){
printf("请输入修改后的课程名称:");
scanf("%s",sub[i].name);
printf("请输入学时:");
scanf("%d",&sub[i].xueshi);
printf("请输入学分:");
scanf("%f",&sub[i].xuefen);
baocun(); //引用排序函数,重新写入文件
printf("修改成功!\n");
}
else{
printf("无此课程!1:重新输入;2.返回\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请输入:");
scanf("%d",&choose);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
if(choose!=1) return;
}while(flag==0);
}
/*============================================保存=============================================*/
void baocun()
{
int i;
FILE *fpp;
fpp = fopen("e:\\LessonInfo.txt","w");
/* 把数组装入文件 */
for(i=0;i<count-1;i++)
fprintf(fpp,"%s %s %d %.1f\n",
sub[i].num,sub[i].name,sub[i].xueshi,sub[i].xuefen);
fprintf(fpp,"%s %s %d %.1f",
sub[i].num,sub[i].name,sub[i].xueshi,sub[i].xuefen);
/* 关闭文件 */
if(fclose(fpp)){
printf("Can not close the file!\n");
exit(0);
}
}
/*====================通过密码进入后面的程序=====================*/
void into()
{
int i=0;
char xueh[15],secret[15];
do{
printf(" 请输入学号 :");
scanf("%s",xueh);
printf(" 请输入密码:");
scanf("%s",secret);
for(i=0;i<cou;i++)
if(strcmp(xueh,stu[i].xuehao)==0&&strcmp(secret,stu[i].sec)==0){
choose = 0;
system("cls");
return;
}
//printf("--------------------------------------------------------------------------------\n");
printf("\n 密码错误! 1:重新输入;2 :返回\n\n");
printf(" 请输入:");
scanf("%d",&choose);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
//if(choose<0) { printf("输入错误!\n"); exit(0);}
if(choose!=1) return;
}while(1);
}
/*==========================申请密码=====================*/
void apply()
{
FILE *fqq;
int i=0,flag = 0;
char xuehao[15];
do{
flag = 0;
printf("\n 请输入学号:");
scanf("%s",xuehao);
for(i=0;i<cou;i++)
if(strcmp(xuehao,stu[i].xuehao)==0)
flag = 1;
if(flag!=1) break;
//printf("--------------------------------------------------------------------------------\n");
printf("\n 学号已存在!1:重新输入;2:返回\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" 请输入:");
scanf("%d",&choose);
printf("--------------------------------------------------------------------------------\n");
if(choose<0) { printf("输入错误!"); exit(0); }
if(choose!=1) return;
}while(flag);
fqq=fopen("e:\\Secret.txt","a+");
printf(" 请输入密码:");
scanf("%s",stu[i].sec);
strcpy(stu[i].xuehao,xuehao);
cou++;
fprintf(fqq,"\n%s %s",xuehao,stu[i].sec);
if(fclose(fqq)){
printf("Can not close the file!\n");
exit(0);
}
printf("--------------------------------------------------------------------------------\n");
printf(" 申请成功!是否立即进入:1:进入;2:退出\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" 请输入:");
scanf("%d",&choose);
printf("--------------------------------------------------------------------------------\n");
switch (choose){
case 1:
into();
break;
default:
if(fclose(fqq))
printf("Can not close the file!\n");
exit(0);
}
}
热心网友
时间:2022-06-23 03:34
在word里面画啊,可以用插入图画,自己画各种框图。
冒泡排序: (数字都是序号 1~9 为 第一到第九个数字 假如 一共9个数字比较)
1 和 2 比较 小于就交换位置 然后
1 和 3 比较 小于就交换位置 然后
1 和 4 比较 小于就交换位置 然后
......
1 和 9 比较 小于就交换位置 然后
2 和 3 比较 小于就交换位置 然后
2 和 4 比较 小于就交换位置 然后
......
2 和 9 比较 小于就交换位置 然后
3 和 4 比较 小于就交换位置 然后
3 和 5 比较 小于就交换位置 然后
....
...
8 和 9 比较 小于就交换位置 全部结束 所得序列从小到大排列
快速排列:
第一个数 跟 整个序列中间一个数比较 要是小于 就在跟前半段中间个数比较 要是又大于 就跟前半段中的后半段中间个数比较 来确定位置
如:
1 跟 (1+9)/2 比较 小于就继续跟 (1+5)/2比较 大于就跟(5+9)/2比较
然后(假设是小于) 1跟(1+5)/2比较 又大于 那么继续1跟(3+5)/2比较 要是
1大于4那么交换位置
然后第二段: 2 跟 (1+9)/2比较 小于就继续跟 (1+5)/2比较 大于就跟(5+9)/2比较
以此类推...
9跟(1+5)/2 比较........
Dim i As Integer'定义循环变量
Dim num(1 To 20) As Integer'保存随机数
Dim max As Integer, min As Integer'保存最大值和最小值
Me.Show '
max = 0: min = 100 '初始化
Randomize Timer '
For i = 1 To 20
num(i) = Fix(Rnd() * 100) + 1
If num(i) > max Then max = num(i)
If num(i) < min Then min = num(i)
Print num(i);
Next i
Print
Print max
Print min