C语言课程设计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言课程设计相关的知识,希望对你有一定的参考价值。
题目 商品信息管理程序
设计一个商品信息管理程序,商品信息包括:商品编号,商品名称,商品价格,商品数量,商品生产商等。
该程序设计应该具有以下功能:1商品信息的添加2商品信息的删除3商品信息的查询4商品信息的修改5提供一些统计各类信息的功能
要求 1按照分析 设计 调试和测试的软件开发过程完成这个应用程序
2为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择所希望进行的操作项目
提示 设计一个结构类型和数组类型或文件,用来保存商品信息
不要求帮我做 帮我在网上找一个就可以了 差不多就可以 如果不能完全满足条件也可以 有好的我还会继续加粉的 对了 邮箱有 lxtx137@sina.com谢谢啊
1)按销售额对销售员进行排序,输出排序结果(销售员代号)
2)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
3)输出统计报表如下:*/
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#define Z 5
#define R 4 /*定义宏常量便于程序的一般化*/ /*R表示销售员个数*/
typedef struct /*缩短结构体变量名*/
int shangpin[Z]; /*定义结构体便于信息的存储和读写,辨别*/ /*R是表示商品的种类,最后一个为该销售员商品总和*/
data;
void menu()
printf(" *******************************************************\n");
printf(" 0.结束操作\n");
printf(" 1.计算上个月每个人每种产品的销售额\n");
printf(" 2.按销售额对销售员进行排序,输出排序结果\n");
printf(" 3.统计每种产品的总销售额,输出排序结果\n");
printf(" 4.输出统计报表\n");
printf(" ******************************************************\n");
void data_read(data *x) /*读入函数使程序简洁*/
FILE *fp;
char fname[10];
int i;
printf("您想查询哪个月?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/
scanf("%s",fname);
strcat(fname,".txt");/*连接文件属性*/
if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/
printf("can not open the file\n");
exit(0);
for(i=0;i<R;i++) /*读出信息*/
if(fread(x+i,sizeof(data),1,fp)!=1)
printf("读入信息出错!\n");
void data_count(data *x) /*计算上个月每个人每种产品的销售额*/
FILE *fp;
char fname[10];
int j,t; /*用于控制循环*/
int i,k,s; /*用于定义职工序号,产品序号,产品数量*/
system("cls");
printf("您想计算哪个月?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息写入*/
scanf("%s",fname);
strcat(fname,".txt");
if((fp=fopen(fname,"wb"))==NULL) /*打开文件*/
printf("can not open the file\n");
exit(0);
for(j=0;j<R;j++) /*对商品数量清零*/
for(t=0;t<Z;t++)
(x+j)->shangpin[t]=0;
printf("please put the information about the 职工编号,产品编号,销售数量\n"); /*写入信息*/
for(j=0;;j++)
scanf("%d%d%d",&i,&k,&s);
if(i==0) /*输入职工为0时结束信息输入*/
break;
if(i>R||i<0||k>Z||k<0)
printf("the information error!\n"); /*避免输入信息出错*/
continue;
else
(x+i-1)->shangpin[k-1]=(x+i-1)->shangpin[k-1]+s;/*统计各个人的各种产品的数量,-1为了和数组中的序号相匹配*/
for(j=0;j<R;j++)
if(fwrite((x+j),sizeof(data),1,fp)!=1) /*把信息写入文件中便有以后调用*/
printf("write error!\n");
fclose(fp); /*关闭文件避免信息遗漏*/
void range_sxy(data *x) /*按销售额对销售员进行排序,输出排序结果*/
FILE *fp;
char fname[10];
int i,k,j,t,bianhao[R]=0,z;
system("cls");
printf("你要哪个月的?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/
scanf("%s",fname);
strcat(fname,".txt");
if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/
printf("can not open the file\n");
exit(0);
for(i=0;i<R;i++) /*读出信息*/
if(fread(x+i,sizeof(data),1,fp)!=1)
printf("读入信息出错!"); /*读入信息提示*/
for(i=0;i<R;) /*用于存储职工编号*/
bianhao[i]=i++;
printf("请输入按何种产品排序\n");
scanf("%d",&k);
k=k-1; /*便于与结构体中的数组值对应*/
for(i=0;i<R;i++) /*按K种产品对销售员排序,选择法排序*/
t=i;
for(j=i+1;j<R;j++)
if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*调用职工各自对应的结构体内的产品数量*/
t=j;
if(t!=i)
z=bianhao[i];
bianhao[i]=bianhao[t];
bianhao[t]=z;
printf("按%d产品对销售员排序为:\n",k+1);
for(i=0;i<R;i++)
printf("%5d",bianhao[i]+1);
getch();
fclose(fp);
void range_shangpin(data *x) /*统计每种产品的总销售额,输出排序结果*/
FILE *fp;
char fname[10];
int i,j,sum[Z]=0,bianhao[Z]=0,z,t,k;
system("cls");
printf("您想计算哪个月的?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/
scanf("%s",fname);
strcat(fname,".txt");
if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/
printf("can not open the file\n");
exit(0);
for(i=0;i<R;i++) /*读出信息*/
if(fread(x+i,sizeof(data),1,fp)!=1)
printf("读入信息出错!");
for(i=0;i<Z;i++) /*对各种商品求和*/
for(j=0;j<R;j++)
sum[i]=sum[i]+(x+j)->shangpin[i];
for(i=0;i<Z;) /*用于存储商品编号*/
bianhao[i]=i++;
for(i=0;i<Z;i++)
printf("%3d",bianhao[i]);
for(i=0;i<Z;i++) /*对产品从高到低排序,选择法排序*/
t=i;
for(j=i+1;j<Z;j++) /*产品变化时,产品编号也随之变化,便于输出*/
if(sum[t]<sum[j])
t=j;
if(t!=i)
k=sum[i];
sum[i]=sum[t];
sum[t]=k;
z=bianhao[i];
bianhao[i]=bianhao[t];
bianhao[t]=z;
printf("输出产品排序\n");
printf("产品编号 数量\n");
for(i=0;i<Z;i++)
printf("%-10d%-10d\n",bianhao[i]+1,sum[i]);
getch();
fclose(fp);
void data_out(data *x) /*输出统计报表*/
FILE *fp;
char fname[10];
int i,j,sum[Z+1]=0;
system("cls");
printf("您想计算哪个月?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/
scanf("%s",fname);
strcat(fname,".txt");
if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/
printf("can not open the file\n");
exit(0);
for(i=0;i<R;i++) /*读出信息*/
if(fread(x+i,sizeof(data),1,fp)!=1)
printf("读入信息出错!");
for(i=0;i<Z;i++) /*对各种商品求和*/
for(j=0;j<R;j++)
sum[i]=sum[i]+(x+j)->shangpin[i];
for(i=0;i<Z;i++) /*求商品总和*/
sum[Z]=sum[Z]+sum[i];
printf("输出统计报表如下:\n"); /*按要求输出统计表*/
printf("产品代号 销售之和 销售员代号\n");
for(i=0;i<R;i++)
for(j=0;j<Z;j++)
printf("%-10d%-10d%-10d\n",j+1,(x+i)->shangpin[j],i+1);
printf("***********************************\n");
for(i=0;i<Z;i++)
if(i==0)
printf("%d产品之和 %-10d 总和 %-10d\n",i+1,sum[i],sum[Z]);
else
printf("%d产品之和 %-10d\n",i+1,sum[i]);
getch();
void main()
int i,choice;
data sxy[R]; /*R表示职工的个数,前面的宏常量*/
for(i=0;;i++)
system("cls"); /*清频命令*/
menu(); /*菜单函数提示用户怎样选择*/
printf("你想做什么?\n");
printf("请选择:"); /*输入要进行的操作*/
scanf("%d",&choice);
if(choice==0) /*退出程序*/
break;
else
switch(choice)
case 1 : data_count(sxy);break; /*计算上个月每个人每种产品的销售额*/
case 2 : range_sxy(sxy);break; /*按销售额对销售员进行排序,输出排序结果*/
case 3 : range_shangpin(sxy);break; /*统计每种产品的总销售额,输出排序结果*/
case 4 : data_out(sxy);break; /*输出统计报表*/
参考技术A #include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>
typedef struct linknode
long number; /* 编号 */
char name[51]; /* 名称 */
double price; /* 价格 */
long amount; /* 数量 */
double money; /* 总价 */
char producer[21]; /* 生产商 */
struct linknode *next;
linknode;
linknode *head, *tail;
int NODSIZE;
void error(const char *errmsg);
void init();
void eatenter();
void input(linknode *node);
void insert();
void locate(linknode **pprev, linknode **pnext);
void remove();
void modify();
void output(linknode *node);
void search();
void cleanup();
void display();
void error(const char *errmsg)
puts(errmsg);
cleanup();
exit(1);
void init()
NODSIZE = sizeof(linknode);
head = tail = (linknode *)malloc(NODSIZE);
if (head == NULL)
error("无法分配内存!");
memset(head, 0, sizeof(linknode));
printf("欢迎使用简单货物信息管理系统\n");
void eatenter()
while (getchar() != '\n');
void input(linknode *node)
printf("商品名称: ");
scanf("%50[^\n]", node->name);
eatenter();
printf("商品价格: ");
scanf("%lf", &node->price);
eatenter();
printf("商品数量: ");
scanf("%ld", &node->amount);
eatenter();
printf("商品生产商: ");
scanf("%20[^\n]", node->producer);
eatenter();
node->money = node->price * node->amount;
/* 添加信息 */
void insert()
linknode *node;
long num;
printf("\n请根据提示输入商品信息(编号0结束)\n");
while (1)
printf("商品编号: ");
scanf("%ld", &num);
eatenter();
if (num == 0)
break;
node = (linknode *)malloc(NODSIZE);
if (node == NULL)
error("无法分配内存!");
node->number = num;
input(node);
tail->next = node;
tail = node;
tail->next = NULL;
void locate(linknode **pprev, linknode **pnext)
char choice, nm[51];
long num;
int invalid;
printf("请选择查找方式:\n");
printf("1: 名称 2: 编号\n");
do
invalid = 0;
choice = getchar();
eatenter();
if (choice != '1' && choice != '2')
printf("无效选项!请重新输入。\n");
invalid = 1;
while (invalid);
if (choice == '1')
printf("货物名称: ");
scanf("%50[^\n]", nm);
else
printf("货物编号: ");
scanf("%ld", &num);
eatenter();
printf("\n");
*pprev = head, *pnext = head->next;
invalid = 0;
while (*pnext)
if (choice == '1' && !strcmp((*pnext)->name, nm))
invalid = 1;
else if ((*pnext)->number == num)
invalid = 1;
if (invalid)
break;
(*pprev) = (*pnext);
(*pnext) = (*pnext)->next;
/* 删除信息 */
void remove()
linknode *prev, *cursor;
locate(&prev, &cursor);
if (cursor)
printf("成功删除记录\n");
prev->next = cursor->next;
if (cursor == tail)
tail = prev;
free(cursor);
else
printf("无法找到记录\n");
printf("按任何键返回上层菜单...\n");
getch();
/* 修改信息 */
void modify()
linknode *prev, *cursor;
locate(&prev, &cursor);
if (cursor)
printf("货物编号: ");
scanf("%ld", &cursor->number);
eatenter();
input(cursor);
printf("成功更新记录\n");
else
printf("无法找到记录\n");
printf("按任何键返回上层菜单...\n");
getch();
void output(linknode *node)
printf("商品编号: %ld\n", node->number);
printf("商品名称: %s\n", node->name);
printf("商品价格: %.2f\n", node->price);
printf("商品数量: %ld\n", node->amount);
printf("商品生产商: %s\n", node->producer);
printf("商品总价: %.2f\n\n", node->money);
void search()
linknode *prev, *cursor;
locate(&prev, &cursor);
if (cursor)
output(cursor);
else
printf("无法找到记录\n");
printf("按任何键返回上层菜单...\n");
getch();
void cleanup()
linknode *cursor = head;
while (cursor)
head = head->next;
free(cursor);
cursor = head;
void display()
linknode *cursor = head->next;
while (cursor)
output(cursor);
cursor = cursor->next;
printf("按任何键返回上层菜单...\n");
getch();
void main()
char choice;
printf("欢迎使用简单商品管理系统\n");
init();
while (1)
printf("请选择相关操作:\n");
printf("1: 添加记录\t2: 删除记录\t");
printf("3: 查询记录\n4: 修改记录\t");
printf("5: 显示记录\t6: 退出程序\n");
choice = getchar();
eatenter();
switch ( choice )
case '1':
insert();
break;
case '2':
remove();
break;
case '3':
search();
break;
case '4':
modify();
break;
case '5':
display();
break;
case '6':
cleanup();
exit(0);
system("cls");
本回答被提问者采纳 参考技术B 靠,邮箱都不留怎么给
http://dl2.csdn.net/fd.php?i=66692153085104&s=70e20097d3f4106c6160e2123b9b4545
这是csdn上的一个下载地址,要是不能用我就传给你
发给你了 参考技术C 要许多时间来编啊
C语言课程设计程序的修改
源程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include
<time.h>
#include <windows.h>
#include
<iostream.h>
...................
void
identify()
FILE *fp;
char a[15];
char
b[100];
printf("\n 考生身份验证
");
printf("\n 请输入学号及密码,按ENTER键继续
");
printf("\n---------------------------------------------------------");
printf("\n
学号 密码 (学号与密码间以空格(SPACE)相隔开)
");
printf("\n---------------------------------------------------------\n");
scanf("%s
%s",a,b);
while
(1)
if((fp=fopen("students.txt","r"))==NULL)
printf("\n信息读取失败");
exit(0);
else
int i;
char num[1000][15];
char
passcode[1000][100];
for(i=0;i<1000;i++)
fscanf(fp,"%s,%s",&num[i][15],&passcode[i][100]);
if(strcmp(char
num[i][15],char a[15])==0)&&(strcmp(passcode[i][100],b[100])==0))
//unknown
menu(); //这是第52行//
else
printf("\n密码或学号错误");
exit(0);
fclose(fp);
.....................
汇编时显示:
--------------------Configuration: 考试系统 - Win32
Debug--------------------
Compiling...
考试系统.c
D:\课设\考试系统.c(52) : error
C2143: syntax error : missing ')' before 'type'
D:\课设\考试系统.c(52) : error
C2198: 'strcmp' : too few actual parameters
D:\课设\考试系统.c(54) : error C2181:
illegal else without matching if
执行 cl.exe 时出错.
考试系统.obj - 1 error(s), 0 warning(s)
怎么改呀!
项目名称:
学生学分管理
系 别: 计算机工程系
专 业: 计算机网络技术
班 级: 0922211
学生姓名:
指导教师: 韦立蓉
北 京 信 息 职 业 技 术 学 院
2010年 1 月 日
一、项目背景介绍
(概要介绍此项目设计的意义和要求)
本程序为学生学分管理系统。本程序根据现实中的问题通过c语言形式编程。本程序要求能够登记学分,显示学分查询学分,修改学分,删除学分,统计学分。
二、程序功能描述:
(描述基本程序中每个函数的功能,给处各函数流程图)
1、
登记单流程图
2、
显示学分流程图
3、
查询学分流程图
4、
修改信息流程图
5、
删除信息流程图
6、
统计信息流程图
三、设计方案介绍
(基本思想函数调用的思路介绍)
1、主流程图
2、界面设计
(界面设计,函数的定义,功能设计、,罗列出所有需要解决的问题
函数调用问题,循环问题,查找问题,修改问题,查询问题,删除问题,比较问题。
3、变量定义
序号 变量名 变量性质(局部/全局) 功能 作用范围
1 typedef 全局 定义结构体类型 整体
2 Int 全局 定义五门课类型 整体
... Char 全局 定义学号班级姓名类型 整体
5、函数调用的类型
四、测试与分析
(简要介绍测试的作用及意义)
测试可以知道所编写的程序是否可行,通过实际的测试可以找出程序是否符合现实。通过测试和反复修改可以使程序更加人性化。
(一)测试列表
(以表格的形式给出,不少于10个)
测试数据或执行操作 执行结果 是否正确 测试人签名
调用主菜单 显示了主菜单 正确
选择主菜单里的1 请输入学生学生信息…. 正确
输出 有重复有乱码 否
查询 无 否
修改 按学号修改……. 是
按学号查询 显示了该信息 是
按班级查询 只显示里一名同学的信息 否
按学好删除 删除成功 是
须补考基础课的 所有学生信息都显示 否
可升学学生 显示了该显示的信息 是
(二)测试结果分析
(根据以下表格,如实填写并签名)
bug个数 错误类型 错误原因分析 是否修改 设计者签名
1 与count声名中的类型不匹配 少了void count() 是
2 错误 jia.c 19: 表达式语法错在 main 函数中 Scanf中少了&s 是
4 错误 jia.c 31: do语句中必须有while关键字在 main 函数中 没写while 是
5 错误 jia.c 30: 未定义的符号's'在 main 函数中 上面没int I; 是
6 错误 1.c 335: 表达式语法错在 count 函数中 Switch() 括号里没有变量 是
7
五、实训总结
(总结实训过程中的所使用的知识和已实现的功能,总结自己掌握理论知识和动手能力的程度,提出自己的不足之处及改进措施)
通过这一周的实训。我们充分运用了所学的东西编出了解决实际问题的程序。我们运用了函数的调用,循环,定义,比较,查找,删除等知识。通过实际动手,我更加深入的了解了课本上的知识。同时提高了我的动手能力。
实训中我找到了我许多的不足,以前我遇到不董的就会直接去问别人,不独自思考。试训中我学会了独自思考和团队合作。虽然我在编程当中遇到许多问题,但经过独自思考和学习解决了问题。最后编出了管理程序。
C语言学生学分管理程序代码
typedef struct student
char num[11],name[7],class[10];
int jichu,renwen,xuanxiu,zhuanye,shiyan;
STU;
STU st[37];
static int n;
void menu();
void input();
void print();
void query();
void modi();
void del();
void count();
main()
int s;
do
menu();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
case 0:break;
case 1:input();break;
case 2:print();break;
case 3:query();break;
case 4:modi();break;
case 5:del();break;
case 6:count();break;
default:printf("选择无效!");
while(s!=0);
getch();
void menu()
clrscr();
printf("\t\t\t****************************\n");
printf("\t\t\t********欢迎您的使用********\n");
printf("\t\t\t******学生学分管理程序******\n");
printf("\t\t\t*** 1-登记学生学分 ***\n");
printf("\t\t\t*** 2-显示学生学分 ***\n");
printf("\t\t\t*** 3-查询学生学分 ***\n");
printf("\t\t\t*** 4-修改学生学分 ***\n");
printf("\t\t\t*** 5-删除学生学分 ***\n");
printf("\t\t\t*** 6-统计学生学分 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t****************************\n");
void input()
do
printf("请输入学生信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[n].num,st[n].name,st[n].class,&st[n].jichu,&st[n].zhuanye,&st[n].xuanxiu,&st[n].renwen,&st[n].shiyan);
n++;
printf("是否继续输入?(n-退出,任意键继续):");
while(getche()!='n');
void print()
int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
void menu1()
clrscr();
printf("\t\t\t*****************************\n");
printf("\t\t\t***********查询模块**********\n");
printf("\t\t\t*** 1-按学号查询 ***\n");
printf("\t\t\t*** 2-按姓名查询 ***\n");
printf("\t\t\t*** 3-按班级查询 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
void query1()
char sn[11];
int i;
printf("请输入要查询的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].num)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\按任意键继续");
break;
else printf("\n对不起!没有该学号,任意键继续");
getch();
void query2()
char sn[7];
int i;
printf("请输入要查询的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].name)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\按任意键继续");
break;
else printf("\n对不起!没有该姓名,任意键继续");
getch();
void query3()
char sn[10];
int i;
printf("请输入要查询的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].class)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\按任意键继续");
break;
else printf("\n对不起!没有该班,任意键继续");
getch();
void query()
int s;
do
menu1();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
case 0:break;
case 1:query1();break;
case 2:query2();break;
case 3:query3();break;
default:printf("选择无效!");
while(s!=0);
getch();
void menu2()
clrscr();
printf("\t\t\t*****************************\n");
printf("\t\t\t***********修改模块**********\n");
printf("\t\t\t*** 1-按学号修改 ***\n");
printf("\t\t\t*** 2-按姓名修改 ***\n");
printf("\t\t\t*** 3-按班级修改 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
void modi1()
char sn[11];
int i;
printf("请输入要修改学分学生的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].num)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i].num,st[i].name,st[i].class,&st[i].jichu,&st[i].zhuanye,&st[i].xuanxiu,&st[i].renwen,&st[i].shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
while(getche()!='n');
break;
getch();
void modi2()
char sn[7];
int i;
printf("请输入要修改学分学生的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].name)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i].num,st[i].name,st[i].class,&st[i].jichu,&st[i].zhuanye,&st[i].xuanxiu,&st[i].renwen,&st[i].shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
while(getche()!='n');
break;
getch();
void modi3()
char sn[10];
int i;
printf("请输入要修改学分学生的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].class)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i].num,st[i].name,st[i].class,&st[i].jichu,&st[i].zhuanye,&st[i].xuanxiu,&st[i].renwen,&st[i].shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
while(getche()!='n');
break;
getch();
void modi()
int s;
do
menu2();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
case 0:break;
case 1:modi1();break;
case 2:modi2();break;
case 3:modi3();break;
default:printf("选择无效!");
while(s!=0);
getch();
void menu3()
clrscr();
printf("\t\t\t*****************************\n");
printf("\t\t\t***********删除模块**********\n");
printf("\t\t\t*** 1-按学号删除 ***\n");
printf("\t\t\t*** 2-按姓名删除 ***\n");
printf("\t\t\t*** 3-按班级删除 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
void del1()
char sn[11];
int i,j;
printf("请输入要删除学分学生的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].num)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
else printf("\n对不起!没有该学号,任意键继续");
void del2()
char sn[7];
int i,j;
printf("请输入要删除学分学生的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].name)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
else printf("\n对不起!没有该学号,任意键继续");
void del3()
char sn[10];
int i,j;
printf("请输入要删除学分学生的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].class)==0)
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
else printf("\n对不起!没有该学号,任意键继续");
void del()
int s;
do
menu3();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
case 0:break;
case 1:del1();break;
case 2:del2();break;
case 3:del3();break;
default:printf("选择无效!");
while(s!=0);
getch();
void menu4()
clrscr();
printf("\t\t\t*****************************\n");
printf("\t\t\t***********统计模块**********\n");
printf("\t\t\t*** 1- 可升学的学生 ***\n");
printf("\t\t\t*** 2-需补考基础课的 ***\n");
printf("\t\t\t*** 3-需补考专业课的 ***\n");
printf("\t\t\t*** 4-需补考选修课的 ***\n");
printf("\t\t\t*** 5-需补考人文课的 ***\n");
printf("\t\t\t*** 6-需补考实验课的 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
void count1()
int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye>=60&st[i].xuanxiu>=60&st[i].renwen>=60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
void count2()
int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu<60&st[i].zhuanye>=60&st[i].xuanxiu>=60&st[i].renwen>=60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
void count3()
int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye<60&st[i].xuanxiu>=60&st[i].renwen>=60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
void count4()
int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye>=60&st[i].xuanxiu<60&st[i].renwen>=60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
void count5()
int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye>=60&st[i].xuanxiu>=60&st[i].renwen<60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
void count6()
int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye>=60&st[i].xuanxiu>=60&st[i].renwen>=60&st[i].shiyan<60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
void count()
int s;
do
menu4();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
case 0:break;
case 1:count1();break;
case 2:count2();break;
case 3:count3();break;
case 4:count4();break;
case 5:count5();break;
case 6:count6();break;
default:printf("选择无效!");
while(s!=0);
getch();
是否可以解决您的问题? 参考技术A //自定义控件, 然后在工具箱拖过来用 再把BackColor 设置为Transparent
public partial class TransparentListBox : ListBox
public TransparentListBox()
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
protected override void OnSelectedIndexChanged(EventArgs e)
this.Invalidate();
base.OnSelectedIndexChanged(e);
protected override void OnPaint(PaintEventArgs e)
if (this.Focused && this.SelectedItem != null)
Rectangle itemRect = this.GetItemRectangle(this.SelectedIndex);
e.Graphics.FillRectangle(Brushes.Green, itemRect);
for (int i = 0; i < Items.Count; i++)
e.Graphics.DrawString(this.GetItemText(Items[i]), this.Font, new SolidBrush(this.ForeColor), this.GetItemRectangle(i));
base.OnPaint(e);
追答
?
参考技术B if(strcmp(charnum[i][15],char a[15])==0)&&(strcmp(passcode[i][100],b[100])==0))
strcmp调用的时候只要把字符串名传进去。
if (strcmp(num[i], a) == 0 && strcmp(passcode[i], b) == 0)追问
fscanf(fp,"%s,%s",&num[i][15],&passcode[i][100]);
这一句呢?
students.txt中的文件录入格式是 学号,密码 为了省事儿全都是数字,这么提取对不对呀?就我这个程序而言,信息提取的对吗?
输入也是只要传地址, 应为字符串名字就是他的地址,所以应该像下面这样
fscanf(fp,"%s,%s",num[i], passcode[i]);
另外一个问题,输入的时候“%s,%s",格式控制这里这个分隔符要注意,如果你存储的时候是以','(逗号)隔开的,输入时就要加上逗号"%s,%s",如果存储时是空格隔开的,不要把逗号加上去,要用”%s%s"
num,passcode -> "%s,%s"
num passcode -> “%s%s"
以上是关于C语言课程设计的主要内容,如果未能解决你的问题,请参考以下文章